Munish Kapoor
Munish Kapoor

Reputation: 3339

ffmpeg add multiple mp3 files to mp4 video at particular position

It might be a duplicate question but didn't find any helpful answer.

I have 2 audio files and 1 mp4 video file. Want to add the 2 audio files to mp4 videoat specific time.

For example:

Video file:

Audio files:

Audio File 1:

Audio File 2:

I tried the following command with offset

It's only inserting test_0:01.mp3 at 0:01 position in the video file

But test_0:20.mp3 is not getting inserted at 0:020 position getting mute for this file no audio.

ffmpeg -i input.mp4 -itsoffset 01 -i test_0:01.mp3  -itsoffset 20 -i test_0:20.mp3 -c:v copy -map 0:v:0 -map 1:a -map 2:a -c:a aac -b:a 192k output.mp4

Any help will be appreciated!

Upvotes: 3

Views: 1289

Answers (1)

martinr92
martinr92

Reputation: 718

Your command creates two audio tracks in the MP4 file. If you have a look in your video player you can choose between two audio tracks (usually used to choose different audio languages).

Why

This is because every -map parameter creates a new stream. In your example one video with two audio tracks.

Solution

Use the audio filter amix instead. Use also the filter adelay for the delay in the same filter chain to achieve the best result.

ffmpeg -i input.mp4 -i test_0:01.mp3 -i test_0:20.mp3 -filter_complex "[1:a]adelay=1s:all=1[a1];[2:a]adelay=20s:all=1[a2];[a1][a2]amix=inputs=2[amixout]" -map 0:v:0 -map "[amixout]" -c:v copy -c:a aac -b:a 192k output.mp4

Upvotes: 3

Related Questions