How do I replace the audio in an MP4 file without re-encoding?

I've got a video in an MP4 container that I would like to replace the audio track in (not add another audio stream to, nor convert the audio format of).

Someone elsewhere online suggested to use VirtualDub to replace the audio track, but it wouldn't even open up the video file. Journeyman Geek suggested in chat that I use ffmpeg, but the documentation is pretty difficult for me to understand.

How can I accomplish this on Windows? I'll download/install external programs if I must.


Solution 1:

I ended up scrutinizing the documentation for ffmpeg and worked out a solution:

ffmpeg.exe -i input_video.mp4 -i replacement_audio.m4a -vcodec copy -acodec copy -map 0:0 -map 1:0 output.mp4

Solution 2:

An addition to the current solution: If the audio file does not match the video container's format, just avoid the -acodec parameter:

ffmpeg.exe -i input_video.mp4 -i replacement_audio.m4a -vcodec copy -map 0:0 -map 1:0 output.mp4

Now, only the audio gets encoded in order to match the container.

Solution 3:

There are several free software for this:

  • MP4Box GUI
  • MKVTOOLKIT
  • AviDemux

and many others at videohelp.com