У меня есть мультипликационная анимация, хранящаяся в видео MPEG-2, которую я хотел бы преобразовать в MPEG-4/h264.

Сжатие видео в формате MPEG-2 довольно плохое: в нем присутствуют как "маленькие" артефакты JPEG вокруг деталей изображения, так и более крупные блоки JPEG, которые слегка меняют оттенок для каждого кадра.

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

Поскольку анимация изначально состояла из больших плоских цветных поверхностей, которые были бы мечтой видеокомпрессора, есть ли умный способ сказать:

«Возьмите большие цветные поверхности, которые почти одного цвета, и сделайте их одним цветом, чтобы сжать их чрезвычайно эффективно?"

Другими словами, для оптимизации размера файла и качества видео путем устранения ущерба, нанесенного MPEG-2.

Опция ffmpeg -tune animation сохранила небольшой размер файла, но не намного. Кроме того, снижение общего качества видео просто вводит "новые" повреждения сжатия поверх старых.

1 ответ1

1

Постобработка

В общем, вставьте = вставьте, но вы могли бы сделать так, чтобы он выглядел "лучше" с помощью одного из многочисленных фильтров постобработки FFmpeg: fspp, pp, pp7, spp, uspp.

оригинал
исходное изображение с типичными артефактами

постобработке
постобработанное изображение

Пример команды

ffmpeg -i input.mpg -vf "pp=hb/vb/dr/fq|8" -c:v libx264 -crf 23 -preset medium \
-tune animation -c:a copy output.mkv

Используйте ваш плеер вместо

Некоторые игроки, такие как VLC (Videoпостобработка), могут содержать функции постобработки, так что это может быть лучшим выбором , чтобы просто использовать , что вместо повторного кодирования.

Или используйте ffplay для воспроизведения или предварительного просмотра фильтрации:

ffplay -vf "pp=hb/vb/dr/fq|8" -i input.mpg

Также см

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