1. 程式人生 > >(九) nginx rtmp流媒體伺服器搭建

(九) nginx rtmp流媒體伺服器搭建

nginx 反向代理伺服器搭建(Ubuntu中):(除了nginx搭建流媒體伺服器(模組化配置),常用的還有red5(java配置))  nginx官網:http://nginx.org/
	nginx中有很多模組,rtmp-module
	ffplay "rtmp://xx.xx.xx.xx:1935/live/hj live=1"    // ffplay指令播放rtmp流
	
	1.先下載安裝  nginx 和 nginx-rtmp 編譯依賴工具,下載的nginx是c原始碼,需要編譯,所以需要先下載編譯nginx的工具
		sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
	2. 建立一個工作目錄,並切換到工作目錄
		mkdir /home/hankin/Desktop/mpeg/nginx
		cd /home/hankin/Desktop/mpeg/nginx
	3. 下載 nginx 和 nginx-rtmp原始碼(wget是一個從網路上自動下載檔案的自由工具)
		wget http://nginx.org/download/nginx-1.14.0.tar.gz
		wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
	4. 安裝unzip工具,解壓下載的安裝包
		sudo apt-get install unzip
	5.解壓 nginx 和 nginx-rtmp安裝包
		tar -zxvf nginx-1.14.0.tar.gz
			-zxvf分別是四個引數
			x : 從 tar 包中把檔案提取出來
			z : 表示 tar 包是被 gzip 壓縮過的,所以解壓時需要用 gunzip 解壓
			v : 顯示詳細資訊
			f xxx.tar.gz :  指定被處理的檔案是 xxx.tar.gz
		unzip master.zip
	6. 切換到 nginx-目錄
		cd nginx-1.14.0
	7.新增 nginx-rtmp 模板編譯到 nginx , 如果出現 the HTTP gzip module requires the zlib library 錯誤,那麼 sudo apt-get install zlib1g zlib1g.dev 即可
		./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
	8.編譯安裝 
		make   // 編譯
		sudo make install   // nginx服務預設是安裝在 /usr/local/nginx 目錄下,埠預設 listen 80 ,參看 /usr/local/nginx/conf/nginx.conf 配置,可以直接修改該檔案,修改nginx服務的埠(我改成了8082)
	9. 安裝 nginx init 指令碼 (https://github.com/JasonGiedymin/nginx-init-ubuntu/blob/master/nginx)
		sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx   // 開機啟動執行開啟nginx服務的指令碼,-O 表示下載的指令碼儲存到 /etc/init.d/nginx 檔案中
			也可以手動建立 /etc/init.d/nginx 指令碼檔案(nginx_init.sh),但是注意windows與linux編碼問題,不注意的話,啟動nginx服務的時候可能會報 Exec format error
		sudo chmod +x /etc/init.d/nginx   // 新增執行許可權
		sudo update-rc.d nginx defaults   // 開機啟動,執行 /etc/init.d/nginx 指令碼檔案(此指令可以在其他工作目錄下執行)
	10. 啟動和停止nginx 服務,生成配置檔案
		sudo service nginx start   // systemctl start nginx.service  高版本的Linux系統,換成systemctl命令 , 在瀏覽器 192.168.1.103:8082/ 即可看到nginx伺服器首頁 /usr/local/nginx/html/index.html
		sudo service nginx stop    // status 檢視狀態

	11. 安裝 FFmpeg   // 推流到nginx伺服器後,需要在伺服器解碼,這裡用ffmpeg
		tar -xvf ffmpeg-4.0.2.tar.bz2   // 重新解壓一份ffmpeg,然後複製到 /home/hankin/Desktop/mpeg/nginx 目錄下
		cd ffmpeg-4.0.2
		./configure --disable-x86asm   // 檢測下配置是否正確,也可以用 --disable-yasm
		make   // 編譯 ffmpeg
		sudo make install   // 安裝
		ffmpeg -v   // 檢視版本資訊
	12. 配置 nginx-rtmp 伺服器
		開啟 /usr/local/nginx/conf/nginx.conf 在末尾新增如下 配置 rtmp 推流:
			rtmp {
				server {
					listen 1935;
					chunk_size 4096;

					application live {
							live on;
							record off;
							# 推流為 live ,$name 表示房間名任意,視訊使用 libx264 編碼,位元速率 350K ,視訊尺寸 640x360 ,視訊格式 flv ,音訊採用 aac 編碼,位元速率為 56K
							exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
					}
					application live360p {
							live on;
							record off;
					}
				}
			}
	13. 儲存上面配置檔案,然後重新啟動nginx服務
		sudo service nginx restart
	14. 如果你使用了防火牆,請允許埠 tcp 1935 
		telnet 192.168.1.103 1935 測試 tcp 的 1935 埠是否開啟(Linux、windows下都可以) 出現 Connected to 192.168.1.103 表示已連線,按 ctrl+] 進入telnet命令列模式,quit退出
	15.伺服器配置測試播放器:
		將 flash_player_nginx 內容複製到目錄:/usr/local/nginx/html/,然後修改 index.html 的播放地址 src:"rtmp://192.168.1.103:1935/live/hj"
	16.用ffplay播放RTMP直播流:
		ffplay "rtmp://xx.xx.xx.xx:1935/live/hj live=1"