Search code examples
python-3.xffmpegopencvpython

Python add audio to video opencv


I use python cv2 module to join jpg frames into video, but I can't add audio to it. Is it possible to add audio to video in python without ffmpeg? P.S. Sorry for my poor English


Solution

  • Use ffpyplayer to handle the audio part.

    import cv2
    import numpy as np
    #ffpyplayer for playing audio
    from ffpyplayer.player import MediaPlayer
    video_path="../L1/images/Godwin.mp4"
    def PlayVideo(video_path):
        video=cv2.VideoCapture(video_path)
        player = MediaPlayer(video_path)
        while True:
            grabbed, frame=video.read()
            audio_frame, val = player.get_frame()
            if not grabbed:
                print("End of video")
                break
            if cv2.waitKey(28) & 0xFF == ord("q"):
                break
            cv2.imshow("Video", frame)
            if val != 'eof' and audio_frame is not None:
                #audio
                img, t = audio_frame
        video.release()
        cv2.destroyAllWindows()
    PlayVideo(video_path)
    

    The sample code will work but you need to play around the cv2.waitKey(28) depending on the speed of your video.