I have a .mov video with 24fps and 5.1 audio.

Is it possible change the framerate from 24 to 25 fps with no frame resampling (no frame duplication / removal - just new framerate interpretation) and keep the audio pitch the same?

Normally you do this by not resampling the frame data but setting the video flag from 24 to 25 fps however there is the need to adjust the audio so that it is shortened. Is it possible do it all in one ffmpeg command line or maybe in more than one and prepare a batch / bash file for that?

Also, is ffmpeg's audio processing capabilities professional quality or it is low quality compared to pro algorithms like Avid Pro Tools and Adobe Audition?

Note: This question is different from this one Convert video from 24 to 25 fps while keeping video and audio length and also correct audio pitch.

Here I want to know how to do the same thing but shortening the actual length of the video and adjust audio accordingly keeping the pitch in a professional way.

  • Please create a separate question for your question about ffmpeg's quality. Also, you are confusing a codec (Prores) and a program (Audition and ffmpeg). – Michael Liebman Nov 28 '17 at 23:23
  • Sorry i was sleepy, I wanted to intend Avid Pro Tools – user3450548 Nov 29 '17 at 10:30
  • Which video codec? – Gyan Dec 2 '17 at 13:22
  • @Mulvya does it matter? Anyways h264. For the audio codec i would like to keep the original pcm audio wav raw as output format too.. – user3450548 Dec 2 '17 at 21:08

If your input stream has no B-pyramid i.e. B-frames used as references for other B-frames, and your ffmpeg build has librubberband linked then use the following commands:

#1 Extract video to raw stream

ffmpeg -i in.mkv -c copy in.h264

#2 Retime and process audio

ffmpeg -r 25 -i in.h264 -i in.mkv -map 0 -map 1:a -af rubberband=tempo=1.04166 -c:a pcm_s16le out.mkv

If your H264 stream does have reference B-frames then you'll have to use mp4box as an intermediary.


#2a Retime video

mp4box -add in.h264#fps=25 -new in25.mp4

#2b Process audio and add video

ffmpeg -i in25.mp4 -i in.mkv -map 0 -map 1:a -af rubberband=tempo=1.04166 -c:a pcm_s16le out.mkv
  • Isn't possible to cast a single pass command using atempo ? I was trying a command like: ffmpeg -i input.mov -r 25 -c:v libx264 -preset ultrafast -crf 18 -c:a libfdk_aac -filter:v "setpts=0.96*PTS" -filter:a "atempo=1.0417" output.mov I'm not sure about the pitch however.. Anyways sorry for the initial confusion about h264 as input video.. generally my input is a ProRes, DNxHD codec..(would be cool have a command that could work for any kind of input tho) – user3450548 Dec 3 '17 at 10:18
  • atempo will alter pitch. There's a new native filter that will soon be added to ffmpeg which will allow tempo changes without pitch change but its quality isn't as good as rubberband. – Gyan Dec 3 '17 at 10:36
  • I see, so.. can I use rubberband in just one passage as I suggested for atempo ? – user3450548 Dec 3 '17 at 15:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.