Qual sinalizador de ffmpeg corrige quadros ausentes de MP4 no Premiere?

2

Estamos convertendo uma sequência de imagens DPX em um vídeo MP4:

ffmpeg -start_number 101 -i dpx/example.%04d.dpx ./example.mp4 # minimal conversion

ffmpeg -y -start_number 101 -i dpx/example.%04d.dpx -b12100k
-minrate 12100k -maxrate 12100k -bufsize 12100k -vf colormatrix=bt601:bt709
-pix_fmt yuv420 ./example.mp4 # conversion with colour correction

No entanto, ao abrir esse MP4 no Adobe Premiere Pro, parece que faltam os dois primeiros quadros (os primeiros dois quadros não são acessíveis, o terceiro quadro é acessível, o total de contagens de quadros é 2 desativado). O mesmo arquivo não possui frames ausentes quando aberto em outros aplicativos (Quicktime Player e VLC). Outros arquivos de vídeo não possuem quadros ausentes quando abertos no Premiere.

As seguintes conversões não solucionam o problema (ref 1) (ref 2) (ref 3 "-timecode") :

ffmpeg -start_number 101 -i dpx/example.%04d.dpx -filter_complex "[0] fps=fps=25"
./example.mp4 # force fps with filter_complex

ffmpeg -start_number 101 -i dpx/example.%%04d.dpx -timecode 00:00:00:01 ./example.mp4
# force timecode (tried drop and non-drop format)

A conversão a seguir (atacado herdado) funciona. Por quê? Qual argumento está resolvendo o problema?

ffmpeg -start_number 101 -i dpx/example.%%04d.dpx -crf 15.0 -y -vcodec libx264
-b:a 128k -b:v 4000 -intra -s 1280x720 -r 25 -ar 48000 -ab 192000 -coder 1 -flags +loop
-me_method hex -subq 6 -me_range 16 -g 1 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71
-b_strategy 1 -threads 0 ./example.mp4 # mystery meat

(Obviamente, estamos ajustando o que está funcionando para corresponder aos nossos outros requisitos.)

    
por d3vid 30.08.2016 / 11:11

1 resposta

3

Tendo testado alguns cenários, é a presença de vários quadros B que parecem responsáveis. É a sequência de armazenamento fora de apresentação e um novo bug no analisador de fluxo de bits H264 da Adobe que está causando esse problema.

Portanto, adicionar -x264opts bframes=1 (ou 0 ) resolve isso. Isso não é um problema com o FFmpeg, AFAICT, já que outros aplicativos, incluindo NLEs como Vegas, podem ler MP4s sem essa opção corretamente. Mesmo versões mais antigas do Adobe CC, de acordo com seus links.

Editar : -x264opts b_pyramid=0 parece ser a solução direta.

    
por 30.08.2016 / 11:55