Python代码生成视频的缩略图的实例讲解


Posted in Python onDecember 22, 2019

Reddit 上目前充斥着各种机器人账号,官方也非常支持这种行为,只要不是无意义的发言,机器人多了还能增加活跃度,吸引真人用户一起来各抒己见,比如说每周都有的一个“烦人的星期二”的帖子,就是大伙儿吐槽生活中种种烦心事的好地方,因此提供了一整套开发者 API ,同时 SDK 也不难找,这里有一个详尽的列表,大家可以根据自己的语言喜好随意取用。

脚本很简单,真正的困难在于视频上传, Reddit 的要求很特殊,有了帖子标题和视频路径还不够,还需要提供一张缩略图, SDK 的文档也说了,如果不提供,就会自动上传一张他们的 Logo 作为视频的缩略图。这个时候,就需要祭出 ffmpeg 了。

安装

brew install ffmpeg

Python 也提供了 ffmpeg 的一层包装—— ffmpy ,这层包装本质上是把传入的参数翻译成命令行,调用 subprocess 来执行。比如说官网的示例

>>> import ffmpy
>>> ff = ffmpy.FFmpeg(
...   inputs={'input.mp4': None},
...   outputs={'output.avi': None}
... )
>>> ff.run()

本质上是在命令行中运行

ffmpeg -i input.mp4 output.avi

生成缩略图

简单写了个函数如下,给定视频路径,取第一帧作为缩略图,保存为 jpg 格式

import ffmpy

def get_thumbnail_from_video(video_path):
  thumbnail_path = video_path.replace(".mp4", ".jpg")
  ff = ffmpy.FFmpeg(
    inputs={video_path: None},
    outputs={thumbnail_path: ['-ss', '00:00:00.000', '-vframes', '1']}
  )
  ff.run()
  return thumbnail_path

在这里我简单假设视频的格式都为 mp4 ,所以在路径上简单替换了下,没有进行更详尽的检查。同样地,本质上是在执行

ffmpeg -i video_path -ss 00:00:00.000 -vframes 1 thumbnail_path

这样发帖的时候同时给出视频和图片,一行命令搞定过去各种点击跳转的操作,十分方便。

如果大家对以上知识点还有任何疑问,可以联系小编,感谢大家对三水点靠木的支持。

Python 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python数据类型之Set集合实例详解
May 07 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Keras实现将两个模型连接到一起
May 23 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
Matplotlib animation模块实现动态图
Feb 25 Python
Pygame Draw绘图函数的具体使用
Nov 17 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 #Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 #Python
使用python快速实现不同机器间文件夹共享方式
Dec 22 #Python
python FTP批量下载/删除/上传实例
Dec 22 #Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 #Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 #Python
python 操作hive pyhs2方式
Dec 21 #Python
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP初学入门
2006/11/19 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python用户管理系统的实例讲解
2017/12/23 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
详解Python中is和==的区别
2019/03/21 Python
python构造函数init实例方法解析
2020/01/19 Python
如何定义TensorFlow输入节点
2020/01/23 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
加拿大最大的书店:Indigo
2017/01/01 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
绿化工程实施方案
2014/03/17 职场文书
幼儿园家长寄语
2014/04/02 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书