Ffmpeg - Alterando a taxa de quadros sem recodificação

Ffmpeg - Alterando a taxa de quadros sem recodificação

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 atempofiltro 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_complexestá pegando o fluxo de áudio do arquivo de entrada zero ( source.mkv) e executando-o através do atempofiltro, em seguida, nomeando a saída [out]. Em seguida, usamos -mapargumentos 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.

informação relacionada