2015-07-23 5 views
4

Всякий раз, когда я использую ffmpeg для кодирования записи экрана HiDPI/Retina, видео воспроизводится с размером 2x, поэтому он выглядит нечетким, потому что плотность пикселей не сохраняется.Как сохранить плотность 2x пикселей при кодировании захвата сетчатки Retina с помощью ffmpeg?

Как сохранить исходную плотность пикселей записей в формате HiDPI с помощью ffmpeg?

Как воспроизвести:

  1. Используйте QuickTime Player, чтобы создать запись экрана на Retina Mac.
  2. Воспроизведите видео, записанное в QuickTime Player, с помощью окна ⌘1 Actual Size. Обратите внимание, что он воспроизводит 2: 1 на вашем Retina Display, поэтому видео выглядит резким. Он воспроизводит половину пространства фактических записанных пикселей.
  3. Использование FFmpeg для кодирования видео с помощью команды, как это:

    ffmpeg -i haha.mov -c:v libx264 -crf 23 haha-lg.mov 
    
  4. Играть новый FFmpeg-сжатого видео в QuickTime Player, используя ⌘1 Actual Size вид. Обратите внимание, что он играет 1: 1, поэтому видео выглядит нечетким.

Чтобы уточнить, видео не выглядит размытым, потому что оно сжато. Скорее, он выглядит размытым, потому что видео воспроизводится в два раза больше, чем должно быть, при плотности пикселей 1: 1 вместо требуемой плотности 2: 1 пикселей, по-видимому, потому, что некоторые метаданные отбрасываются при кодировании.

Для записи VLC воспроизводит оба видео слишком большие (размытые). Таким образом, возможность воспроизведения видео HiDPI кажется особенностью QuickTime Player.

Вот подробная информация FFmpeg показывает для оригинальной записи экрана:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha.mov': 
    Metadata: 
    major_brand  : qt 
    minor_version : 0 
    compatible_brands: qt 
    creation_time : 2018-02-26T16:46:00.000000Z 
    com.apple.quicktime.make: Apple 
    com.apple.quicktime.model: iMac18,3 
    com.apple.quicktime.software: Mac OS X 10.13.3 (17D102) 
    com.apple.quicktime.creationdate: 2018-02-26T10:45:50-0600 
    Duration: 00:00:04.35, start: 0.000000, bitrate: 10947 kb/s 
    Stream #0:0(und): Video: h264 (Main) (avc1/0x31637661), yuv420p(tv, bt709), 1396x928 [SAR 1:1 DAR 349:232], 10701 kb/s, 60 fps, 60 tbr, 6k tbn, 12k tbc (default) 
    Metadata: 
     creation_time : 2018-02-26T16:46:00.000000Z 
     handler_name : Core Media Data Handler 
     encoder   : H.264 

А вот информация для FFmpeg-сжатой версии на:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha-lg.mov': 
    Metadata: 
    major_brand  : qt 
    minor_version : 512 
    compatible_brands: qt 
    encoder   : Lavf57.83.100 
    Duration: 00:00:04.35, start: 0.000000, bitrate: 1923 kb/s 
    Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuv420p, 1396x928 [SAR 1:1 DAR 349:232], 1783 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default) 
    Metadata: 
     handler_name : DataHandler 
     encoder   : Lavc57.107.100 libx264 
+0

Для справки я опубликовал немного другую версию этого вопроса в разделе «Видеопроизводство» (https://video.stackexchange.com/questions/23503/how-does-quicktime-player-know-when-do-play- a-video-in-hidpi-retina-2x-mode), спрашивая, как именно QuickTime знает, когда играть в видео в режиме 2x. –

ответ

3

FFmpeg в настоящее время не поддерживает, что тип метаданных. Если вы можете предоставить (короткий) образец на FFmpeg's bug tracker, мы, возможно, добавим поддержку этого типа метаданных в будущие версии.

+1

@hfossli, вы открыли билет для этой функции? – ericbn

+2

@ericbn Похоже, проблема в том, что это никогда не создавалось на ffmpeg (или, по крайней мере, я не могу найти его), поэтому я создал его здесь: https://trac.ffmpeg.org/ticket/7045 –

 Смежные вопросы

  • Нет связанных вопросов^_^