ffmpeg от mpeg2 до MP4 H264 создает артефакты горизонтальных линий в сценах движения

2282
Fit Nerd

Мой видеовход представляет собой видеофайл mpeg2 следующим образом:

Video: MPEG2 Video 720x576 (4:3) 25fps [V: mpeg2 main, yuv420p, 720x576] Audio: MPEG Audio 48000Hz stereo 224kbps [A: mp2, 48000 Hz, stereo, 224 kb/s] 

Тогда я использую:

ffmpeg.exe -i in.mpg -b:v 3000k -preset superfast out.mp4 

Чтобы получить MP4:

Video: MPEG4 Video (H264) 720x576 (4:3) 25fps 2967kbps [V: h264 high L3.0, yuv420p, 720x576, 2967 kb/s] Audio: AAC 48000Hz stereo 128kbps [A: SoundHandler (aac lc, 48000 Hz, stereo, 128 kb/s)] 

Все хорошо, за исключением того, что я получаю что-то подобное в сценах:

enter image description here

В фактическом источнике такого нет. В источнике нет промежуточных кадров или ореолов - просто «дискретные» шаги.

Я пробовал другие пресеты, а также другие кодеки, такие как libxvid, но все дали тот же результат.

Итак, как мне это исправить? Какие параметры я должен добавить или какие параметры настроить?

3
Можете ли вы предоставить короткий пример входного файла, содержащего сцену действия? Вы можете создать его, используя что-то вроде: `ffmpeg -ss 600 -i input -c copy -t 5 output.mpg` LordNeckbeard 8 лет назад 0
Попробуйте увеличить битрейт. Хотя для получения постоянного качества чаще использовать кодировку с опцией crf. jiggunjer 8 лет назад 1

1 ответ на вопрос

7
szatmary

Ваш входной источник в чересстрочной. Лучше всего деинтерлейсировать с помощью фильтра ffmpeg, например -vf yadif=1. Смотрите документацию yadif для получения дополнительной информации.

Обратите внимание, что yadif = 1 следует использовать только в том случае, если в каждом кадре фактически имеется 1 поле, в противном случае вы получите дублированные кадры. В этом случае использование `` `-vf yadif``` будет более эффективным. Ely 8 лет назад 1

Похожие вопросы