使用 FFmpeg 从 Mac 流式传输网络摄像头
Posted
技术标签:
【中文标题】使用 FFmpeg 从 Mac 流式传输网络摄像头【英文标题】:Webcam streaming from Mac using FFmpeg 【发布时间】:2016-10-23 23:17:11 【问题描述】:我想使用 FFmpeg 从 Mac 流式传输我的网络摄像头。
首先我使用ffmpeg -f avfoundation -list_devices true -i ""
检查了支持的设备
输出:
[AVFoundation input device @ 0x7fdf1bd03000] AVFoundation video devices:
[AVFoundation input device @ 0x7fdf1bd03000] [0] USB 2.0 Camera #2
[AVFoundation input device @ 0x7fdf1bd03000] [1] FaceTime HD Camera
[AVFoundation input device @ 0x7fdf1bd03000] [2] Capture screen 0
[AVFoundation input device @ 0x7fdf1bd03000] [3] Capture screen 1
[AVFoundation input device @ 0x7fdf1bd03000] AVFoundation audio devices:
[AVFoundation input device @ 0x7fdf1bd03000] [0] Built-in Microphone
设备[0] 是我要使用的网络摄像头。
然后我尝试使用ffmpeg -f avfoundation -i "0" out.mpg
捕获网络摄像头
输出:
[avfoundation @ 0x7fe7f3810600] Selected framerate (29.970030) is not supported by the device
[avfoundation @ 0x7fe7f3810600] Supported modes:
[avfoundation @ 0x7fe7f3810600] 320x240@[120.101366 120.101366]fps
[avfoundation @ 0x7fe7f3810600] 640x480@[120.101366 120.101366]fps
[avfoundation @ 0x7fe7f3810600] 800x600@[60.000240 60.000240]fps
[avfoundation @ 0x7fe7f3810600] 1024x768@[30.000030 30.000030]fps
[avfoundation @ 0x7fe7f3810600] 1280x720@[60.000240 60.000240]fps
[avfoundation @ 0x7fe7f3810600] 1280x1024@[30.000030 30.000030]fps
[avfoundation @ 0x7fe7f3810600] 1920x1080@[30.000030 30.000030]fps
[avfoundation @ 0x7fe7f3810600] 320x240@[30.000030 30.000030]fps
[avfoundation @ 0x7fe7f3810600] 640x480@[30.000030 30.000030]fps
[avfoundation @ 0x7fe7f3810600] 800x600@[20.000000 20.000000]fps
[avfoundation @ 0x7fe7f3810600] 1024x768@[6.000002 6.000002]fps
0: Input/output error
之后,我尝试使用 ffmpeg -f avfoundation -framerate 30 -i "0" -f mpeg1video -b 200k -r 30 -vf scale=1920:1080 http://127.0.0.1:8082/
从我的 Mac 流式传输此网络摄像头
输出:
[avfoundation @ 0x7f8515012800] An error occurred: The activeVideoMinFrameDuration passed is not supported by the device. Use -activeFormat.videoSupportedFrameRateRanges to discover valid ranges.0: Input/output error
我无法捕获或流式传输此网络摄像头。但是,当我使用 Facetime 摄像头而不是这个网络摄像头时,一切正常。我一直在寻找这个问题几天,但仍然无法解决它。有人在 Mac 上使用过网络摄像头和 FFmpeg 吗?
【问题讨论】:
【参考方案1】:需要'-framerate'
你可以试试
ffmpeg -f avfoundation -framerate 30 -i "0" -target pal-vcd ./test.mpg
【讨论】:
任何建议怎么做【参考方案2】:我在尝试流式传输 Logitech C920 网络摄像头时遇到了同样的问题,其中内置 FaceTime 摄像头的流式传输工作正常。
我发现降低帧速率会阻止显示您报告的错误消息。这是我用来让网络摄像头工作的命令(帧速率为 30 的相同命令不起作用)。
ffmpeg -f avfoundation -framerate 10 -pixel_format yuyv422 -i "0" out.avi
从您的网络摄像头支持的视频格式来看,以下命令似乎可以工作。虽然由于我没有相同的网络摄像头,这可能无法解决您的问题。
ffmpeg -f avfoundation -framerate 6 -i "0" -target pal-vcd test.mpg
我希望这可以帮助您找到解决方案。
【讨论】:
以上是关于使用 FFmpeg 从 Mac 流式传输网络摄像头的主要内容,如果未能解决你的问题,请参考以下文章
使用 FFMpeg 将 FLV 流式传输到 RTMP,使用 H264 编解码器和 C++ API 到 flv.js