使用 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

寻找一个库/框架将实时视频从 OS X 流式传输到 Wowza 服务器(RTMP)[关闭]

从 Axis IP 摄像机重新流式传输 MJPEG

ffmpeg 将 rtsp 重新流式传输到 mjpeg

使用 socket.io 流式传输网络摄像头

在 Mac 上流式传输音频