ffmpeg与opencv-python处理视频

安装

opencv

pip install opencv-python

FFmpeg

1.下载 FFmpeg

  • 访问FFmpeg官方网站。
  • 选择 “Windows builds from gyan.dev” 链接,这会带您到一个包含最新版本 FFmpeg Windows 构建的页面。
  • 选择一个适合您系统的版本(例如,32位或64位),并下载 ZIP 文件。

2.解压文件

  • 将下载的 ZIP 文件解压到选择的文件夹中。

3.添加 FFmpeg 到您的环境变量

  • 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 环境变量。
  • 在 “系统变量” 部分,找到并选择变量 “Path”,然后点击 “编辑”。
  • 点击 “新建” 并添加 FFmpeg bin 目录的路径(这是您之前解压的文件夹中的 bin 文件夹)。
  • 点击 “确定” 保存更改。

4.验证安装

  • 打开命令提示符(CMD)并输入 ffmpeg -version。
  • 如果安装成功,它将显示 FFmpeg 的版本信息。

视频嵌入

ffmpeg

ffmpeg -i pressure_ratate.avi -i line_chat_rotate.avi -filter_complex "[1:v]scale=iw*0.28:ih*0.35[second_resized];[0:v][second_resized]overlay=main_w-overlay_w:main_h-overlay_h" -codec:a copy rotate.avi
  • ffmpeg: 这是调用 ffmpeg 工具的命令。ffmpeg 是一个非常强大的多媒体处理工具,用于处理视频和音频文件。
  • -i pressure_ratate.avi: 这个参数 -i 用于指定输入文件,这里第一个输入文件是 pressure_ratate.avi。
  • -i line_chat_rotate.avi: 这里使用第二个 -i 参数来指定第二个输入文件 line_chat_rotate.avi。
  • -filter_complex: 这个参数用于应用复杂的过滤器图。在这种情况下,它用于将两个视频合并为一个。
  • [1:v]scale=iw0.28:ih0.35[second_resized];: 这部分是过滤器图的一个子部分。[1:v] 指的是第二个输入文件(line_chat_rotate.avi)的视频流。scale=iw0.28:ih0.35 是缩放过滤器,用于将视频的宽度和高度分别缩放到原始尺寸的 28% 和 35%。缩放后的视频流被标记为 [second_resized]。
  • [0:v][second_resized]overlay=main_w-overlay_w:main_h-overlay_h: 这是过滤器图的另一个子部分。它使用了 overlay 过滤器来将 [second_resized](即缩放后的第二个视频)叠加到第一个视频流(pressure_ratate.avi)上。叠加位置设置为 main_w-overlay_w:main_h-overlay_h,这意味着第二个视频将被放置在第一个视频的右下角
  • -codec:a copy: 这个参数指定要复制音频流而不进行重新编码。
  • rotate.avi: 这是输出文件的名称。

opencv

import cv2
import os# 路径设置
line_chat_video_path = r'vedio1.avi'
pressure_video_path = r'vedio2.avi'
output_video_path = r'output.avi'# 读取视频
line_chat_cap = cv2.VideoCapture(line_chat_video_path)
pressure_cap = cv2.VideoCapture(pressure_video_path)# 获取pressure视频的属性
fps = pressure_cap.get(cv2.CAP_PROP_FPS)
width = int(pressure_cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(pressure_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 创建视频写入器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))# 计算叠加视频的大小和位置
scale_factor = 0.4  # 可以根据需要调整缩放因子
small_width = int(width * scale_factor)
small_height = int(height * scale_factor)
pos_x = width - small_width
pos_y = height - small_heightwhile pressure_cap.isOpened() and line_chat_cap.isOpened():ret1, frame1 = pressure_cap.read()ret2, frame2 = line_chat_cap.read()if not ret1 or not ret2:break# 缩放 line_chat 视频的帧frame2 = cv2.resize(frame2, (small_width, small_height))# 将 line_chat 的帧叠加到 pressure 的帧frame1[pos_y:pos_y+small_height, pos_x:pos_x+small_width] = frame2# 写入帧到输出视频out.write(frame1)# 释放资源
pressure_cap.release()
line_chat_cap.release()
out.release()

图片合成视频

import cv2
import osimages = []path= r'./images'
for i in range(201):s = 'image{t}_0.png'.format(t=i)images.append(path+ '/' + s)video_name = r'vedio.avi'# 设定帧率
fps = 2# 读取第一张图片确定视频分辨率
frame = cv2.imread(images[0])
height, width, layers = frame.shape# 创建视频写入器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video = cv2.VideoWriter(video_name, fourcc, fps, (width, height))# 将图片写入视频
for image in images:video.write(cv2.flip(cv2.imread(image),1))# 释放视频写入器
video.release()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批量创建/更新外协工序采购信息记录

批量创建/更新没有物料号的外协工序采购信息记录。 执行事务代码ZME1X_OP,下载模板。(此程序可同时用于外协工序的创建和修改)创建外协工序的时候如果是新建则不需要输入采购信息记录号,如果是要更新外协工序价格,则必须输入采购信息记录号。价格单位默认为‘1’,货币代码…

IPV6技术

配置广域网接入: PPP协议:点对点协议是作为点对点链路上进行IP特性的封装协议而被开发出来的。 ppp定义了IP地址的分配和管理、异步和面向位的同步封装、网络协议复用、链路配置、链路质量测试和错误检测等标准,以及网络层地址协议和数据压缩…

智能井盖倾斜预防方案,井盖监测方式推荐

随着每个城市的日益发展,城市基础设施的重要性慢慢凸显出来。其中井盖作为城市生命线的一部分,其安全问题不容小觑。为了保障市民的出行安全和城市基础设施正常运行,智能井盖传感器作为城市生命线智能监测仪有着重要的作用,该设备…

深圳锐杰金融的慈善承诺:健康社区,绿色未来

深圳市锐杰金融投资有限公司,作为中国经济特区的中流砥柱,近年来以其杰出的金融成绩和坚定的社会责任立场引人注目。然而,这并非一个寻常的金融机构。锐杰金融正在用自己的方式诠释企业责任和慈善精神,通过一系列独特的慈善项目&a…

封装ThreadLocal

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 为什么要封装ThreadLoc…

C++入门【2-C++ 数据类型】

C 数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。 您可能需要存储各种数据类型(比如字符型、宽字符型、整型…

android实战项目之实现预览图片、视频、音频

引言 项目中经常用遇到视频、图片、音频的预览需要,采用PictureSelector第三方库,方便解决 方式 1. 引入第三方库,目前最新的版本v3.11.1。其他的版本可能用法不一样,有很多差异 implementation io.github.lucksiege:picturese…

玄子Share-CSS3 弹性布局知识手册

玄子Share-CSS3 弹性布局知识手册 Flexbox Layout(弹性盒布局)是一种在 CSS 中用于设计复杂布局结构的模型。它提供了更加高效、简便的方式来对容器内的子元素进行排列、对齐和分布 主轴和交叉轴 使用弹性布局,最重要的一个概念就是主轴与…

CoDeF视频处理——视频风格转化部署使用与源码解析

一、算法简介与功能 CoDef是作为一种新型的视频表示形式,它包括一个规范内容场,聚合整个视频中的静态内容,以及一个时间变形场,记录了从规范图像(即从规范内容场渲染而成)到每个单独帧的变换过程。针对目标…

JavaScript中的this指向:如何避免常见的this陷阱

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-this指向 目录 this指向详解 强行改变 this 指向 修改上下文中的this…

17、pytest自动使用fixture

官方实例 # content of test_autouse_fixture.py import pytestpytest.fixture def first_entry():return "a"pytest.fixture def order():return []pytest.fixture(autouseTrue) def append_first(order, first_entry):return order.append(first_entry)def test_s…

数学建模-基于机器学习的家政行业整体素质提升因素分析

基于机器学习的家政行业整体素质提升因素分析 整体求解过程概述(摘要) 家政服务业即为家庭提供多种类服务的专门行业,在第三产业中占有重要地位。但近年来,由于人工智能家居产业的发展与客户对家政从业者的要求水平不断提高,家政行业仍面对较…

graphics.h安装后依旧报错

问题解决一: 我在网上找了很多,都说找到graphics.h这个文件,放到include这个目录下,我照做了,然后 当我进行编译时,自动跳到graphics.h这个文件并出现一堆报错 问题解决二: 看一下这两个文件是…

c++拷贝与替换算法

一&#xff1a; copy 算法是 C STL 中的一个常用算法&#xff0c;用于将一个范围内的元素复制到另一个范围。它的函数原型如下&#xff1a; template<class InputIt, class OutputIt> OutputIt copy(InputIt first, InputIt last, OutputIt d_first); 这个算法接受三…

Linux库之动态库静态库

一、什么是库&#xff08;Library&#xff09; 二、库的分类 三、静态库、动态库优缺点 四、静态库的制作和使用 五、动态库的制作和使用 SO-NAME–解决主版本号之间的兼容问题 基于符号的版本机制 共享库系统路径 共享库的查找过程 有用的环境变量 gcc 编译器常用选项 Linux共…

STM32F1外部中断EXTI

目录 1. EXTI简介 2. EXTI基本结构 3. AFIO复用IO口 4. EXTI框图 5. EXTI程序配置 5.1 首先先配置要使用的GPIO口的引脚 5.2 配置AFIO数据选择器&#xff0c;选择想要中断的引脚 5.3 EXTI配置 1. EXTI简介 EXTI&#xff08;Extern Interrupt&#xff09;外部中…

思腾云计算中心 | 5千平米超大空间,基础设施完善,提供裸金属GPU算力租赁业务

2021年&#xff0c;思腾合力全资收购包头市易慧信息科技有限公司&#xff0c;正式开启云计算业务。思腾云计算中心占地2400平米&#xff0c;位于包头市稀土高新区&#xff0c;毗邻多家知名企业&#xff0c;地理位置优越&#xff0c;交通便利&#xff0c;是区内重要的信息化产业…

配置集群免密登录

文章目录 前言配置集群免密登录1. 设置主机名与 IP 地址的映射关系2. 生成 SSH 密钥对3. 将公钥复制到集群节点4. 测试免密登录5. 配置节点之间互相免密登录 总结 前言 本文介绍了如何配置集群之间免密登录&#xff0c;以便在搭建集群环境时方便地进行节点之间的通信。通过设置…

【开源】基于Vue.js的公司货物订单管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 082 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S082。} 文末获取源码&#xff0c;项目编号&#xff1a;S082。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供…

19、pytest通过mark标记测试函数

官方实例 [pytest] markers slow:marks tests as slow(deselect with -m "not slow")serial# content of test_mark.py import pytestpytest.mark.slow def test_mark_function():print("test_mark_function was invoked")assert 0解读与实操 通过使用p…