当前位置: 首页 > news >正文

使用opencv及FFmpeg编辑视频

使用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,480while(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:breakif 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 FFmpegvideo_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源码)

http://www.lryc.cn/news/183877.html

相关文章:

  • Python3 Selenium4 chromedriver Pycharm闪退的问题
  • 019 基于Spring Boot的教务管理系统、学生管理系统、课表查询系统
  • 包装类?为什么需要包装类?
  • Java中的TCP通信(网络编程 二)
  • [架构之路-232]:目标系统 - 纵向分层 - 操作系统 - 数据存储:文件系统存储方法汇总
  • 【立体视觉(五)】之立体匹配与SGM算法
  • 苹果系统_安装matplotlib__pygame,以pycharm导入模块
  • 常用颜色的英文和十六进制
  • 计算机网络第二章思考题
  • Xcode、终端、Mason、nvim.debug环境路径
  • 2023华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】
  • [NISACTF 2022]join-us - 报错注入无列名注入
  • Raid10--Raid01介绍
  • 集群服务器
  • 大数据Doris(五):开始编译 Doris
  • Linux软硬链接和动静态库
  • Linux shell编程学习笔记6:查看和设置变量的常用命令
  • leetcode 416.分割等和子集
  • Java基于SSM+Vue的平时成绩管理系统
  • flutter开发实战-webview插件flutter_inappwebview使用
  • Selenium 浏览器坐标转桌面坐标
  • 1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计
  • Redis代替session 实现登录流程
  • 理解C++强制类型转换
  • 《TCP/IP网络编程》代码实现
  • 【Python】如何使用PyInstaller打包自己写好的代码
  • Java 线程的调度与时间片
  • Java项目-文件搜索工具
  • 记录开发中遇到关于MySQL的一些问题-MySQL版
  • 2023-10-06 LeetCode每日一题(买卖股票的最佳时机含手续费)