Estou tentando alterar a taxa de quadros de um vídeo para que ele dure um pouco mais. Não quero recodificar e quero que o áudio permaneça sincronizado. Consegui extrair o vídeo bruto do vídeo e depois remuxar usando ...
ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4
Isso cria um vídeo que agora é executado no tempo correto, sem áudio.
Como posso obter um .mp4 finalizado com o áudio?
Responder1
Você precisará ajustar a velocidade do áudio para corresponder ao vídeo e recodificá-lo, mas pode fazer isso sem codificar novamente o vídeo.
Primeiro, calcule quanto você precisa para ajustar o áudio. Supondo que este fosse originalmente um vídeo de 25fps, você está reduzindo a velocidade para 23,976, seu fator de velocidade é 23,976/25 = 0,959. Vamos conectar isso ao atempo
filtro para ajustar a velocidade do áudio, extraindo-o do original source.mkv
.
ffmpeg -i source.mkv -r 23.976 -i video.h264 -filter_complex "[0:a]atempo=0.959[out]" -map 1:v -map "[out]" -c:a aac -c:v copy out.mp4
Aqui -filter_complex
está pegando o fluxo de áudio do arquivo de entrada zero ( source.mkv
) e executando-o através do atempo
filtro, em seguida, nomeando a saída [out]
. Em seguida, usamos -map
argumentos para dizer que queremos pegar aquele fluxo de áudio e também o fluxo de vídeo do primeiro arquivo de entrada (começando do zero, então, na verdade, o segundo video.h264
). Temos que recodificar o áudio porque queremos alterá-lo, mas podemos apenas copiar o vídeo para o contêiner.