我正在尝试创建与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包含与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()