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删除过期文件的方法
May 29 Python
Python实现处理管道的方法
Jun 04 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
Python中元组,列表,字典的区别
May 21 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python对于requests的封装方法详解
Jan 03 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
python与mysql数据库交互的实现
Jan 06 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
一套软件测试笔试题
2014/07/25 面试题
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
班级班风口号大全
2015/12/25 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python