使用opencv及FFmpeg编辑视频

使用opencv及FFmpeg编辑视频

帮朋友做了一个小作业,具体实现分为几个过程:

  • 将两个mp4格式视频融合到一起
  • 为新视频添加声音

1.融合两个视频

其中一个视频为背景。

python 复制代码
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包

python 复制代码
pip install ffmpy

2.2 下载ffmpeg

官网下载安装包,跳转到链接

我使用的是第一个压缩包。剪切到自定义位置,并设置好系统路径。

我这里的路径是'D:/Program Files/ffmpeg/bin/ffmpeg.exe'

2.3 代码实现

在这之前音频文件要准备好。

python 复制代码
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\] \[2\] [csdn博客:【实操】python opencv将图片合成视频,并插入音频](https://blog.csdn.net/lr94V587/article/details/127629669) \[3\] [csdn博客:Python 视频添加音频(附代码) \| Python工具](https://blog.csdn.net/zhiweihongyan1/article/details/121735158?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-0-121735158-blog-123845165.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3) \[4\] [csdn博客:OpenCV保存摄像头视频和视频文件操作实战(附Python源码)](https://blog.csdn.net/jiebaoshayebuhui/article/details/128756782)

相关推荐
www_pp_7 分钟前
# 基于 OpenCV 的人脸识别实战:从基础到进阶
人工智能·opencv·计算机视觉
蹦蹦跳跳真可爱5892 小时前
Python----计算机视觉处理(Opencv:道路检测之车道线拟合)
开发语言·人工智能·python·opencv·计算机视觉
写代码的小王吧3 小时前
【安全】Java幂等性校验解决重复点击(6种实现方式)
java·linux·开发语言·安全·web安全·网络安全·音视频
新知图书5 小时前
OpenCV销毁窗口
人工智能·opencv·计算机视觉
yunteng5217 小时前
音视频(四)android编译
android·ffmpeg·音视频·x264·x265
乙酸氧铍8 小时前
OpenCV 实现对形似宝马标的黄黑四象限标定位
人工智能·python·opencv·计算机视觉·光学定位·光学识别·四象限标
jndingxin8 小时前
OpenCV 图形API(13)用于执行两个矩阵(或图像)逐元素乘法操作的函数mul()
人工智能·opencv
zhuxian200911 小时前
ffmpeg音频分析
ffmpeg·音视频
AI服务老曹13 小时前
机器学习算法能够自动学习并使用不同条件下的变化趋势,确保预测结果的准确性的智慧地产开源了
运维·学习·开源·音视频
花落已飘13 小时前
ffmpeg基础知识入门
ffmpeg·音视频