Você está tornando caminho mais difícil do que tem que ser. O FFmpeg é muito mais inteligente do que você acredita - sabe que você quer que o vídeo tenha o mesmo tamanho de sua faixa de áudio.
ffmpeg -i still.png -i narrate.wav -acodec libvo_aacenc -vcodec libx264 final.flv
pause
Os únicos atributos que você tem para especificar são input filenames
, output codecs
e o output filename
(que e o ipso inclui o output container
,).
É claro que faz sentido começar com uma imagem estática que compartilhe as mesmas dimensões do seu vídeo final; se você estiver usando um editor de imagem dedicado em vez de especificar as dimensões de saída para o FFmpeg atender, será necessário certificar-se de que suas dimensões de entrada sejam números pares .
O tamanho da saída é um dos hang-ups mais comuns do FFmpeg; alguns codecs são mais restritos nas dimensões de saída do que outros, mas nenhuma saída pode ter atributos de altura ou largura com números ímpares.
O comando pause
no final do arquivo em lote mantém a CLI aberta - a melhor maneira de depurar sua linha de comando é lendo as mensagens de erro gera. Eles são extremamente específicos - e a melhor documentação do FFmpeg -, mas o trabalho duro dos desenvolvedores é perdido se você permitir que a janela seja fechada antes de poder lê-los.
O shell de comando tem uma opção cmd /k
que mantém uma janela aberta na qual você pode executar as mesmas instruções do seu script em lote no prompt de comando. / p>
FFmpeg e avconv farão com que você use -c:a
para -acodec
e -c:v
para -vcodec
eventualmente, mas as instruções antigas funcionam bem nas compilações que eu uso.
Nota: Todo commit tem idiossincrasias. Se a sua linha de comando está falhando sem razão aparente, geralmente é útil tentar outra compilação - ou seguir o garfo para a libav , onde os desenvolvedores mais ativos do FFmpeg estiveram nos últimos dois anos. Sua ferramenta de transcodificação foi renomeada como avconv , mas seus arquivos em lote devem funcionar com qualquer um deles.