Python利用FFmpeg为Reddit视频生成缩略图

星野
星野
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何在Python中为Reddit视频帖子生成缩略图。由于Reddit要求上传视频时必须提供缩略图,否则将显示默认Logo,作者使用ffmpy库封装FFmpeg命令,通过提取视频第一帧并保存为JPG格式,实现了自动化生成缩略图的功能,简化了发帖流程。

Reddit API与机器人生态

目前Reddit平台上存在大量机器人账号,官方对此持支持态度。只要内容并非无意义灌水,机器人的活跃有助于提升社区热度并吸引真实用户参与讨论。例如每周固定的“烦人的星期二”帖子,就是用户吐槽生活琐事的热区。为此,Reddit提供了一套完整的开发者API,且相关SDK易于获取,官方提供了详尽的语言支持列表,开发者可根据偏好自由选择。

视频上传与FFmpeg引入

脚本编写本身并不复杂,真正的难点在于视频上传环节。Reddit对上传有特定要求:除了帖子标题和视频文件路径外,还必须提供一张缩略图。若未提供,SDK会自动使用Reddit的Logo作为视频封面。为了解决这一问题,我们需要借助FFmpeg工具。

安装FFmpeg。

FFmpeg安装


brew install ffmpeg

Python提供了FFmpeg的封装库ffmpy,其原理是将传入的参数转换为命令行指令,并通过subprocess模块执行。参考官网示例,我们可以进行如下调用。

使用ffmpy库


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

这本质上等同于在命令行中执行相应的FFmpeg命令。


ffmpeg -i input.mp4 output.avi

生成视频缩略图。

这里编写了一个简单函数,接收视频路径作为输入,提取第一帧画面,并将其保存为JPG格式文件。

Python生成缩略图实现


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 相关产品和应用

全部下载

专题列表