首页 > 解决方案 > 如何从帧和矢量创建带有音频和视频的视频

问题描述

我正在尝试在 python 上创建与音频合并的视频剪辑。我有一个帧列表和一个所需的视频帧速率和一个音频我有一个具有已知采样率的 numpy 向量。我能够使用 opencv 创建视频文件,但是我找不到将它与音频结合的方法。所以问题是,有没有办法从代表视频帧的 numpy matricides 列表和代表音频的 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()

标签: pythonopencvaudiovideo

解决方案


推荐阅读