Всякий раз, когда я использую ffmpeg для кодирования записи экрана HiDPI/Retina, видео воспроизводится с размером 2x, поэтому он выглядит нечетким, потому что плотность пикселей не сохраняется.Как сохранить плотность 2x пикселей при кодировании захвата сетчатки Retina с помощью ffmpeg?
Как сохранить исходную плотность пикселей записей в формате HiDPI с помощью ffmpeg?
Как воспроизвести:
- Используйте QuickTime Player, чтобы создать запись экрана на Retina Mac.
- Воспроизведите видео, записанное в QuickTime Player, с помощью окна
⌘1 Actual Size
. Обратите внимание, что он воспроизводит 2: 1 на вашем Retina Display, поэтому видео выглядит резким. Он воспроизводит половину пространства фактических записанных пикселей. Использование FFmpeg для кодирования видео с помощью команды, как это:
ffmpeg -i haha.mov -c:v libx264 -crf 23 haha-lg.mov
- Играть новый 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
Для справки я опубликовал немного другую версию этого вопроса в разделе «Видеопроизводство» (https://video.stackexchange.com/questions/23503/how-does-quicktime-player-know-when-do-play- a-video-in-hidpi-retina-2x-mode), спрашивая, как именно QuickTime знает, когда играть в видео в режиме 2x. –