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 相关文章推荐
Python判断操作系统类型代码分享
Nov 22 Python
python实现给数组按片赋值的方法
Jul 28 Python
Python字符串格式化输出方法分析
Apr 13 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python运行DLL文件的方法
Jan 17 Python
Python处理PDF与CDF实例
Feb 26 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
python import 上级目录的导入
Nov 03 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 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
php生成EXCEL的东东
2006/10/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
js表单验证实例讲解
2016/03/31 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python异常学习笔记
2015/02/03 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
副主任竞聘演讲稿
2014/08/18 职场文书
律师授权委托书范本
2014/10/07 职场文书
雷锋的观后感
2015/06/10 职场文书