Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#9505 closed defect (invalid)

Unsupported frame rate with capture device after updating to MacOS Monterey

Reported by: ewu100 Owned by: Thilo Borgmann
Priority: critical Component: undetermined
Version: unspecified Keywords:
Cc: ewu100 Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

After updating my Mac to MacOS Monterey, capturing video from a capture device fails saying the framerate is not supported. Before the update, the command worked fine. I have tested this on 4 different macs with 4 different Magewell USB Capture HDMI cards (product page), and all are experiencing the same issue after updating to MacOS Monterey.

How to reproduce:

% ffmpeg -f avfoundation -s 1280x720 -framerate 30 -an -i "USB Capture HDMI" -y -c:v h264_videotoolbox -b:v 5M -f mp4 test.mp4

ffmpeg version  N-104496-g44c65c6cc0-tessu
built with Apple clang version 11.0.0 (clang-1100.0.33.17)

Console output:

% ./ffmpeg -v 9 -loglevel 99 -f avfoundation -s 1280x720 -framerate 30 -an -i "USB Capture HDMI" -y -c:v h264_videotoolbox -b:v 2M -f mp4 test.mp4
ffmpeg version N-104496-g44c65c6cc0-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2021 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57.  7.100 / 57.  7.100
  libavcodec     59. 12.100 / 59. 12.100
  libavformat    59.  8.100 / 59.  8.100
  libavdevice    59.  0.101 / 59.  0.101
  libavfilter     8. 16.101 /  8. 16.101
  libswscale      6.  1.100 /  6.  1.100
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'avfoundation'.
Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '1280x720'.
Reading option '-framerate' ... matched as AVOption 'framerate' with argument '30'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '-i' ... matched as input url with argument 'USB Capture HDMI'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'h264_videotoolbox'.
Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '2M'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mp4'.
Reading option 'test.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url USB Capture HDMI.
Applying option f (force format) with argument avfoundation.
Applying option s (set frame size (WxH or abbreviation)) with argument 1280x720.
Applying option an (disable audio) with argument 1.
Successfully parsed a group of options.
Opening an input file: USB Capture HDMI.
[avfoundation @ 0x7fd60af04cc0] 'USB Capture HDMI' opened
[avfoundation @ 0x7fd60af04cc0] Selected framerate (30.000000) is not supported by the device.
[avfoundation @ 0x7fd60af04cc0] Supported modes:
[avfoundation @ 0x7fd60af04cc0]   640x360@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   640x480@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   720x480@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   720x576@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   768x576@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   800x600@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   856x480@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   960x540@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1024x576@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1024x768@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1280x720@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1280x800@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1280x960@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1280x1024@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1368x768@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1440x900@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1600x1200@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1680x1050@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1920x1080@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   1920x1200@[14.999993 59.999880]fps
    Last message repeated 1 times
[avfoundation @ 0x7fd60af04cc0]   2048x1080@[14.999993 59.999880]fps
    Last message repeated 1 times
USB Capture HDMI: Input/output error

Change History (6)

comment:1 by Thilo Borgmann, 2 years ago

Owner: set to Thilo Borgmann
Status: newopen

If there is no 30 fps mode listed under supported modes, there's nothing we can do about that - the OS has changed its mind of what to support (or the drivers, is there something involved from magewell?).
Testing the modes is not without a chance some modes just declare 60 fps but gives you 30 in the end.

comment:2 by Balling, 2 years ago

Newest Macbooks support 60, 60/1.001 and VRR they call ProMotion.

Last edited 2 years ago by Balling (previous) (diff)

in reply to:  1 ; comment:3 by ewu100, 2 years ago

Replying to Thilo Borgmann:

If there is no 30 fps mode listed under supported modes, there's nothing we can do about that - the OS has changed its mind of what to support (or the drivers, is there something involved from magewell?).
Testing the modes is not without a chance some modes just declare 60 fps but gives you 30 in the end.


Hi Thilo,
I appreciate your response to my ticket. To provide some additional information, I ended up writing a command line app in Swift to achieve what I'm trying to do (simply record a video from an external capture device via the command line) and found that using Apple's AVFoundation framework, I can record videos from the magewell capture device at 30fps.

Given this new information, would that still point to a problem with the drivers and/or the OS? Not at all trying to challenge what you're saying, just want to provide some more context in case it indicates anything.

Really appreciate the work you guys are doing here, and any help you or anyone else can provide here.

in reply to:  3 comment:4 by Thilo Borgmann, 2 years ago

Replying to ewu100:

Replying to Thilo Borgmann:

If there is no 30 fps mode listed under supported modes, there's nothing we can do about that - the OS has changed its mind of what to support (or the drivers, is there something involved from magewell?).
Testing the modes is not without a chance some modes just declare 60 fps but gives you 30 in the end.


Hi Thilo,
I appreciate your response to my ticket. To provide some additional information, I ended up writing a command line app in Swift to achieve what I'm trying to do (simply record a video from an external capture device via the command line) and found that using Apple's AVFoundation framework, I can record videos from the magewell capture device at 30fps.

Given this new information, would that still point to a problem with the drivers and/or the OS? Not at all trying to challenge what you're saying, just want to provide some more context in case it indicates anything.

If you are able to do that, you can see where the difference between your cmd line tool and FFmpeg is in acquiring the device.

comment:5 by konchog, 2 years ago

I have tested this now on both ffmpeg-105857-gc72b5be9e3 and ffmpeg-5.0
On vanilla macOS Monterey 12.2.1 (intel i7)

This is definitely a major issue.

It seems that whatever is added using the switch -framerate, the response is always the same:

Selected framerate (29.970030) is not supported by the device.

For example.

./ffmpeg -f avfoundation -i "0:none" -framerate 25 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -framerate 1 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -framerate 30 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -video_size 3840x2160 -framerate FROG out.mov

Selected framerate (29.970030) is not supported by the device.

This is what the device supports..

[avfoundation @ 0x7f78..] Supported modes:
[avfoundation @ 0x7f78..] 320x240@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 640x480@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 800x600@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 800x600@[5.000000 20.000000]fps
[avfoundation @ 0x7f78..] 1024x768@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1024x768@[5.000000 10.000000]fps
[avfoundation @ 0x7f78..] 1280x720@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1280x720@[5.000000 10.000000]fps
[avfoundation @ 0x7f78..] 1280x960@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1280x960@[5.000000 5.000000]fps
[avfoundation @ 0x7f78..] 1600x1200@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1600x1200@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 1920x1080@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1920x1080@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 2048x1536@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 2048x1536@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 2592x1944@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 2592x1944@[1.000000 1.000000]fps
[avfoundation @ 0x7f78..] 3840x2160@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 3840x2160@[1.000000 1.000000]fps

Let's try one, right?
./ffmpeg -f avfoundation -i "0:none" -video_size 1280x960 -framerate 5 out.mov

Selected framerate (29.970030) is not supported by the device.

in reply to:  5 comment:6 by Thilo Borgmann, 2 years ago

Resolution: invalid
Status: openclosed

Replying to konchog:

I have tested this now on both ffmpeg-105857-gc72b5be9e3 and ffmpeg-5.0
On vanilla macOS Monterey 12.2.1 (intel i7)

This is definitely a major issue.

It seems that whatever is added using the switch -framerate, the response is always the same:

Selected framerate (29.970030) is not supported by the device.

For example.

./ffmpeg -f avfoundation -i "0:none" -framerate 25 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -framerate 1 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -framerate 30 out.mov

Selected framerate (29.970030) is not supported by the device.

./ffmpeg -f avfoundation -i "0:none" -video_size 3840x2160 -framerate FROG out.mov

Selected framerate (29.970030) is not supported by the device.

This is what the device supports..

[avfoundation @ 0x7f78..] Supported modes:
[avfoundation @ 0x7f78..] 320x240@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 640x480@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 800x600@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 800x600@[5.000000 20.000000]fps
[avfoundation @ 0x7f78..] 1024x768@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1024x768@[5.000000 10.000000]fps
[avfoundation @ 0x7f78..] 1280x720@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1280x720@[5.000000 10.000000]fps
[avfoundation @ 0x7f78..] 1280x960@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1280x960@[5.000000 5.000000]fps
[avfoundation @ 0x7f78..] 1600x1200@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1600x1200@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 1920x1080@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 1920x1080@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 2048x1536@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 2048x1536@[3.000000 3.000000]fps
[avfoundation @ 0x7f78..] 2592x1944@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 2592x1944@[1.000000 1.000000]fps
[avfoundation @ 0x7f78..] 3840x2160@[5.000000 30.000030]fps
[avfoundation @ 0x7f78..] 3840x2160@[1.000000 1.000000]fps

Let's try one, right?
./ffmpeg -f avfoundation -i "0:none" -video_size 1280x960 -framerate 5 out.mov

Try
./ffmpeg -f avfoundation -framerate 5 -i "0:none" -video_size 1280x960 out.mov
as you are setting output framerate not effecting avfoundation directly with your command.

Also as there is no further feedback from ewu100 about his claims on stream acquisition. Closed as invalid.

Last edited 2 years ago by Thilo Borgmann (previous) (diff)
Note: See TracTickets for help on using tickets.