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


USB攝像頭與網絡攝像頭相比,可選擇范圍廣、種類多、成本低,但是實際使用時需要通過rtsp流來訪問,起到直播的效果,因此在攝像頭采集終端上構建rtsp流媒體服務器,將USB攝像頭數據轉化為rtsp,可以多個客戶端訪問。

ffserver

關鍵概念

  • ffserver,負責響應客戶端的流媒體請求,把流媒體數據發送給客戶端。
  • ffserver.conf,ffserver啟動時的配置文件,在這個文件中主要是對網絡協議,緩存文件feed1.ffm和要發送的流媒體文件的格式參數做具體的設定。
  • feed1.ffm,可以看成是一個流媒體數據的緩存文件,ffserver啟動后會自動生成。ffmpeg把轉碼好的數據發送給ffserver,如果沒有客戶端連接請求,ffserver把數據緩存到該文件中。
  • ffmpeg,負責媒體文件的轉碼工作,把你服務器上的源媒體文件轉換成要發送出去的流媒體文件。


大致流程為:通過ffmpeg將usb攝像頭數據推送到ffserver服務器,終端設備通過rtsp地址訪問,達到遠程訪問的效果。

安裝與配置

sudo apt install ffmpeg libx264-dev

在終端中打開配置文件:

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流

ffmpeg -f v4l2 -i /dev/video1  -s 640x480 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm

注意:其中/dev/video1表示USB攝像頭對應的名稱,要根據自己的設備情況對應更改。

客戶端讀取

在另外一台終端設備上,如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

其中:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM