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

24

11

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.

nc4pk

Posted 2013-06-02T01:27:09.470

Reputation: 8 261

Answers

35

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

nc4pk

Posted 2013-06-02T01:27:09.470

Reputation: 8 261

Note that this does not preserve all metadata, such as 360 equirectangular (I haven't tested the extent). – Elaskanator – 2018-12-29T07:23:20.337

7RTFM strikes again! – martineau – 2013-06-02T08:17:36.203

4

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.

SommerEngineering

Posted 2013-06-02T01:27:09.470

Reputation: 151

2

There are several free software for this:

and many others at videohelp.com

T.Todua

Posted 2013-06-02T01:27:09.470

Reputation: 2 436

MP4Box seems very simple and I didn't find any option to replace audio, but MKVToolNix GUI is easy to understand and does a great job! – Vitas – 2019-08-26T19:17:30.107