前言

最近在项目中遇到了这样一个需求,要求读取视频,根据视频帧数剪辑出多个时长相对固定的视频片段(如第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视频剪辑,从一个长视频中截取多个视频片段相关推荐

  1. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...

  2. python 短视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频

    这里将告诉您视频剪辑什么鬼?Python 带你高效创作短视频,具体完成步骤: 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪 ...

  3. python ffmpeg剪辑视频_视频剪辑什么鬼?Python 带你高效创作短视频

    原标题:视频剪辑什么鬼?Python 带你高效创作短视频 本文转自『AirPython』 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众 ...

  4. 视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享

    视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享 短视频的火热程度自然不用说,而这大概也是越来越多的人开始做短视频的原因.不过对于大多数的人来说,学习短视频剪辑,其实都是自学,这就导致很多人可能都还 ...

  5. java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量

    java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量 本工具简单介绍 使用方式 效果展示 工具源码 本工具简单介绍 先强调下,本工具可以直接上手使用. 本来ffmpeg就可以支持很多功 ...

  6. 算法:一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度

    一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度. 如:uyuy 11 ikkhkhkhk kkj,结果:9 最暴力方案1(没分,只能用于验证其他方案结果正确性): public s ...

  7. 计算机专业可以当剪辑师,北京剪辑短视频(剪辑师一个月能拿多少工资)

    北京剪辑短视频,茫茫然然,北京视频剪辑培训就是那照亮前路的明灯,做影视剪辑需要什么样的电脑,剪辑师一个月能拿多少工资,影视剪辑步骤释义,视频剪辑难不难学代表着缕缕光束指引前行. 1.做影视剪辑需要什么 ...

  8. 他是这么解决视频版权的,南京小伙做视频剪辑,一个月赚了7k多

    今天的这期内容非常重要,最近有很多同学都在问大周关于影视剪辑这方面还能不能做呢? 答案其实是可以的,我们在平时刷视频的时候还能不能刷到那些影视视频作品呢? 是可以刷到的吧,可以刷到就说明还能做,很多同 ...

  9. python自动视频剪辑_一个Python写的视频剪辑软件,好用!

    某天想剪个视频玩玩,使用的 Pr,真的难用,不但卡,还慢,不适合普通用户使用.但我知道 ffmpeg 这个命令行工具可以剪辑视频,搜了下命令格式,分分钟搞定了.但 ffmpeg 这种工具不太直观,如果 ...

最新文章

  1. Nmap源码分析(操作系统扫描)
  2. HQL的使用和limit的替代
  3. 限制Apache日志access.log、error.log文件大小
  4. 一个迄今为止最快的并发键值存储库FASTER诞生
  5. 性能测试总结(一)---基础理论篇(转载)
  6. LeetCode 605 种花问题
  7. (How to)Windows Live Writer插入Latex公式(补充)
  8. 【Sqoop】sqoop导入导出
  9. Servlet过滤器Filter和监听器
  10. 驱动模块的安装与卸载指令
  11. 组装台式计算机的相关要求,台式电脑的组装配置清单
  12. 冰冻三尺,非一日之寒。数据解析——xpath(4)
  13. android 按钮边距,安卓button代码初始化默认内边距问题
  14. Excel数据分析从入门到精通(九)28个图表之KPI分析
  15. linux 拷贝目录报错,Linux复制文件时出现omitting directory错误怎么办
  16. 绝对干货丨最值钱的20个管理工具,会用一半的已年薪百万
  17. 软件测试中系统的功能测试,软件测试中的43个功能测试点(下)
  18. 蚁群算法解决tsp问题python_蚁群算法在解决TSP问题中的应用
  19. 怎么在自己的网站中插入网易云播放器
  20. 深度解读Coatue:向加密行业转舵的「老虎环球基金」

热门文章

  1. 印象笔记卸载不完全导致重装失败解决方法
  2. 温故知新(十)——UART
  3. 《一人之下》佳句欣赏
  4. mac下通过gcc命令手动编译动态链接库示例
  5. labview 上位机软件开发——实用技巧1000例
  6. 最简单的解释-Java父类和子类的初始化顺序
  7. AWS EC2文件上传
  8. linux网卡EC20型号,Linux系统下使用4G模块EC20实现拨号上网
  9. 15年终结 16计划+移动设备设计趋势思维导图模板
  10. ipad画画什么触控笔最好?适合Ipad高性价比电容笔推荐