天天看點

在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開始的時候再連接配接網絡播放器,不然程式會退出。

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