Estou tentando realizar a edição de filmes de forma automatizada com o avconv. É feito em duas etapas:
Eu tentei algumas combinações de containers e codecs para os filmes intermediários e de saída, mas sempre resultou em uma das seguintes situações:
o áudio fica cada vez mais atrasado durante a reprodução do filme de saída. Parece que cada transição das partes concatenadas aumenta o atraso do áudio. Isso acontece, por exemplo, com os seguintes formatos e codecs:
avconv -i input-movie.avi -ss $TIME_1 -vframes $NUMFRAMES_1 -f avi -q 1 -aq 1 -y movie-part1.avi
avconv -i input-movie.avi -ss $TIME_2 -vframes $NUMFRAMES_2 -f avi -q 1 -aq 1 -y movie-part2.avi
...
avconv -i input-movie.avi -ss $TIME_N -vframes $NUMFRAMES_N -f avi -q 1 -aq 1 -y movie-partN.avi
avconv -i concat:movie-part1.avi|movie-part2.avi|...|movie-partN.avi -f avi -codec mpeg4 -q 1 -acodec libmp3lame -aq 1 -y output-movie.avi
áudio e vídeo no filme de saída estão em sincronia, mas é mais longo do que deveria ser. Nessa situação, a saída de avprobe -show_streams output-movie
mostra a duração e o vídeo nb_frames
mais que o esperado, embora a execução de avconv -i output-video -f image2 %06d.jpg
produza o número esperado de arquivos de quadro jpg (o número esperado de quadros é $NUMFRAMES_1 + $NUMFRAMES_2 + ... + $NUMFRAMES_N
). Isso acontece, por exemplo, com os seguintes formatos e codecs:
avconv -i input-movie.avi -ss $TIME_1 -vframes $NUMFRAMES_1 -f mpeg -q 1 -aq 1 -y movie-part1.mpeg
avconv -i input-movie.avi -ss $TIME_2 -vframes $NUMFRAMES_2 -f mpeg -q 1 -aq 1 -y movie-part2.mpeg
...
avconv -i input-movie.avi -ss $TIME_N -vframes $NUMFRAMES_N -f mpeg -q 1 -aq 1 -y movie-partN.mpeg
avconv -i concat:movie-part1.mpeg|movie-part2.mpeg|...|movie-partN.mpeg -f avi -codec mpeg4 -q 1 -acodec libmp3lame -aq 1 -y output-movie.avi
Existe uma maneira confiável / precisa de realizar essas operações e obter um filme resultante com áudio e vídeo em sincronia e com o número esperado de quadros?