我安装了ffmpeg和mjpeg-streamer。后者从/ tmp / stream读取.jpg文件并通过http将其输出到网站上,因此我可以通过Web浏览器传输该文件夹中的任何内容。
我编写了一个bash脚本,可以连续捕获网络摄像头中的帧并将其放入/ tmp / stream:
while true
do
ffmpeg -f video4linux2 -i /dev/v4l/by-id/usb-Microsoft_Microsoft_LifeCam_VX-5000-video-index0 -vframes 1 /tmp/stream/pic.jpg
done
这很好用,但速度很慢(~1 fps)。为了加快速度,我希望使用一个单独的ffmpeg命令来连续更新.jpg,让我们说10 fps。我尝试的是以下内容:
ffmpeg -f video4linux2 -r 10 -i /dev/v4l/by-id/usb-Microsoft_Microsoft_LifeCam_VX-5000-video-index0 /tmp/stream/pic.jpg
然而,这 - 可以理解 - 导致错误消息:
[image2 @ 0x1f6c0c0] Could not get frame filename number 2 from pattern '/tmp/stream/pic.jpg'
av_interleaved_write_frame(): Input/output error
...因为输出模式不利于连续的图像流。
是否可以使用ffmpeg流式传输到一个jpg?
...谢谢
答案 0 :(得分:3)
您可以使用-update
选项:
ffmpeg -y -f v4l2 -i /dev/video0 -update 1 -r 1 output.jpg
来自image2 file muxer文档:
-update number If number is nonzero, the filename will always be interpreted as just a filename, not a pattern, and this file will be continuously overwritten with new images.
答案 1 :(得分:2)
通过使用可以实现我想要的目标:
./mjpg_streamer -i "input_uvc.so -r 1280×1024 -d /dev/video0 -y" -o "output_http.so -p 8080 -w ./www"
...来自mjpg_streamer的目录。通过在使用地址时在浏览器中显示流,它将为您完成所有令人讨厌的工作: HTTP:// {IP-OF-THE-SERVER}:8080 / 它的重量也足以在Raspberry Pi上运行。
Here是一个很好的教程,可用于设置它。
感谢您的帮助!