У меня есть несколько кадров 4K 3840x2160 в формате MP4, которые мне нужно уменьшить до 1080p. Я пробовал бегать
ffmpeg -i orig.mp4 -vf scale=1920:1080 smaller.mp4
но в результате получается очень плохое качество: все изображение состоит из квадратных «плиток», как если бы я увеличивал изображение 4: 1.
Вот результат выполнения этой команды:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origs/P1000003.MP4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
Duration: 00:05:14.48, start: 0.000000, bitrate: 95903 kb/s
Stream #0.0(und): Video: h264 (High), yuvj420p, 3840x2160 [PAR 1:1 DAR 16:9], 95792 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 125 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x22a3420] w:3840 h:2160 pixfmt:yuvj420p
[scale @ 0x22a3ce0] w:3840 h:2160 fmt:yuvj420p -> w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, mp4, to '1-short.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
encoder : Lavf53.21.1
Stream #0.0(und): Video: mpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 125 fps= 6 q=31.0 Lsize= 968kB time=5.00 bitrate=1586.7kbits/s
video:842kB audio:123kB global headers:0kB muxing overhead 0.421047%
По своему опыту я знаю, что ffmpeg - отличный инструмент, поэтому я должен как-то испортить параметры / параметры ...
Как я могу это сделать?
ffmpeg
file-formats
conversion
full-hd
4k
Лара Майклс
источник
источник
-t 10
чтобы сделать 10-секундный выход. Почему вы хотите уменьшить масштаб? Какой вариант использования для вашего масштабированного вывода? Эта информация поможет мне дать более точный ответ.-c:a copy
, поскольку вы не хотите или не нуждаетесь в перекодировании аудиопотока. Используйте-map 0
для копирования любых метаданных главы или другого материала. (ffmpeg по умолчанию принимает только 1 видео + 1 аудит.)-sws_flags lanczos+print_info
будет использоваться лучший алгоритм масштабирования, чем по умолчанию (я думаю, билинейный). Ответ stlb охватывает часть процесса кодирования видео.scale=1920:-2:flags=lanczos
. Я также собирался упомянуть-2
для масштаба в моем несуществующем ответе. Для тех, кто не знает, вы можете указать-2
ширину или высоту, и она автоматически предоставит правильное значение, сохранив соотношение сторон и сделав значение, кратное 2 (требуется для libx264 для выходных данных yuv420p).Ответы:
Настройки по умолчанию для ffmpeg очень низкого качества, и, поскольку вы не указываете кодек или параметры качества, он просто использует значения по умолчанию (я не знаю, почему разработчики не исправляют это, потому что это вызывает много вопросов на форумах). где угодно).Изменить : значения по умолчанию теперь довольно вменяемые. В последней сборке ffmpeg вам не нужно указывать ничего, кроме входных и выходных файлов, для достижения хороших результатов. Вы можете, конечно, настроить желание вашего сердца.
Попробуйте добавить
-c:v libx264 -crf 20 -preset slow
в команду.-c:v libx264
говорит ему использовать кодировщик libx264,crf 20
использует квантователь коэффициента постоянной скорости (который парадоксально означает переменную скорость передачи данных, но постоянное качество) со значением 20 (довольно хорошее качество; чем ниже, тем лучше качество / большие файлы, чем выше, тем хрупче / меньше),slow
запрограммированный ярлык для связки параметров датчика , что средства он помещает немного больше усилий, чем по умолчанию (среда).Вы можете настроить эти параметры, см. Руководство по кодированию h.264 для получения инструкций о том, какие ручки поворачивать.
И если вы используете аудио как есть, добавьте
c:a copy
. Это сделает прямую копию аудиопотока без перекодирования.источник
mpeg4
производящий видео MPEG-4 Part 2, и значения по умолчанию для него были более вменяемыми в период его расцвета (например, для 320x240 и т. д.).Используйте avconv, если хотите:
источник