Converter seqüência png para x264 com ffmpeg

5

Estou tentando converter uma série de pngs em um vídeo mp4. Eu estou usando o ffmpeg e quero codificar o vídeo com o codec H.264. Usando o comando

ffmpeg -y -r 30 -b 1800k -i _tmp%04d.png -vcodec libx264 out.mp4

Eu recebo a seguinte mensagem de aviso

Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'

Meu entendimento é que existe um canal alfa nos pngs, que o codificador x264 não pode manipular. Existe uma maneira de contornar este problema? Existe, por exemplo, uma maneira de fazer o codificador ignorar o canal alfa (minhas pngs não têm elementos transparentes)?

Estou ciente de que eu poderia converter previamente os pngs em lote para remover o canal alfa, mas a seqüência de imagens é produzida por outro programa, e ter que pré-processar as imagens cada vez que faço um vídeo não seria ideal.

Editar: depois de remover o canal alfa de cada quadro usando o comando

convert in.png -background white -flatten +matte out.png

ffmpeg dá a mensagem de aviso

Incompatible pixel format 'pal8' for codec 'libx264', auto-selecting format 'yuv420p'

ainda não há dados.

    
por Thucydides411 03.12.2012 / 05:39

1 resposta

0

Eu estava pensando em usar AVISynth e frame para contornar o problema, mas parece que o ffmpeg agora tem suporte nativo para o AVISynth. Significa que você pode usar scripts do AVISynth como entrada.

Portanto, com um script, sequence.avs , você poderia fazer:% ffmpeg -i sequence.avs -vcodec libx264 out.mp4

Onde sequence.avs é:
ImageSource("_tmp%04d.png", start=0, end=1, fps=30).ConvertToYV12()

Observação: os parâmetros de início e fim opcionais refletem que testei com duas imagens, _tmp0000.png e _tmp0001.png .

Veja também: Mais formatos de cores . A documentação ImageSource .

    
por 03.12.2012 / 07:50

Tags