ffmpeg--使用命令+EasyDarwin推流笔记本摄像头

        手头没有网络摄像头,采用ffmpeg+EasyDarwin+笔记本摄像头模拟一个网络摄像头用来开发程序。有一些小细节记录一下。

  • EasyDarwin安装使用

        流媒体服务器easydarwin的安装还是非常方便的。参考官方给的readme。几分钟就可以搭建好。https://github.com/EasyDarwin/EasyDarwin

  • ffmpeg小坑

        运行easydarwin服务后,就是用ffmpeg推流到服务器了。

        笔记本摄像头名称使用命令查看:

ffmpeg -list_devices true -f dshow -i dummy

         贴几条测试好的命令:

//不使用编码器 循环推送本地h264文件
ffmpeg -re -stream_loop -1 -i C:Downloads\1080P.264 -rtsp_transport tcp  -vcodec copy -f rtsp rtsp://localhost/test
//使用libx264编码器推送笔记本摄像头
ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -r 30 -f rtsp rtsp://localhost/test
//使用h264_qsv编码器 推送笔记本摄像头
ffmpeg -f dshow -i video="Integrated Camera" -vcodec h264_qsv  -r 30 -f rtsp rtsp://localhost/test

        以上几条命令都是没有问题的。但是在使用ffmpeg的过程中,一开始总是弹出一些警告(类似一下这种):

Past duration 0.781242 too large

real-time buffer [Integrated Camera] [video input] too full or near too full

        问题应该是编码速度不够,导致buffer拥堵。使用ffmpeg -codecs查看了H264支持的编码器。

         但是使用nvenc会报错,因为我使用的是编译好的3.3.1版本的ffmpeg,没有dll库文件。ffmpeg添加编码器需要重新编译ffmpeg和库文件,比较麻烦。

        于是去ffmpeg官网下载编译好的版本。最终下载了4.4版本编译好的ffmpeg工具,更改环境变量指向新下载的bin目录。重新运行推流命令,发现不再报错。而且使用vlc查看的延时也从三秒左右降到了ms级别。

  • 验证

        使用vlc打开推流地址,可以流畅的看到摄像头画面。

ffmpeg--使用命令+EasyDarwin推流笔记本摄像头_第1张图片

 总结:以后还是尽量用新版本的库和工具。。。

你可能感兴趣的:(图像处理,ffmpeg)