linux下使用nginx+nginx-rtmp-module搭建流媒體服務器,傳送即時影像

 

1:前言

公司最近想做利用網絡來傳輸視頻流的影響系統,然後我又開始鼓搗不太熟悉的linux系統,好在網上關於這方面的資源挺多,按照相關的設置以及方法能大部分完成,其他附上我搭建時遇到的一些小問題的解決辦法。


2:搭建的環境:

(1):linux系統:Ubuntu 16.04    (2):VM box虛擬機  (3):電腦自帶的攝像頭或者USB攝像頭


3:搭建nginx+nginx-rtmp-module服務器

(1):選用nginx和nginx-rtmp-module作爲對外的服務器,下面是安裝的命令:

sudo apt-get update

sudo apt-get -y install nginx

sudo apt-get -y remove nginx

sudo apt-get clean 

注:自動安裝nginx的相關套件,並設定好系統的環境,移除nginx套件之後,清空/etc/nginx/下面的設定檔:sudo rm -rf /etc/nginx/*


(2):安裝編譯的套件:

sudo apt-get install -y curl build-essential libpcre3-dev libpcre++-dev zlib1g-dev libcurl4-openssl-dev libssl-dev 


(3):建立網頁目錄:

sudo mkdir -p /var/wwx


(4):建立編譯用的目錄:

sudo mkdir -p ~/nginx_src

cd ~/nginx_src


(5):下載nginx-rtmp-module的原始包:

git clone http://github.com/arut/nginx-rtmp-module.git

(6):下載nginx的原始包(建議直接從官網下載):

注:nginx官網:http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.13.6.tar.gz

tar -zxvf  nginx-1.13.6.tar.gz


(7):進入解壓縮之後的目錄,設定編譯參數:

cd nginx-1.13.6

./configure --prefix=/var/wwx --sbin-path=/usr/sbin/nginx --conf-psth=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log 

--http-log-path=/var/log/nginx/access.log --with-http_ssl_module --without-http_proxy_module --add-module=/home/cqz123/nginx_src/nginx-rtmp-module


(8):編譯並安裝nginx:

make

sudo make install


(9):測試nginx是否安裝完成:

nginx -v

注:正常的話會顯示nginx的版本


(10):編輯/etc/nginx/nginx.conf設定檔,添加相關設定:

	rtmp{
     	    server{
               listen 1935;
               ping 30s;
               notify_method  get;
               application rtmp{
                 live on;
            }
        }
     }
	注意:此部分代碼要添加在http{}外部,不然發送串流
(11):啓動nginx系統服務,沒錯誤就代表成功了:

開啓nginx:sudo service nginx start

關閉nginx:sudo service nginx stop

4:安裝Strobe Media Playback

(1):下載Strobe Media Playback

mkdir -p ~/strobe_src

cd ~/strobe_src

	wget http://downloads.sourceforge.net/project/smp.adobe/Strobe%20Media%20Playback%201.6%20Release%20%28source%20and%20binaries%29/StrobeMediaPlayback_1.6.328-full.zip

(2):解壓縮後,將最新版複製到/var/wwx/html/strobe目錄下:

unzip StrobeMediaPlayback_1.6.328-full.zip

sudo cp -r for\ Flash\10.1 /var/wwx/html/strobe


(3):建立indel.html,編輯/var/wwx/html/index.html,將內容改爲:

	<!DOCTYPE html>
	<html>
	<head>
	<title>Live Streaming</title>

	<!-- strobe -->
	<script type="text/javascript" src="strobe/lib/swfobject.js"></script>
	<script type="text/javascript">
  		var parameters = {  
    		src: "rtmp://ip地址/rtmp/live",  
     		autoPlay: false,  
     		controlBarAutoHide: false,  
     		playButtonOverlay: true,  
     		showVideoInfoOverlayOnStartUp: true,  
     		optimizeBuffering : false,  
     		initialBufferTime : 0.1,  
     		expandedBufferTime : 0.1,  
     		minContinuousPlayback : 0.1,  
     		poster: "images/poster.png"  
  	};  
  	swfobject.embedSWF(
    		"strobe/StrobeMediaPlayback.swf"
    		, "StrobeMediaPlayback"
    		, 1024
    		, 768
    		, "10.1.0"
    		, "strobe/expressInstall.swf"
    		, parameters
    		, {
    			allowFullScreen: "true"
    		}
   		 , {
     		 name: "StrobeMediaPlayback"
    	} );
	</script>

	</head>
	<body>
	<div id="StrobeMediaPlayback"></div>
	</body>
	</html>

注:其中ip地址代表你虛擬機中ip的地址



5:使用avconv製作影像串流

(1):安裝libav-tools套件:

sudo apt-get install libav-tools


(2):在虛擬機中使用主機攝像頭:

a:在命令行輸入:cd /dev/ 目錄下,然後ls後出現有video0或者video1等文件夾,說明你可以直接進行(3)步驟。

b:若不行,則可能是相應的USB驅動沒有裝好,要使用USB,就需要安裝擴展Oracle_VM_VirtualBox_Extension_Pack:

步驟:

1:下載Oracle_VM_VirtualBox_Extension_Pack,網址:http://download.virtualbox.org/virtualbox/

  選擇和你虛擬機相對應的版本,如Oracle_VM_VirtualBox_Extension_Pack-5.0.20-106931.vbox-extpack

2:安裝到virtualbox, 在virtualbox管理器->管理->全局設定->擴展,並在右上角的添加擴展,並勾選上。

請輸入圖片描述 


3:添加usbcam, 在virtualbox管理器->設置->USB設備->添加usbcam

請輸入圖片描述

4:重啓虛擬機和virtualbox:

sudo reboot

5:啓動虛擬機,點設備,下拉列表就會增加攝像頭一欄,選擇對應的攝像頭就可以。

請輸入圖片描述

6:測試攝像頭,安裝cheese:

sudo apt-get install cheese

7:打開cheese,若能看見影像則說明成功。


(3):連接上USB攝像頭之後,執行:

avconv -f video4linux2 -r 24 -i  /dev/video0 -f flv rtmp://localhost:1935/rtmp/live

(4):在虛擬機的瀏覽器中攝入http://localhost或者http://ip地址  就能看到影像串流了,這是我的測試畫面:



因爲USB攝像頭比較爛,出來的畫面不清楚,且我使用的是VLC播放器,有興趣的可以百度下vlc安裝方法,在打開網絡串流裏輸入



6:結束語:

因爲不熟悉linux系統,架設好nginx到能出現畫面用了3天的時間,其中出現了好多奇怪的問題,有些問題按照網上的辦法也沒有解決,但是按照我這套流程走下來應該是不會再有問題了。另一個,使用avconf是使用的軟解的方式來解析視頻流,有一定的延遲,另一種方式是利用芯片本身硬解,其中涉及到H264解碼的問題,不知道是否因爲電腦是雙顯卡的緣故,這一塊老是報錯誤管道的問題,也找了很多方法也沒能解決。感興趣的可以找下。


參考鏈接:https://blog.gtwang.org/iot/raspberry-pi-nginx-rtmp-server-live-streaming/

            http://www.ncnynl.com/archives/201610/941.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章