Python進階:如何實現用 Python代碼生成視頻的縮略圖

Reddit 上目前充斥着各類機器人帳號,官方也很是支持這種行爲,只要不是無心義的發言,機器人多了還能增長活躍度,吸引真人用戶一塊兒來各抒己見,好比說每週都有的一個「煩人的星期二」的帖子,就是大夥兒吐槽生活中種種煩心事的好地方,所以提供了一整套開發者 API ,同時 SDK 也不難找,這裏有一個詳盡的列表,你們能夠根據本身的語言喜愛隨意取用。
Python進階:如何實現用 Python代碼生成視頻的縮略圖ide

腳本很簡單,真正的困難在於視頻上傳, 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()

本質上是在命令行中運行code

ffmpeg -i input.mp4 output.avi

生成縮略圖視頻

簡單寫了個函數以下,給定視頻路徑,取第一幀做爲縮略圖,保存爲 jpg 格式blog

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

這樣發帖的時候同時給出視頻和圖片,一行命令搞定過去各類點擊跳轉的操做,十分方便。開發

相關文章
相關標籤/搜索