Ffmpeg - 다시 인코딩하지 않고 프레임 속도 변경

Ffmpeg - 다시 인코딩하지 않고 프레임 속도 변경

비디오의 프레임 속도를 변경하여 조금 더 오래 실행하려고 합니다. 다시 인코딩하고 싶지 않고 오디오가 동기화 상태를 유지하기를 원합니다. 비디오에서 원시 비디오를 추출한 다음 다음을 사용하여 리먹싱할 수 있었습니다...

ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4

이제 오디오 없이 정확한 시간에 실행되는 비디오가 생성됩니다.

오디오가 포함된 완성된 .mp4를 어떻게 얻을 수 있나요?

답변1

비디오에 맞게 오디오 속도를 조정하고 다시 인코딩해야 하지만 비디오를 다시 인코딩하지 않고도 이 작업을 수행할 수 있습니다.

먼저 오디오를 조정하는 데 필요한 정도를 계산합니다. 이것이 원래 25fps 비디오였다고 가정하면 23.976으로 느려지고 속도 요소는 23.976/25 = 0.959입니다. 이를 필터에 연결하여 atempo오디오 속도를 조정하고 원본에서 끌어옵니다 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

여기서는 -filter_complex0번째 입력 파일( )에서 오디오 스트림을 가져와 필터를 source.mkv통해 실행한 atempo다음 출력 이름을 지정합니다 [out]. 그런 다음 -map인수를 사용하여 첫 번째 입력 파일(0부터 시작하므로 실제로는 두 번째 파일)에서 해당 오디오 스트림과 비디오 스트림을 가져오고 싶다고 말합니다 video.h264. 오디오를 변경하고 싶기 때문에 오디오를 다시 인코딩해야 하지만 비디오를 컨테이너에 복사하면 됩니다.

관련 정보