Questão ffmpeg mpeg2 para MP4 H264 produz artefatos de linhas horizontais em cenas de movimento


Minha entrada de vídeo é o arquivo de vídeo mpeg2 da seguinte forma:

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]

Então eu uso:

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

Para obter o 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)]

Tudo está bem, exceto que eu recebo algo assim em cenas de movimento:

enter image description here

Na fonte real, não existe tal coisa. Na fonte, não há quadros intermediários ou fantasmas - apenas etapas "discretas".

Eu tentei outros presets, assim como outros codecs como libxvid, mas todos produziram o mesmo resultado.

Então, como devo consertar isso? Quais parâmetros devo adicionar ou quais configurações devem ser ajustadas?


2


origem


Você pode fornecer um pequeno arquivo de entrada de amostra contendo uma cena de ação? Você pode criá-lo usando algo como: ffmpeg -ss 600 -i input -c copy -t 5 output.mpg - LordNeckbeard
Tente aumentar a taxa de bits. Embora seja mais comum codificar com a opção crf para obter uma qualidade constante. - jiggunjer


Respostas:


Sua fonte de entrada no entrelaçado. Sua melhor aposta é desentrelaçar com um filtro ffmpeg como -vf yadif=1. Vejo documentação yadif para mais informações.


6



Note que yadif = 1 só deve ser usado quando houver efetivamente 1 campo por quadro, caso contrário você terminará com quadros dup. Se for esse o caso, usando -vf yadif será mais eficiente. - Ely