CV2视频剪辑,从一个长视频中截取多个视频片段
前言
最近在项目中遇到了这样一个需求,要求读取视频,根据视频帧数剪辑出多个时长相对固定的视频片段(如第100、575、920帧的前后50帧)。该需求通过cv2实现,前后大约修改过三次:1、第一种方法是通过多次重复读取视频,每次截取相应的帧数片段,这种方法最为简单但显然效率极其低下,在较长视频处理的场景下是不可接受的;2、第二种方法是读取视频,将需要截取的视频图像保存到列表中,再通过videowriter将图像写入,这种方法处理短时长视频可以接受,在处理较长且分辨率大的视频时有内存溢出风险;3、第三种方法为创建多个videowriter,本文主要介绍该方法,代码如下
`
多个视频片段生成
import cv2
import datetimedef video_cut(frame_list,video_path,save_path):''':param frame_list: 需要剪辑视频的帧数定位列表,如需要剪辑100,500,800的前60帧后40帧,输入[100,500,800]:param video_path: 待剪辑视频路径:param save_path: 视频片段保存路径'''cap = cv2.VideoCapture(video_path)fourcc = cv2.VideoWriter_fourcc(*'mp4v')#FPS = 20 # int(round(cap.get(cv2.CAP_PROP_FPS)))frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))output_list = []frame_id = 0for i in range(len(frame_list)):img_pre_fix = '_%s' % datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')output_list.append(cv2.VideoWriter(save_path + '/' + 'video' + '_' + str(frame_list[i]) + img_pre_fix + '.mp4',fourcc, 20,(frame_width, frame_height)))print('video cut generate')while True:ret,frame = cap.read()if not ret:breakframe_id += 1#print(frame_id)for num,id in enumerate(frame_list):if id-60 <=frame_id<=id+40: # 设置为定位frame的前60帧后40帧output_list[num].write(frame)cap.release()if __name__ == '__main__':frame_list = [100,420,650] # 定位帧数frame idvideo_path = r'E:\test.mp4' # 视频路径save_path = r'F:\save_path' # 存储路径video_cut(frame_list=frame_list,video_path=video_path,save_path=save_path)
总结
本文主要是作者对自己学习工作过程中的一个记录,也希望为正遇到类似问题的朋友提供一个参考。
CV2视频剪辑,从一个长视频中截取多个视频片段相关推荐
- moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...
- python 短视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频
这里将告诉您视频剪辑什么鬼?Python 带你高效创作短视频,具体完成步骤: 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪 ...
- python ffmpeg剪辑视频_视频剪辑什么鬼?Python 带你高效创作短视频
原标题:视频剪辑什么鬼?Python 带你高效创作短视频 本文转自『AirPython』 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众 ...
- 视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享
视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享 短视频的火热程度自然不用说,而这大概也是越来越多的人开始做短视频的原因.不过对于大多数的人来说,学习短视频剪辑,其实都是自学,这就导致很多人可能都还 ...
- java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量
java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量 本工具简单介绍 使用方式 效果展示 工具源码 本工具简单介绍 先强调下,本工具可以直接上手使用. 本来ffmpeg就可以支持很多功 ...
- 算法:一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度
一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度. 如:uyuy 11 ikkhkhkhk kkj,结果:9 最暴力方案1(没分,只能用于验证其他方案结果正确性): public s ...
- 计算机专业可以当剪辑师,北京剪辑短视频(剪辑师一个月能拿多少工资)
北京剪辑短视频,茫茫然然,北京视频剪辑培训就是那照亮前路的明灯,做影视剪辑需要什么样的电脑,剪辑师一个月能拿多少工资,影视剪辑步骤释义,视频剪辑难不难学代表着缕缕光束指引前行. 1.做影视剪辑需要什么 ...
- 他是这么解决视频版权的,南京小伙做视频剪辑,一个月赚了7k多
今天的这期内容非常重要,最近有很多同学都在问大周关于影视剪辑这方面还能不能做呢? 答案其实是可以的,我们在平时刷视频的时候还能不能刷到那些影视视频作品呢? 是可以刷到的吧,可以刷到就说明还能做,很多同 ...
- python自动视频剪辑_一个Python写的视频剪辑软件,好用!
某天想剪个视频玩玩,使用的 Pr,真的难用,不但卡,还慢,不适合普通用户使用.但我知道 ffmpeg 这个命令行工具可以剪辑视频,搜了下命令格式,分分钟搞定了.但 ffmpeg 这种工具不太直观,如果 ...
最新文章
- Nmap源码分析(操作系统扫描)
- HQL的使用和limit的替代
- 限制Apache日志access.log、error.log文件大小
- 一个迄今为止最快的并发键值存储库FASTER诞生
- 性能测试总结(一)---基础理论篇(转载)
- LeetCode 605 种花问题
- (How to)Windows Live Writer插入Latex公式(补充)
- 【Sqoop】sqoop导入导出
- Servlet过滤器Filter和监听器
- 驱动模块的安装与卸载指令
- 组装台式计算机的相关要求,台式电脑的组装配置清单
- 冰冻三尺,非一日之寒。数据解析——xpath(4)
- android 按钮边距,安卓button代码初始化默认内边距问题
- Excel数据分析从入门到精通(九)28个图表之KPI分析
- linux 拷贝目录报错,Linux复制文件时出现omitting directory错误怎么办
- 绝对干货丨最值钱的20个管理工具,会用一半的已年薪百万
- 软件测试中系统的功能测试,软件测试中的43个功能测试点(下)
- 蚁群算法解决tsp问题python_蚁群算法在解决TSP问题中的应用
- 怎么在自己的网站中插入网易云播放器
- 深度解读Coatue:向加密行业转舵的「老虎环球基金」