n行Python代码系列:两行代码实现视频文件转成系列图片输出

LaoYuanPython 2021-04-08 08:47:04
代码 Python 系列 两行


* ░ 老猿Python博文目录

在这里插入图片描述

一、引言

最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,推一个“n行Python代码系列”文章。

对于视频中的精彩画面,有时希望截图保存,通过截屏软件即可实现,但有时需要将视频中的画面按一定规律等间隔的输出成图片文件。

本文介绍两行代码实现将视频指定间隔输出画面到文件的方法。更多“n行Python代码系列”文章请参考免费专栏《n行Python代码系列》。

二、等时间间隔输出视频画面

要进行视频剪辑,老猿使用的Moviepy。下面代码使用的视频《粉丝记事本》,我们来每隔10秒输出一张视频画面。代码实现如下:

from moviepy.editor import *
clip = VideoFileClip(r"F:\video\fansNote1M_crop.mp4")
clip.write_images_sequence(r"F:\video\fansNote%02d.jpg",0.1)

上述三行代码先实现Moviepy模块的加载、然后读入视频文件、进行截图输出到指定系列文件。以上三行代码也可以精简为如下两行:

from moviepy.editor import *
VideoFileClip(r"F:\video\fansNote1M_crop.mp4").write_images_sequence(r"F:\video\fansNote%02d.jpg",0.1)

我们来看看结果:

该视频时长仅1分钟,可以看到输出了7个文件,前3张输出的图片文件内容如下:


三、背景知识

3.1、moviepy简介

要实现视频剪辑,老猿使用了moviepy库。

MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、连接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果。

它可以读写最常见的视频格式,包括GIF。MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型至少包括:*.mp4 *.wmv *.rm *.avi *.flv *.webm *.wav *rmvb。

MoviePy安装非常简单,使用pip安装时,请将站点指向国内的镜像站点,否则下载很慢或者下载不下来,老猿使用清华的镜像,指令是:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy

3.3、相关函数

上述代码涉及到的相关函数包括VideoFileClip、write_images_sequence,VideoFileClip在《n行Python代码系列 https://blog.csdn.net/laoyuanpython/category_10858655.html》专栏的前面几篇博文中已经介绍,在此不重复介绍了。

write_images_sequence函数

write_images_sequence函数用于将t指定时刻位置的帧保存到指定图像文件。调用语法如下:
write_images_sequence(self, nameformat, fps=None, verbose=True,withmask=True, logger='bar')

  • nameformat:输出格式和文件名规则,指定了文件系列序号的数字格式和图片类型扩展名的文件名,例如文件名的“frame%03d.png”表示文件名开头为“frame”,后面“%03d”表示文件顺序号以3位数字来顺序编号,文件名后缀“png”表示编码格式为PNG。文件名格式还可以带路径方式,如“目录名\f%04d.jpeg”等。但要求目录名必须已存在,另外如果输出的文件数比设置的序列号范围要多,则会自动往上加1扩展,直到所有内容都输出完成
  • fps:每秒输出帧数,如果没指定则按剪辑的fps进行输出,可以为小数
  • withmask:如果withmask为True,对应帧的遮罩会被写入图片的alpha通道层,仅对PNG图像有效
  • verbose:是否输出处理信息
  • logger:字符串类型,"bar"表示进度条、None 表示不设置、或任何程序日志记录器的名字

四、小结

本文介绍了使用Python+Moviepy 两行代码实现将视频输出成系列图片画面到多个文件的方法,并介绍了moviepy的功能及安装以及相关处理的关键函数及语法。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

更多相关moviepy知识的介绍请参考 Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

关于老猿的付费专栏

  1. 付费专栏《 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《 moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》;
  3. 付费专栏《 OpenCV-Python初学者疑难问题集》为《 OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《 OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

老猿Python,跟老猿学Python!

* ░ 前往老猿Python博文目录

版权声明
本文为[LaoYuanPython]所创,转载请带上原文链接,感谢
https://blog.csdn.net/laoyuanpython/article/details/114938000

  1. Pandas-二进制操作
  2. python入门教程14-01 (python语法入门之python内存泄露)
  3. Web4 - get flag through Python
  4. python-web5
  5. Pandas binary operation
  6. python入门教程13-06 (python语法入门之视图、触发器、事务、存储过程、函数)
  7. python入门教程13-07 (python语法入门之ORM框架SQLAlchemy)
  8. python入门教程13-08 (python语法入门之python索引原理与慢查询优化)
  9. 定投指数到底能不能赚钱?Python 来告诉你答案
  10. Python入门学习之:10分钟1500访问量
  11. Getting started with Python 14-01
  12. 用 Python 画哆啦 A 梦
  13. Python 图表利器 pyecharts
  14. 用 Python 抓取公号文章保存成 HTML
  15. Introduction to Python 13-06 (view, trigger, transaction, stored procedure, function of introduction to Python syntax)
  16. Getting started with Python 13-07 (ORM framework Sqlalchemy for getting started with Python syntax)
  17. Introduction to Python 13-08
  18. Can fixed investment index make money? Python will tell you the answer
  19. Introduction to Python: 1500 visits in 10 minutes
  20. 用 Python 获取股市交易数据
  21. Drawing Doraemon in Python
  22. Python charts
  23. 用 Python 来了解一下《安家》
  24. 用 Python 抓取公号文章保存成 PDF
  25. 用 Python 生成炫酷二维码及解析
  26. Using Python to grab articles with public number and save them as HTML
  27. Getting stock market trading data with Python
  28. Learn about settle down in Python
  29. Using Python to grab articles with public number and save them as PDF
  30. Using Python to generate cool two dimensional code and analysis
  31. 20210225-1 Python错误与异常
  32. 20210225-1 Python errors and exceptions
  33. 使用Python拆分、合并PDF
  34. Using Python to split and merge pdf
  35. 真工程师:20块钱做了张「名片」,可以跑Linux和Python
  36. Implementation of LSB steganography based on MATLAB and python
  37. Real Engineer: 20 yuan to make a "business card", can run Linux and python
  38. python修改微信和支付宝步数
  39. Python changes WeChat and Alipay steps
  40. Python空间分析| 01 利用Python计算全局莫兰指数(Global Moran's I)
  41. Python spatial analysis | 01 using Python to calculate global Moran's index
  42. python入门教程13-05 (python语法入门之数据备份、pymysql模块)
  43. Introduction to Python 13-05 (data backup and pymysql module of introduction to Python syntax)
  44. pandas如何操作Excel?还不会的,看此一篇足矣
  45. How does panda operate excel? Not yet. This is enough
  46. 用python连接数据库模拟用户登录
  47. Using Python to connect database to simulate user login
  48. python入门教程13-04 (语法入门之记录相关操作)
  49. Introduction to Python 13-04
  50. python入门教程13-03 (python语法入门之表相关操作)
  51. Introduction to Python 13-03
  52. python的多线程的网络爬虫,待改进
  53. Python multithreaded web crawler, to be improved
  54. 常见加密算法的Python实现:
  55. Python implementation of common encryption algorithms:
  56. python刷题-核桃的数量
  57. Number of walnuts
  58. Python爬虫知乎文章,采集新闻60秒
  59. Python crawler knows articles and collects news for 60 seconds
  60. Python爬虫知乎文章,采集新闻60秒