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 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python 探针的实现原理
Apr 23 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python 操作MySQL详解及实例
Apr 30 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
Python 的字典(Dict)是如何存储的
Jul 05 Python
python config文件的读写操作示例
Sep 27 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python 管理系统实现mysql交互的示例代码
Dec 06 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
详谈PHP编码转换问题
2015/07/28 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
js实现自定义路由
2017/02/04 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
解析vue中的$mount
2017/12/21 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
Python在线运行代码助手
2016/07/15 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
Python阶乘求和的代码详解
2020/02/14 Python
高一化学教学反思
2014/02/05 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
三八节祝酒词
2015/08/11 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers