12

I would like to add a background music to a video file (.mp4) in python.

I have looked the web and did some tricks with moviepy for python, but I did not found a single way to add background music to a video file that already contains music. Any ideas how to do that ?

Edit following Anil_M's comment : Thanks, no I didn't look at this particular thread, althought I knew about ffmpeg but it looks like again, it is a way to merge a video without audio with an audio track.

So now I am going to try to extract audio from the video, merge with another audio file, then merge back with video. Maybe that's not the best way, but at least it is possile as questions about merging 2 audio tracks are answered.

Eli O.
  • 1,543
  • 3
  • 18
  • 27
  • 1
    Have you looked at this thread ? https://stackoverflow.com/questions/28219049/combining-an-audio-file-with-video-file-in-python – Anil_M Feb 11 '18 at 21:45

3 Answers3

15

You can do this with moviepy's CompositeAudioClip:

import moviepy.editor as mpe
my_clip = mpe.VideoFileClip('some_clip.mp4')
audio_background = mpe.AudioFileClip('some_background.mp3')
final_audio = mpe.CompositeAudioClip([my_clip.audio, audio_background])
final_clip = my_clip.set_audio(final_audio)
Zulko
  • 3,540
  • 1
  • 22
  • 18
4

This code works on windows

import moviepy.editor as mp

audio = mp.AudioFileClip("theme.mp3")
video1 = mp.VideoFileClip(video_no_audio)
final = video1.set_audio(audio)
final.write_videofile("output/output.mp4",codec= 'mpeg4' ,audio_codec='libvorbis')
Sujit Noronha
  • 51
  • 1
  • 4
2

#This code is working Effectively.

import moviepy.editor as mp

audio = mp.AudioFileClip("ck3.mp3")
video1 = mp.VideoFileClip("ck1.mp4")
final = video1.set_audio(audio)

final.write_videofile("output.mp4")
Raj Maddheshiya
  • 485
  • 4
  • 5