Как я могу перекодировать видео H.264 с минимальной потерей качества?

20

У меня есть много файлов MPEG-TS (контейнер .TS, но видео H.264), и воспроизведение в порядке, за исключением того, что когда вы пропускаете вперед / назад или вперед, это очень вяло и становится пикселизированным и т. Д.

Я пытался провести исследование, и я предполагаю, что они кодировали с очень небольшим количеством эталонных блоков (т. Е. Это захват из спутникового потока DVB-S).

Когда я перекодирую их с помощью Handbrake (контейнер .MP4), они играют очень, очень хорошо, и поиск в видео происходит мгновенно и т. Д., И т. Д.

Можно ли перекодировать / перекодировать мои файлы MPEG-TS с минимальной потерей качества? Если так, то какая моя лучшая ставка? Каждый из них составляет около 2 Мбит / с (т.е. 2 ГБ в час), но я не хочу перекодировать их, если для «минимальной потери качества» требуется более 10 ГБ на файл. Я надеюсь сохранить видео такого же размера.

Кто-нибудь может дать мне какой-нибудь совет?

SofaKng
источник
4
Вы пробовали просто смешать их в файл MKV или MP4, чтобы посмотреть, поможет ли это? См. Ответы на следующие вопросы: Как преобразовать и восстановить MPEG-TS (захваты DVB-S) для лучшего воспроизведения?
afrazier

Ответы:

23

Возможно, это проблема контейнера, копирование его в новый формат контейнера с

avconv -i input.ts -c copy output.mp4

вполне может решить вашу проблему. Это будет на 100% без потерь. Если это не сработает, CRF 18 обычно считается «визуально без потерь»; Вы можете установить это HandBrake (на вкладке «видео») или с помощью avconv:

avconv -i input.ts -c:a copy -c:v libx264 -crf 18 -preset veryfast output.mp4

Предустановки: сверхбыстрый, сверхбыстрый, очень быстрый, быстрый, быстрый, средний, медленный, медленный, очень низкий. Чем медленнее пресет, тем меньше размер файла (но с увеличением времени кодирования). В моих личных экспериментах я обнаружил, что самый большой спад с точки зрения размера файла - между сверхскоростным и очень быстрым, после чего он, кажется, намного более постепенный.

ПРИМЕЧАНИЕ. Если вы хотите, ffmpeg может делать все, что может делать avconv, с идентичным синтаксисом (просто замените все экземпляры avconv на ffmpeg).

Примечание: вы можете найти это руководство по кодированию ffmpeg x264 полезным для получения дополнительной информации.

evilsoup
источник
8

Не вдаваясь в детали кодирования видео: нет такой вещи, как «минимальная потеря качества», когда вашим ограничением является конкретный видеокодек (h.264) или определенная скорость передачи данных. Ограничивающий фактор всегда будет здесь - если бы был способ сохранить еще более высокое качество, это было бы, так сказать, святым Граалем кодирования видео.

Кодировщик, подобный x264, может сделать очень много - вашей основной ручкой «управления» будет настройка коэффициента постоянной скорости, которая каким-то образом действует как фактор «постоянного качества». Кроме того, существуют технические ограничения на то, сколько битрейта может быть сохранено при перекодировании и сохранении того же визуального / опытного качества с одним конкретным кодером.

Конечно, вы получите разные результаты, скажем, для XviD (простой кодер MPEG 4 Part II) и x264, самого современного на сегодняшний день кодера h.264. И тогда вы также можете попробовать купить кодер Mainconcept h.264 и посмотреть, приведет ли его использование к лучшему качеству при той же средней скорости передачи данных.

В кодировании видео вам все равно придется провести несколько испытаний, так как это также зависит от исходного материала. Футбольную игру будет сложнее закодировать, чем раунд игры в снукер. В x264 есть несколько опций, которые позволяют настраивать определенные типы, например, фильмы, например, -tune filmв FFmpeg, но разница может быть минимальной.

Примеры и дополнительную информацию см. В FFmpeg: совершенный инструмент для манипуляции с видео и аудио .

slhck
источник
1

Для моих синих лучей Если я кодирую файлы MPEG-TS, я использую высокий профиль ручного тормоза и использую вкладку «Дополнительно» со следующими настройками: RF 20

b-adapt=2:rc-lookahead=60:bframes=8:direct=auto:trellis=2:ref=16:subq=10:me=umh:merange=24:analyse=all

Кодирование занимает некоторое время, но качество трудно отличить от синего луча.

Если ваша цель того же размера, этого не произойдет, так как это другой кодек / сжатие. Размер файла и качество не одно и то же.

davefromcamp
источник