USB攝像頭與網絡攝像頭相比,可選擇範圍廣、種類多、成本低,可是實際使用時須要經過rtsp流來訪問,起到直播的效果,所以在攝像頭採集終端上構建rtsp流媒體服務器,將USB攝像頭數據轉化爲rtsp,能夠多個客戶端訪問。html
ffserver
關鍵概念
- ffserver,負責響應客戶端的流媒體請求,把流媒體數據發送給客戶端。
- ffserver.conf,ffserver啓動時的配置文件,在這個文件中主要是對網絡協議,緩存文件feed1.ffm和要發送的流媒體文件的格式參數作具體的設定。
- feed1.ffm,能夠當作是一個流媒體數據的緩存文件,ffserver啓動後會自動生成。ffmpeg把轉碼好的數據發送給ffserver,若是沒有客戶端鏈接請求,ffserver把數據緩存到該文件中。
- ffmpeg,負責媒體文件的轉碼工做,把你服務器上的源媒體文件轉換成要發送出去的流媒體文件。
大體流程爲:經過ffmpeg將usb攝像頭數據推送到ffserver服務器,終端設備經過rtsp地址訪問,達到遠程訪問的效果。web
安裝與配置
sudo apt install ffmpeg libx264-dev
在終端中打開配置文件:windows
sudo gedit /etc/ffserver.conf
而後修改成如下內容:緩存
HTTPPort 8090 #綁定端口號 HTTPBindAddress 0.0.0.0 #綁定IP MaxHTTPConnections 2000 #最大HTTP鏈接數 MaxClients 1000 #最大客戶端鏈接數 MaxBandwidth 1000 #最大帶寬 CustomLog - #日誌文件,- 爲直接打印 <Feed feed1.ffm> #feed:每個輸入都創建一個feed File /tmp/feed1.ffm #feed緩存文件位置和名稱 FileMaxSize 10M #緩存文件最大值 ACL allow 127.0.0.1 #容許寫入feed的IP ACL allow 192.168.0.0 192.168.255.255 #容許寫入feed的IP範圍 </Feed> RTSPPort 8554 #rtsp端口號 RTSPBindAddress 0.0.0.0 #rtsp IP地址 <Stream live1.h264> # Format rtp #視頻流的格式 Feed feed1.ffm #視頻流的種子來源 VideoCodec libx264 # VideoFrameRate 24 #視頻幀率 VideoBitRate 128 #視頻比特率 VideoBufferSize 100 #視頻緩衝區大小 VideoSize 640x480 #視頻幀大小 VideoQMin 1 # VideoQMax 31 # NoAudio #無音頻 AVPresetVideo default AVPresetVideo baseline AVOptionVideo flags +global_header ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 </Stream> <Stream stat.html> Format status ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 </Stream> <Redirect index.html> URL http://www.ffmpeg.org/ </Redirect>
關於ffserver.conf的具體介紹,可參考官方給的配置文件說明,若是有多個USB攝像頭,參考feed1的寫法,再寫一個緩存文件便可。服務器
啓動服務與轉發流
啓動ffserver服務終端直接運行:網絡
ffserver
轉發rtsp流ide
ffmpeg -f v4l2 -i /dev/video1 -s 640x480 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm
注意:其中/dev/video1表示USB攝像頭對應的名稱,要根據本身的設備狀況對應更改。spa
客戶端讀取
在另一臺終端設備上,如windows的電腦上,用VLC軟件,打開網絡串流,輸入以下rtsp地址,便可打開攝像頭:日誌
rtsp://192.168.xx.xx:8554/live1.h264
vlc
安裝
sudo apt-get install vlc
轉流
cvlc -vvv v4l2:///dev/video1 --sout '#transcode{vcodec=h264,vb=800,acodec=mp4a}:rtp{sdp=rtsp://:8554/live.ts}' -I dummy
其中:code
v4l2:// - Video4Linux is the interface to webcams on Linux /dev/video1 - device number assigned to webcam by Linux vcodec=h264 video codec vb=800 - 800 kb/s video bit rate acodec=mp4a sdp=rtsp://:8554/ - URL/port advertised by RTSP
客戶端讀取
一樣的,可在windows電腦上的VLC軟件中,輸入以下rtsp地址打開攝像頭,注意將IP地址改成服務器的地址
rtsp://192.168.xx.xx:8554/live.ts