如何使用来自帧和矢量的音频和视频创建视频

时间:2019-10-22 10:13:03

标签: python opencv audio video

我正在尝试创建与python上的音频合并的视频剪辑。 我有视频的帧列表和所需的帧速率,对于音频,我有一个具有已知采样率的numpy向量。 我可以使用opencv创建视频文件,但是找不到将其与音频结合的方法。 所以问题是,是否有一种方法可以从代表视频帧的numpy矩阵列表和代表音频的numpy数组列表中创建视频文件?

我正在研究使用ffmpeg进行此操作,但是,通过这种方法,我需要先保存文件,然后再合并两个文件,这需要花费一些时间来保存和加载

加载音频文件

audio_name='Metallica - Master Of Puppets S&M [HQ].mp3'
x, sr = librosa.load(audio_name) 
ipd.Audio(x, rate=sr)

加载视频

import cv2

video_name = 'vid_sample.avi'
new_video_name='new_'+video_name
vidcap = cv2.VideoCapture(video_name)
success,image = vidcap.read()
count = 0
success = True
frame_list=[]

while success:
    #cv2.imshow('image',image) #Display the video
    frame_list.append(image)
    if cv2.waitKey(10) == 27:                     # exit if Escape is hit
        vidcap.release() 
        cv2.destroyAllWindows() 
        break
    success,image = vidcap.read()
    count += 1
# Release all space and windows once done 
    vidcap.release() 
    cv2.destroyAllWindows() 

对视频进行一些操作,然后将帧保存到“ new_list”(未显示)

new_list包含与frame_list类似的帧

创建新视频

height,width,layers=new_list[1].shape
video=cv2.VideoWriter(new_video_name,cv2.VideoWriter_fourcc(*'DIVX'),fps (width,height))
for i in range(len(new_list)):
    video.write(new_list[i])
video.release()

0 个答案:

没有答案