1

У меня 15-дюймовый MacBook Pro 2017 года, работающий под управлением Mac OS X 10.13 (High Sierra): Дисплей по умолчанию поддерживает разрешение экрана до 2880x1800 , несмотря на то, что максимальное разрешение, выбираемое через стандартный интерфейс пользователя, ограничено 1920x1200 (см. Этот вопрос):

Теперь я пытаюсь захватить полноэкранную запись через ffmpeg , используя устройство avfoundation , в полном разрешении (то есть без какой-либо дополнительной выборки):

ffmpeg -y -v error -hide_banner -f avfoundation -i 1:none -threads 0 -f mp4 -vcodec mpeg4 -r 25/1 -qscale:v 1 output.mp4

Как ни странно, когда разрешение экрана изменяется между 1024x640 и 1920x1200 (то есть выбирается через "масштабированный список" в настройках Mac OS X ), размер результирующего растрового видео всегда в четыре раза превышает разрешение экрана:

  • 1024x6402048x1280
  • ...
  • 1920x12003840x2400

С другой стороны, если я установлю разрешение экрана на максимум 2880x1800 с screenresolution утилиты разрешения экрана, размер вывода ffmpeg будет идентичен разрешению экрана.

В обоих случаях опция -video_size будет игнорироваться ffmpeg .

Вышесказанное верно только для встроенного дисплея: для любых внешних дисплеев разрешение экрана и разрешение захваченного видео всегда одинаковы, независимо от уровня масштаба.

Вопросы:

  1. Почему ffmpeg (или, скорее, устройство ввода avfoundation) демонстрирует такие несоответствия?
  2. Как заставить ffmpeg всегда использовать текущее разрешение экрана при захвате экрана? Я бы предпочел не включать подвыборку (-vf scale=...), чтобы повлиять на размер получаемого растра.

1 ответ1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .