macos - 使用 YUV 4 :2:0 Planar color model 在 Mac OS X 上进行 ffmpeg 屏幕截图

标签 macos ffmpeg avfoundation yuv

我用 ffmpeg 录屏, 使用 avfoundation在 Mac OS X 上,x11grab在 Linux 和 gdigrab 上在 Windows 上。

生成的文件应该与现代 Web 浏览器 (<video/>) 兼容,因此我使用 H.264 编解码器并请求 YUV 4:2:0 平面像素格式。

但是,在 Mac OS X 上(与 Linux 和 Windows 不同),我收到以下日志记录:

/usr/local/bin/ffmpeg -y -v error -f avfoundation -threads 0 -hide_banner -i 1:none -f mp4 -vcodec h264 -pix_fmt yuv420p -r 25/1 -qscale:v 1 -vf scale=-1:1080 target.mp4
[avfoundation @ 0x7fdba2003a00] Selected pixel format (yuv420p) is not supported by the input device.
[avfoundation @ 0x7fdba2003a00] Supported pixel formats:
[avfoundation @ 0x7fdba2003a00]   uyvy422
[avfoundation @ 0x7fdba2003a00]   yuyv422
[avfoundation @ 0x7fdba2003a00]   nv12
[avfoundation @ 0x7fdba2003a00]   0rgb
[avfoundation @ 0x7fdba2003a00]   bgr0

尽管如此,根据 mplayer ,生成的 MP4 文件似乎有 YUV 4:2:0 平面颜色模型:
[h264 @ 0x1048a8ac0]Format yuv420p chosen by get_format().
[h264 @ 0x1048a8ac0]Reinit context to 1728x1088, pix_fmt: yuv420p
[h264 @ 0x1048a8ac0]Format yuv420p chosen by get_format().
[h264 @ 0x1048a8ac0]Reinit context to 1728x1088, pix_fmt: yuv420p
[swscaler @ 0x1048c3cc0]bicubic scaler, from yuv420p to yuyv422 using MMXEXT
*** [scale] Exporting mp_image_t, 1728x1080x12bpp YUV planar, 2799360 bytes
*** [vo] Allocating mp_image_t, 1728x1080x16bpp YUV packed, 3732480 bytes
ffmpeg 也证实了这一点:
$ ffmpeg -i target.mp4 -hide_banner
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'target.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
  Duration: 00:00:04.72, start: 0.000000, bitrate: 201 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1728x1080, 197 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler

问题:
  • 有人能解释一下以上吗ffmpeg记录?
  • 如果我还需要转换 avfoundation视频流到 yuv420p ,我如何即时完成(在单个 ffmpeg 通行证中)?
  • 最佳答案

    avfoundation 模块的像素格式默认设置为 yuv420p。如果不可用,它将打印该警告并尝试选择另一种格式。您应该会在该警告下方看到以 Overriding selected pixel format to use .. 开头的一行。

    如果输出没问题,这可以忽略。您不需要第二次通过或任何其他更改。

    关于macos - 使用 YUV 4 :2:0 Planar color model 在 Mac OS X 上进行 ffmpeg 屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380532/

    相关文章:

    objective-c - 在 Objective-C 中获取另一个应用程序的图标

    ios - 如何验证URL是正确的,和/或从任意文本中提取有效的URL?

    ffmpeg - 如何使用 ffmpeg 对多个输出视频的音频进行一次编码

    video - 使用 ffmpeg 转码为 DNxHD mxf 时,渐进式或隔行式被误解

    ios - iOS 设备上支持的 AVCaptureSessionPreset

    ios - Swift 的 AVAudioEngine 类中的 detachNode 做了什么?

    ios - 在 Swift 3 中使用 AVFoundation 设置图片方向

    objective-c - 使用 NSUserDefaults 保存从 NSPopupbutton 中选择的项目

    objective-c - 如何填充图表以使线条不会被边缘剪裁?

    ssh - 如何通过 ssh 调用 AAC 音频流功能