Sei que essa é uma pergunta antiga, mas nenhuma das respostas atuais é mais recomendada.
Remuxagem sem perdas (vídeo)
Conforme observado nos comentários, há uma maneira de fazer isso onde o vídeo não
precisa ser recodificado. Requer a remuxagem do arquivo para um formato MKV de contêiner diferente e, em seguida, a remuxagem novamente para um MP4. Aqui está um exemplo que altera um vídeo para 12 quadros / segundo:
mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy slow-video.mp4
Se o vídeo contém áudio também pode retardar esse baixo sem alterar o tom, mas é não uma conversão sem perdas. O exemplo abaixo supõe que o vídeo de origem tenha 24 quadros / segundo, para que o áudio precise ser reduzido para metade (0,5) da velocidade usando o filtro atempo do ffmpeg .
mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy -c:a aac -filter:a "atempo=0.5" slow-video-with-audio.mp4
Guia do FFMPEG Wiki
Esta é a orientação do wiki ffmpeg . Observe que todas essas opções exigem a recodificação do vídeo.
Acelerando / desacelerando o vídeo
Você pode alterar a velocidade de um fluxo de vídeo usando o filtro de vídeo setpts. Observe que nos exemplos a seguir, o fluxo de áudio não é alterado, portanto, idealmente, deve ser desativado com -an.
Para dobrar a velocidade do vídeo, você pode usar:
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
O filtro funciona alterando o registro de data e hora da apresentação (PTS) de cada quadro de vídeo. Por exemplo, se houver dois quadros sucessivos mostrados nos registros de data e hora 1 e 2 e você desejar acelerar o vídeo, esses registros de data e hora deverão se tornar 0,5 e 1, respectivamente. Portanto, temos que multiplicá-los por 0,5.
Observe que esse método eliminará os quadros para atingir a velocidade desejada. Você pode evitar a queda de quadros especificando uma taxa de quadros de saída mais alta que a entrada. Por exemplo, para passar de uma entrada de 4 FPS para uma que é acelerada até 4x que (16 FPS):
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" output.mkv
Para diminuir a velocidade do seu vídeo, você precisa usar um multiplicador maior que 1:
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv
Suave
Você pode suavizar vídeos lentos / rápidos com o filtro de vídeo minterpolar. Isso também é conhecido como "interpolação de movimento" ou "fluxo óptico".
ffmpeg -i input.mkv -filter "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" output.mkv
Outras opções incluem slowmoVideo e Butterflow. Acelerar / desacelerar 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 a 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