Estou usando o ffmpeg no flash builder (Action script 3) para converter um vídeo em um lapso de tempo do vídeo. Eu descobri como usar setpts para fazer isso, mas o arquivo de saída resultante tem o mesmo comprimento que a entrada (com apenas o último quadro exibido após o lapso de tempo), 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!
Responder1
Problema resolvido. Eu não estava removendo o áudio, então provavelmente ele estava reproduzindo o arquivo de áudio quase vazio durante todo o vídeo.
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4
-an
remove o áudio do vídeo.
Responder2
Mais alguns detalhes aqui sobre como acelerar o áudio. Você pode fazer até 2x, mas pode enganá-lo para acelerar ainda mais (fonte):
Acelerando/desacelerando o áudio
Você pode acelerar ou desaceleraráudiocom o filtro de áudio atempo. Para dobrar a velocidade do áudio:
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
O filtro atempo está limitado a usar valores entre 0,5 e 2,0 (para que possa desacelerá-lo para não menos que metade da velocidade original e acelerar para não mais que o dobro da entrada). Se necessário, você pode contornar essa limitação agrupando vários filtros de atempo. O seguinte com o quádruplo da velocidade de á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 vídeo e á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