在Windows下用Nginx的rtmp模塊搭建直播

很久很久沒有更新了,對不住大家了。

我一直都是一人獨立做開發,一直在做一個微信小程序。

我想做過獨立開發的人都知道,因為沒有團隊配合,所有的功能,數據庫等,除了調研以外,都是拍腦袋想出來的。

基本是邊想邊做邊改,不行就推翻重來。

其中滋味那是一個酸爽能夠形容的。。。。。。。

牢騷發完,開始說今天的主要內容。

由於疫情沒有完全結束,各大實體店主都轉戰直播。

這就是寫這篇文章的緣由。

先給大家看一下我編譯好的Nginx模塊


在Windows下用Nginx的rtmp模塊搭建直播

編譯的準備工作

windows系統Win7,Win10,WinXP都是可以的

還需要了解一點點Linux命令,基本也就是ls(列目錄),cd(跟windows一樣,進出目錄),vim(i:進入編輯模式,esc退出,:q退出,:wq保存退出,:q!強行退出)

準備軟件:

0、安裝Visual Studio 2005、2008、2010、2013、2015、2017,隨便選一個版本安裝就行。

我這裡安裝的是2015

1、MinGW - Minimalist GNU for Windows (https://osdn.net/frs/redir.php?m=tuna&f=mingw%2F68260%2Fmingw-get-setup.exe)

下載地址是0.63的bata版。


在Windows下用Nginx的rtmp模塊搭建直播

點擊左側列表Baseic Setup,在中部的插件中照圖選擇就好,然後點擊Installation菜單中的Apply Changes安裝插件,安裝過程是比較漫長的,可以用這個時間做其他事。

查看環境變量中有沒有MinGW的相關設置。如果麼有的話,手動添加MinGW安裝目錄下的bin和msys\\1.0\\bin到PATH中。

2、下載安裝Mercurial

進入官網https://www.mercurial-scm.org/右側有download圖標,點擊下面的windows

3、下載安裝strawberryperl

進入官網http://strawberryperl.com/右側下載適合你係統位數的版本。

4、下載安裝nasm

進入官網https://www.nasm.us/中部就有下載連接,現在的版本是2.14.02

5、下載Nginx源碼包

官網下載nginx.org或者用hg clone http://hg.nginx.org/nginx下載

hg下載步驟

打開cmd,cd到一個你知道的目錄,然後錄入hg clone http://hg.nginx.org/nginx nginx-win32-src就下載到了


在Windows下用Nginx的rtmp模塊搭建直播

5、下載模塊:

nginx-rtmp-module(1.2.1)

https://github.com/arut/nginx-rtmp-module/releases

openssl(1.1.1d)

https://github.com/openssl/openssl/releases

zlib(1.2.11)

http://www.zlib.net/zlib1211.zip

pcre(8.44)

https://ftp.pcre.org/pub/pcre/pcre-8.44.zip

6、在Nginx源碼目錄中創建一個lib文件夾,用來存放模塊。當然,你也可以放在其他任意一個位置,只要在配置文件中一一對應就可以,在後面的配置文件中你可以看到如何配置模塊。


在Windows下用Nginx的rtmp模塊搭建直播


7、創建編譯bat文件

在Nginx源碼包的目錄中創建一個bat文件,文件名隨意,自己記得就好。我這裡是c.bat。

將下面的代碼粘貼進去

<code>auto/configure \\
--with-cc=cl \\

--with-cc-opt=-DFD_SETSIZE=1024 \\
--builddir=objs \\ #這裡是定義生成文件的目錄
--with-debug \\
--prefix= \\
--conf-path=conf/nginx.conf \\ #這裡定義生成conf配置文件的位置,以此類推就
--pid-path=nginx.pid \\#這裡是Nginx運行時生成記錄pid值的臨時文件,以前是在logs下,我改在了根目錄中
--http-log-path=logs/access.log \\#以此類推,這些主要是配置哪些目錄裡放些什麼文件。
--error-log-path=logs/error.log \\
--sbin-path=nginx.exe \\
--http-client-body-temp-path=temp/client_body_temp \\
--http-proxy-temp-path=temp/proxy_temp \\
--http-fastcgi-temp-path=temp/fastcgi_temp \\
--http-scgi-temp-path=temp/scgi_temp \\
--http-uwsgi-temp-path=temp/uwsgi_temp \\
--with-pcre=lib/pcre-8.44 \\
--with-zlib=lib/zlib-1.2.11 \\
--with-http_v2_module \\
--with-http_realip_module \\
--with-http_addition_module \\
--with-http_sub_module \\
--with-http_dav_module \\
--with-http_stub_status_module \\
--with-http_flv_module \\
--with-http_mp4_module \\
--with-http_gunzip_module \\
--with-http_gzip_static_module \\
--with-http_auth_request_module \\
--with-http_random_index_module \\
--with-http_secure_link_module \\
--with-http_slice_module \\
--with-mail \\
--with-stream \\
--with-openssl=lib/openssl-1.1.1d \\
--with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' \\
--with-http_ssl_module \\
--with-mail_ssl_module \\
--with-stream_ssl_module \\
--with-select_module \\
--add-module=lib/nginx-rtmp-module-1.2.1 \\/<code>

在MinGW安裝目錄中的mysbs\\1.0\\,找到msys.bat,雙擊運行會打開一個cmd窗口。


在Windows下用Nginx的rtmp模塊搭建直播

進入你設定的nginx源碼目錄,我的是在c:/aaa/nginx,運行c.bat生成編譯文件。


在Windows下用Nginx的rtmp模塊搭建直播

這個過程可能會要幾分鐘,最後會顯示類似上面的結果。

到這裡,第一步的編譯過程結束。

9、修改錯誤

打開你nginx源碼目錄中的auto/lib/openssl目錄,在這個目錄中有個makefile.msvc文件,用記事本打開,找到ms\\do_ms修改為ms\\do_nasm

還有記得檢查nasm是否 已經添加到環境變量中的path中。

不然生成時會發生錯誤。

還有,編譯時有些警告會認為是錯誤,咱們降低錯誤級別,讓它順利編譯還需要修改一個文件

打開你的nginx源碼目錄中的auto\\cc文件夾下有一個msvc文件,用記事本啥的打開,搜索w4,就只有一個,修改為w3就好。


在Windows下用Nginx的rtmp模塊搭建直播

千萬記得,只改這個單獨的,有一個類似的是ms\\do_ms.bat,這個不需要修改,這個文件是UNIX格式,所以都在一行中顯示的,將滾動條拖到中部,就能看到ms\\do_ms,修改就好。

10、windows Visual Studio 2015 編譯windows可執行的文件

點擊開始找到Visual Studio 2015/Visual Studio Toosl/VS2015 開發人員命令提示,點擊運行,又會彈出一個cmd命令行窗口。

cd到你nginx的安裝目錄中,輸入 nmake /f objs\\MakeFile,回車後會等很久,你可以乾點別的什麼。


在Windows下用Nginx的rtmp模塊搭建直播

如果在最後一步,搜索的時候發生錯誤不要緊,那是因為你沒安裝windows版的sed。你可以在某度中搜索windows sed,安裝就好。

到這裡就生成完畢。

打開nginx源碼目錄中的objs文件夾,會看到nginx.exe就在其中。

將這個文件複製到其他目錄中,新建logs、temp文件夾,然後將源碼目錄中的conf、contrib文件夾和docs下的html一併拷貝到新的文件夾就哦可拉。


在Windows下用Nginx的rtmp模塊搭建直播

現在你的nginx支持rtmp了

下面配置nginx

用文本編輯器打開conf中的nginx.conf文件

在文件底部添加代碼

<code>rtmp { # 配置RTMP模塊
server { # 服務器
listen 1935; # 監聽端口, 默認為1935
chunk_size 4000; # 數據塊大小 4000
application live { # 應用名稱, 可理解為直播房間的名稱
live on; # 直播 [on]開啟
}
application hls {
live on;
hls on;
hls_path html/hls;#視頻流存放地址
hls_fragment 5s;
hls_playlist_length 15s;
hls_continuous on; #連續模式。
hls_cleanup on; #對多餘的切片進行刪除。
hls_nested on; #嵌套模式。
}
}
}/<code>

然後啟動nginx你就可以推流和拉流了。。


我這裡有配置好的,有需要的朋友留言,留下郵箱,我發給你。


下一次我們來講http_image_filter_module模塊。

這是nginx自帶的模塊,需要添加gd庫。


分享到:


相關文章: