在NanoPi-NEO上用 ffserver+ffmpeg 實現USB攝像頭視頻監控

    關於ffmpeg+ffserver搭建流媒體服務器的文章網上有很多,視頻編碼基本上都是軟編碼來實現的。NanoPi-NEO的SoC裏集成了Cedrus 視頻硬件編碼器,利用Cedrus對USB攝像頭的數據實現硬件H264編碼,可以降低CPU的佔用率並大大提高編碼速度。
      具體步驟如下:
1.  在當前目錄下(/home/fa)編制一個ffserver配置文件myffserver.conf文件,內容如下:
#-----------------------------myffserver.conf ------------------------
HTTPPort 8099                       #綁定端口號
HTTPBindAddress 0.0.0.0             #綁定ip
MaxHTTPConnections 1000         #最大HTTP連接數
MaxClients 1000                 #最大客戶端連接數
MaxBandwidth 50000               #最大帶寬
CustomLog -                     #日誌文件,“-”爲直接打印

<Feed feed1.ffm>
   File /tmp/feed1.ffm
   FileMaxSize 20M
   ACL allow 127.0.0.1
</Feed>

<Stream webcam.flv>
     Feed feed1.ffm
     Format flv
     VideoFrameRate 15
     VideoBufferSize 1000
     VideoSize 480x320
     VideoBitRate 30000
     VideoGopSize 12
     AVOptionVideo flags +global_header
     NoAudio
</Stream>

以上參數可做調整,注意VideoSize和VideoBufferSize等會有關聯。

2. 在/home/fa/下建立一個管道文件:  mkfifo -m 755 vfifo

3.  編輯一個webcam.sh腳本,內容如下:
ffserver -f /home/fa/myffserver.conf  &  ffmpeg  -i /home/fa/vfifo "http://127.0.0.1:8099/feed1.ffm" &
ffmpeg -re -f v4l2 -i /dev/video0 -pix_fmt nv12 -c:v cedrus264 -an -f flv /home/fa/vfifo

4.  插入usb攝像頭,運行webcam.sh 即可開啓ffserver的攝像頭流服務。在VLC或ffplay等流播放軟件

 中輸入 http://IP:8099/webcam.flv可以播放監控畫面.  

5.  注意:1。  用vlc播放有10s左右延時.  據稱用ffplay觀看時延會小很多。
                 2。 啓動webcam.sh後要等一會,直到vfifio緩衝結束,feed開始的時候再連接網絡播放器,不然程序會退出。


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