python - 如何从帧和矢量创建带有音频和视频的视频
问题描述
我正在尝试在 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()
解决方案
推荐阅读
- css - 我在使用 li::before 内容和项目符号 unicode 时遇到了一些问题
- ios - webkit 不为不透明度设置动画
- python - 在 pyqt5 界面中动态更新 matplotlib 画布
- python - Plotly Python 中的刻度格式
- python - 如何使用 Python 从 ZIP 文件中查找字符串
- javascript - 模仿 TypeScript 中的扩展方法
- css - 为什么我的 CSS Grid 不能在 IE 11 中正确呈现?
- node.js - 在 docker 中运行 ng build 时如何为 node.js 分配更多内存?
- python - 在 Python 中,根据该数组的特定列中的值将数组行分成组
- sql-server - 如何根据其他行插入行?