Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从帧和向量创建音频和视频视频_Python_Opencv_Audio_Video - Fatal编程技术网

Python 如何从帧和向量创建音频和视频视频

Python 如何从帧和向量创建音频和视频视频,python,opencv,audio,video,Python,Opencv,Audio,Video,我正在尝试在python上创建与音频合并的视频剪辑。 我有一个视频的帧列表和所需的帧速率,音频有一个已知采样率的numpy向量。 我能够使用opencv创建视频文件,但我找不到将其与音频相结合的方法。 所以问题是,有没有办法从表示视频帧的numpy矩阵列表和表示音频的numpy数组创建视频文件 我正在研究使用ffmpeg来实现这一点,但是,使用这种方法,我需要先保存文件,然后合并两个文件,这需要时间来保存和加载 加载音频文件 加载viedo 对视频进行一些操作,并将帧保存到“新列表”(未显示)

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

我正在研究使用ffmpeg来实现这一点,但是,使用这种方法,我需要先保存文件,然后合并两个文件,这需要时间来保存和加载

加载音频文件 加载viedo 对视频进行一些操作,并将帧保存到“新列表”(未显示) 新列表包含的框架与框架列表一样

创建一个新的视频
opencv用于计算机视觉。看看ffmpeg等媒体库。谢谢@Mika,我知道这一点,我想问是否有一个库,我可以用它获取帧列表、音频向量并将它们组合起来。ffmpeg确实允许您合并音频和视频文件,但要使用它,我必须先保存我用opencv创建的视频,然后将视频与音频文件一起加载(我已经加载了,但需要再次加载),然后再将两者合并。libAV是ffmpeg使用的库,您可以从代码中使用它,简而言之,我将不得不制作视频,保存它,然后将其与音频文件一起加载,以合并它们,而不是使用ffmpeg可执行文件?没有办法吗?是否有一个选项,使视频帧和原始音频向量?是否可以从原始音频信号中获取音频的“蒸汽”和从原始视频帧中获取视频的“流”以馈送到ffmpeg?抱歉,您正在使用python。。。可能不可能,但我不是python领域的专家。祝你好运。opencv是用于计算机视觉的。看看ffmpeg等媒体库。谢谢@Mika,我知道这一点,我想问是否有一个库,我可以用它获取帧列表、音频向量并将它们组合起来。ffmpeg确实允许您合并音频和视频文件,但要使用它,我必须先保存我用opencv创建的视频,然后将视频与音频文件一起加载(我已经加载了,但需要再次加载),然后再将两者合并。libAV是ffmpeg使用的库,您可以从代码中使用它,简而言之,我将不得不制作视频,保存它,然后将其与音频文件一起加载,以合并它们,而不是使用ffmpeg可执行文件?没有办法吗?是否有一个选项,使视频帧和原始音频向量?是否可以从原始音频信号中获取音频的“蒸汽”和从原始视频帧中获取视频的“流”以馈送到ffmpeg?抱歉,您正在使用python。。。可能不可能,但我不是python领域的专家。祝你好运
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() 
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()