Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining an audio file with video file in python

I am writing a program in Python on RaspberryPi(Raspbian), to combine / merge an audio file with video file.

Format of Audio file is WAVE Format of VIdeo file is h264

Audio and video already recorded and created at same time successfully, I just need to merge them now.

Can you please guide me on how do I do that?

like image 608
Fahadkalis Avatar asked Jan 29 '15 14:01

Fahadkalis


3 Answers

I got the answer of my Question, you can also try it and let me know if need further assistance

cmd = 'ffmpeg -y -i Audio.wav  -r 30 -i Video.h264  -filter:a aresample=async=1 -c:a flac -c:v copy av.mkv'
subprocess.call(cmd, shell=True)                                     # "Muxing Done
print('Muxing Done')
like image 125
Fahadkalis Avatar answered Nov 11 '22 11:11

Fahadkalis


def combine_audio(vidname, audname, outname, fps=25):
    import moviepy.editor as mpe
    my_clip = mpe.VideoFileClip(vidname)
    audio_background = mpe.AudioFileClip(audname)
    final_clip = my_clip.set_audio(audio_background)
    final_clip.write_videofile(outname,fps=fps)

source::https://www.programcreek.com/python/example/105718/moviepy.editor.VideoFileClip Example no 6

like image 42
faiza Avatar answered Nov 11 '22 09:11

faiza


The best tool for manipulating audio and video stream is ffmpeg/libav. Do you have to use Python? You could use command-line binaries from these projects.

For example, taken from https://wiki.libav.org/Snippets/avconv:

avconv -v debug -i audio.wav -i video.mp4 -c:a libmp3lame -qscale 20 -shortest output.mov

(Of course you'll want to tweak the parameters for your files, and qscale for the quality you want.)

You can call this from within python using the subprocess module. If you have to do it in python directly, you could use PyAV (https://pypi.python.org/pypi/av/0.1.0), but this would involve more effort.

like image 4
rod Avatar answered Nov 11 '22 09:11

rod