#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)
follow-up: 3 comment:1 by , 3 years ago
Owner: | set to |
---|---|
Status: | new → open |
comment:2 by , 3 years ago
Newsest MacOS supports 60, 60/1.001 and VRR they call ProMotion.
follow-up: 4 comment:3 by , 3 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.
comment:4 by , 3 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.
follow-up: 6 comment:5 by , 3 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.
comment:6 by , 3 years ago
Resolution: | → invalid |
---|---|
Status: | open → closed |
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.
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.