使用opencv及FFmpeg编辑视频
- 1.融合两个视频
- 2.为视频添加声音
- 2.1 安装ffmpy Python包
- 2.2 下载ffmpeg
- 2.3 代码实现
- 3.效果
- 参考文献
帮朋友做了一个小作业,具体实现分为几个过程:
- 将两个mp4格式视频融合到一起
- 为新视频添加声音
1.融合两个视频
其中一个视频为背景。
p="E:/test"
import cv2
import os
#%%
cap = cv2.VideoCapture(os.path.join(p,"bkg.mp4"))
cap2 = cv2.VideoCapture(os.path.join(p,"fg.mp4"))
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
fps = cap2.get(cv2.CAP_PROP_FPS)
width, height = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)-560)
out = cv2.VideoWriter('result2.mp4', fourcc, fps, (width, height))
width2, height2 = 270,480
while(True):
# 3.获取每一帧图像
ret, frame = cap.read()
ret2, frame2 = cap2.read()
if ret2 == True:
frame_new=frame[280:-280]
frame2 = cv2.resize(frame2, (width2,height2))
frame_new[160:600,160:410]=frame2[40:,:250]
out.write(frame_new)
else:
break
if cv2.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
此时保存的视频没有声音。
2.为视频添加声音
2.1 安装ffmpy Python包
pip install ffmpy
2.2 下载ffmpeg
从官网下载安装包,跳转到链接:
我使用的是第一个压缩包。剪切到自定义位置,并设置好系统路径。
我这里的路径是'D:/Program Files/ffmpeg/bin/ffmpeg.exe'
。
2.3 代码实现
在这之前音频文件要准备好。
from ffmpy import FFmpeg
video_path=os.path.join(p,'result1.mp4')
audio_path=os.path.join(p,'audio.mp3')
_codec = 'aac'
result="res.mp4"
ff = FFmpeg(executable='D:/Program Files/ffmpeg/bin/ffmpeg.exe',inputs={video_path: None, audio_path: None},outputs={result: '-map 0:v -map 1:a -c:v copy -c:a {} -shortest'.format(_codec)})
ff.run()
3.效果
参考文献
[1] https://ffmpeg.org/download.html#build-windows
[2] csdn博客:【实操】python opencv将图片合成视频,并插入音频
[3] csdn博客:Python 视频添加音频(附代码) | Python工具
[4] csdn博客:OpenCV保存摄像头视频和视频文件操作实战(附Python源码)