FFMPEG - Converta um vídeo em timelapse

8

Estou usando o ffmpeg no Flash Builder (script de ação 3) para converter um vídeo em um lapso de tempo do vídeo. Eu trabalhei como usar setpts para fazer isso, mas o arquivo de saída resultante é o mesmo comprimento que a entrada (com apenas o último quadro exibido após o lapso de tempo), eu quero que a duração seja alterada com base nas configurações passadas para ffmpeg.

Estou tentando o seguinte através da linha de comando primeiro:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

Qualquer ajuda seria muito apreciada!

    
por Sandwich 07.07.2014 / 15:18

2 respostas

9

Problema resolvido. Eu não estava removendo o áudio, então presumivelmente estava tocando o arquivo de áudio, quase vazio, durante todo o tempo do vídeo.

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an remove o áudio do vídeo.

    
por 08.07.2014 / 15:25
1

Mais alguns detalhes aqui sobre como acelerar o áudio. Você pode fazer até 2x, mas você pode enganá-lo para acelerar ainda mais ( source ):

Acelerar / desacelerar o áudio

Você pode acelerar ou desacelerar áudio com o atempo filtro de áudio. Para dobrar a velocidade do áudio:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

O filtro atempo é limitado ao uso de valores entre 0,5 e 2,0 (assim, ele pode atrasá-lo para não menos do que a metade da velocidade original e acelerar para não mais que o dobro da entrada). Se você precisar, você pode contornar essa limitação encadeando vários filtros atempo juntos. O seguinte com quadruplicar a velocidade do áudio:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

Usando um filtro gráfico complexo, você pode acelerar o vídeo e o áudio ao mesmo tempo:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

    
por 26.12.2014 / 16:28