Opened 20 months ago
Last modified 20 months ago
#10228 new defect
Screen recording on Mac produces a skewed output video
Reported by: | zachog | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | unspecified | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description (last modified by )
Doing a screen capture recording on Mac results in a output video file where each line is offset from the prior line. This is the same behavior described in this ticket that was marked as fixed from 4 years ago: https://trac.ffmpeg.org/ticket/5654. However, this reproduces in a build with a build date from yesterday.
How to reproduce:
- ffmpeg -f avfoundation -i "0:" out.avi
- Press 'q' after a second or two.
Expected:
A video file is produced of the screen contents.
Actual:
A video file is produced but the video contents are skewed and unusable. See attached video file.
Platform is mac OS 11.7.1 Big Sur.
Console output:
ffmpeg version N-109934-g891ed24f77-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2023 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 58. 3.100 / 58. 3.100
libavcodec 60. 5.100 / 60. 5.100
libavformat 60. 4.100 / 60. 4.100
libavdevice 60. 2.100 / 60. 2.100
libavfilter 9. 4.100 / 9. 4.100
libswscale 7. 2.100 / 7. 2.100
libswresample 4. 11.100 / 4. 11.100
libpostproc 57. 2.100 / 57. 2.100
[AVFoundation indev @ 0x7f9308504540] Configuration of video device failed, falling back to default.
[avfoundation @ 0x7f9308504080] Selected pixel format (yuv420p) is not supported by the input device.
[avfoundation @ 0x7f9308504080] Supported pixel formats:
[avfoundation @ 0x7f9308504080] uyvy422
[avfoundation @ 0x7f9308504080] yuyv422
[avfoundation @ 0x7f9308504080] nv12
[avfoundation @ 0x7f9308504080] 0rgb
[avfoundation @ 0x7f9308504080] bgr0
[avfoundation @ 0x7f9308504080] Overriding selected pixel format to use uyvy422 instead.
[avfoundation @ 0x7f9308504080] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, avfoundation, from '0:':
Duration: N/A, start: 10275.945000, bitrate: N/A
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 1877x915, 1000k tbr, 1000k tbn
File '/Users/runner/tmp/out.avi' already exists. Overwrite? [y/N] y
Stream mapping:
Press [q] to stop, ? for help
Attachments (1)
Change History (10)
by , 20 months ago
comment:1 by , 20 months ago
I've tried every option I can find such as setting different pixel_formats, vsync, outputting to raw and then converting, framerate, video_size, etc options and all result in skewed output. If any work around exists I'd be interested in knowing it. Thanks!
comment:2 by , 20 months ago
Description: | modified (diff) |
---|
comment:3 by , 20 months ago
Description: | modified (diff) |
---|
comment:4 by , 20 months ago
I did find that lowering the screen resolution fixed the issue but unfortunately that isn't a feasible work around for me. Setting the video_size option to the resolution that works for the lower system resolution did not work to fix the skewed video output.
comment:5 by , 20 months ago
Frame rate : 600.000 FPS
is wrong, you are doing something wrong.
MPEG-4 Visual
No one uses that nowadays, use HEVC or AV1. Same for AVI container, use mp4 also known as mov.
comment:6 by , 20 months ago
I'm not sure why it had a frame rate of 600fps. I didn't specify that. The resolution of the machine is 1656x932.
So after trying dozens of different settings with none of them working I found out that Mac has a built in screencapture application. I gave that a try and found that it had the exact same skewed video problem so it seems like it is an OS/video driver problem rather than a ffmeg problem. This tool had an option to capture a subsection of the screen and I found that if I subtract 1 pixel from the height and width the capture works just fine.
I'm not sure how you would detect if you were on a system with this issue but it would likely save your users a ton of grief if you were able to do the same when you encountered a system with this issue.
comment:7 by , 20 months ago
Mac has a built in screencapture application. I gave that a try and found that it had the exact same skewed video problem so
Or they are just using our naive code.
What macbook is that?
comment:8 by , 20 months ago
I couldn't say what they are using under the hood. It is a parallels VM. I didn't set it up so I'm not sure what it is running on.
Skewed video file.