FFMPEG - Converta um vídeo em um intervalo de tempo

15

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 tamanho da 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 abaixo através da linha de comando primeiro:

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

Qualquer ajuda seria muito apreciada!

Sanduíche
fonte

Respostas:

19

Problema resolvido. Eu não estava removendo o áudio, portanto, presumivelmente, ele estava reproduzindo 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.

Sanduíche
fonte
1

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 diminuir a velocidade do áudio com 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 é limitado ao uso de valores entre 0,5 e 2,0 (para que ele possa diminuir a velocidade 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 amarrando vários filtros atempo. O seguinte com quadruplica a velocidade do áudio:

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

Usando um gráfico de filtro 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

Sol
fonte