Создание снимка экрана ffmpeg в Mac OS X с использованием цветовой модели YUV 4: 2: 0 Planar

Я делаю записи экрана с помощью ffmpeg, используя avfoundation на Mac OS X, x11grab на линукс и gdigrab на Окна.

Полученные файлы должны быть совместимы с современными веб-браузерами (<video/>), поэтому я использую кодек H.264 и запрашиваю формат YUV 4:2:0 Planar Pixel.

Однако на Mac OS X (в отличие от линукс и Окна) я получаю следующий журнал:

/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 Planar:

[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

Вопросы:

  1. Может кто-нибудь объяснить приведенное выше ffmpeg ведение журнала?
  2. Если мне все еще нужно преобразовать видеопоток avfoundation в yuv420p, как мне сделать это на лету (за один проход ffmpeg)?
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 552
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Формат пикселей модуля avfoundation по умолчанию установлен на yuv420p. Когда он недоступен, он напечатает это предупреждение и попытается выбрать другой формат. Вы должны увидеть строку ниже этого предупреждения, начинающуюся с Overriding selected pixel format to use ..

Если вывод в порядке, это можно игнорировать. Вам не нужен второй проход или какие-либо другие изменения.

Благодарю за ваш ответ. На уровне журнала WARNING я действительно вижу Overriding selected pixel format to use uyvy422 instead, что кажется несовместимым с выводом ffmpeg -i, который четко сообщает yuv420p.

Bass 30.05.2019 21:24

Ваша команда имеет -pix_fmt yuv420p, поэтому ffmpeg будет конвертировать в нее, независимо от ввода.

Gyan 30.05.2019 21:28

Как мне измениться?

chovy 15.03.2021 20:43

Другие вопросы по теме