程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python小工具:五分鐘處理完一天的工作量,真香

編輯:Python

文 | 豆豆

來源:Python 技術「ID: pythonall」

前幾天寫了一篇 自動化處理短視頻素材 的文章,有小伙伴說直接用 python 的 ffmpeg 庫更香,剛好今天領導安排了一個給視頻批量加水印的任務,咱就拿它來試試水。

簡介

FFmpeg 是一套強大的音視頻處理程序,也是很多音視頻軟件的基礎,事實上,FFmpeg 已經成為業界音視頻處理的標准了。但命令行使用 FFmpeg 是有一定學習成本的,而 ffmpeg-python 庫則很好的解決了這個問題。

通過 pip 簡單安裝之後即可在 python 代碼中使用 ffmpeg。

pip3 install ffmpeg-python

獲取視頻信息

path = 'main.mp4'
probe = ffmpeg.probe(path)
video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
width = int(video_stream['width'])
height = int(video_stream['height'])
print(width, height)

我們可以通過 stream 來獲取視頻的一些基礎信息,比如尺寸、時長、幀率等。

鏡像處理

# 左右鏡像
ffmpeg.input(path).hflip().output('output.mp4').run()
# 上下鏡像
ffmpeg.input(path).vflip().output('output.mp4').run()

可以簡單的理解為英文單詞橫向(horizontal)和縱向(vertical)的首字母縮寫。

添加水印

main = ffmpeg.input(path)
logo = ffmpeg.input('logo.png')
ffmpeg.filter([main, logo], 'overlay', 0, 500).output('out.mp4').run()

這條命令的意思是,將 logo 水印圖片放置在 main 視頻的上方,坐標為(0,500)。可以把視頻的左上角理解為原點(0,0)的位置,從原點向右和向下分別表示 x 軸和 y 軸。

當然,如果把 logo 做的足夠大,比視頻還要大,然後換一下雙方的位置,那就會變成將視頻放到 logo 上了,其實相當於給視頻加了一個背景圖。

ffmpeg.filter([logo, main], 'overlay', 0, 500).output('out.mp4').run()

視頻截取

ffmpeg.input(path).trim(start_frame=10,end_frame=20).output('out3.mp4').run()

這條命令看起來就很容理解,start_frame 和 end_frame 分別代表起始結束幀。

視頻拼接

base = ffmpeg.input(path)
ffmpeg.concat(
    base.trim(start_frame=10, end_frame=20),
    base.trim(start_frame=30, end_frame=40),
    base.trim(start_frame=50, end_frame=60)
).output('out3.mp4').run()

視頻拼接使用 concat 函數即可。

總結

今天給大家分享了一個 python 處理視頻的不錯的庫,希望可以給大家的工作/副業帶來一些效率上的提升。

PS:公號內回復「Python」即可進入Python 新手學習交流群,一起 100 天計劃!

老規矩,兄弟們還記得麼,右下角的 “在看” 點一下,如果感覺文章內容不錯的話,記得分享朋友圈讓更多的人知道!

代碼獲取方式

識別文末二維碼,回復:豆豆


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved