搭建USB攝像頭轉RTSP服務器的多種方法

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
相關文章
相關標籤/搜索