Webcam streaming from Mac using FFmpeg

2020-05-21 06:07发布

问题:

I want to stream my webcam from Mac using FFmpeg.

First I checked the supported devices using ffmpeg -f avfoundation -list_devices true -i ""

Output:

[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

The device[0] is the webcam I want to use.


Then I tried to capture the webcam using ffmpeg -f avfoundation -i "0" out.mpg

Output:

[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

After that, I tried stream this webcam from my Mac using ffmpeg -f avfoundation -framerate 30 -i "0" -f mpeg1video -b 200k -r 30 -vf scale=1920:1080 http://127.0.0.1:8082/

Output:

[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

I cannot capture or stream this webcam. However when I used the Facetime camera instead of this webcam, everything was OK. I've been searching for this problem for a few days, but still cannot fix it. Does anyone have experience with webcam and FFmpeg on Mac?

回答1:

'-framerate' is needed

you can have a try

ffmpeg -f avfoundation -framerate 30 -i "0" -target pal-vcd ./test.mpg



回答2:

I experienced the same problem trying to stream a Logitech C920 webcam where streaming of the built in FaceTime camera works fine.

I found that reducing the frame rate stopped the error message you reported from being displayed. Here is the command I used to get my webcam working (where the same command with a frame rate of 30 did not work).

ffmpeg -f avfoundation -framerate 10 -pixel_format yuyv422 -i "0" out.avi

From the video formats your webcam supports it looks like the following command could work. Though as I do not have the same webcam this may not resolve your issue.

ffmpeg -f avfoundation -framerate 6 -i "0" -target pal-vcd test.mpg

I hope this helps you find a solution.