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 h26
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.
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
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')