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的re模块应用实例
Sep 26 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
Python中判断输入是否为数字的实现代码
May 26 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python中的错误如何查看
Jul 08 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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中文字符截取防乱码
2008/03/28 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python 探针的实现原理
2016/04/23 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python中join()方法介绍
2018/10/11 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python 字符串池化的前提
2020/07/03 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
什么是跨站脚本攻击
2014/12/11 面试题
非常详细的C#面试题集
2016/07/13 面试题
税务会计岗位职责
2014/02/18 职场文书
水知道答案观后感
2015/06/08 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
MySQL查询日期时间
2022/05/15 MySQL