在NanoPi-NEO上用 ffserver+ffmpeg 实现USB摄像头视频监控

来源:互联网 发布:vmware虚拟机性能优化 编辑:程序博客网 时间:2024/05/16 07:10
    关于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开始的时候再连接网络播放器,不然程序会退出。


原创粉丝点击