Python 如何利用ffmpeg 處理視頻素材
前言
第一次處理視頻素材可以手動用剪映來處理,然後再用代碼進行自動化處理,不然連朝哪個方向自動化處理可能都不知道
那清楚處理流程之後,怎麼用Python來處理視頻素材呢?
ffmpeg!
ffmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源計算機程序
使用這個神器,便可以處理各種視頻素材內容,極度舒適
下面一行來分享一下如何使用這個神器
一、安裝
首先需要在ffmpeg的官網下載最新版本,不然可能會出現各種奇怪的問題
因為ffmpeg是個命令行工具,所以安裝時需要註意將ffmpeg加入環境變量中,安裝完之後,可以在終端裡輸入下面命令查看是否安裝成功
ffmpeg -version
二、subprocess調用
因為ffmpeg是命令行工具,可以通過subprocess的調用來使用
先查看使用文檔,例如拆分視頻文件的命令是:
ffmpeg -i [filename] -ss [starttime] -t [length] -c copy [newfilename]
- i 為需要裁剪的文件
- ss 為裁剪開始時間
- t 為裁剪結束時間或者長度
- c 為裁剪好的文件存放
好瞭,用 Python 寫一個調用:
import subprocess as sp def cut_video(filename, outfile, start, length=90): cmd = "ffmpeg -i %s -ss %d -t %d -c copy %s" % (filename, start, length, outfile) p = sp.Popen(cmd, shell=True) p.wait() return
- 定義瞭一個函數,通過參數傳入 ffmpeg 需要的信息
- 將裁剪命令寫成一個字符串模板,將參數替換到其中
- 用 subprocess 的 Popen 執行命令,其中參數 shell=True 表示將命令作為一個整體執行
- p.wait() 很重要,因為裁剪需要一會兒,而且是另起進程執行的,所以需要等待執行完成再繼續執行後面工作,不然可能找不到文件
三、ffmpy3
ffmpy3是ffmpeg的python包裝器,以可以用這個包來進行處理視頻
需要先用pip進行安裝
pip install ffmpy3
例如修改文件格式這種操作就可以使用ffmpy3直接輸出
import ffmpy3 ff = ffmpy3.FFmpeg( inputs={'input.mp4': None}, outputs={'output.avi': None} ) ff.run()
轉碼
如果同時我們想使用不同的編解碼器重新編碼視頻和音頻,在輸出文件同時必須指定額外的輸出選項:
ff = FFmpeg( inputs={'input.ts': None}, outputs={'output.mp4': '-c:a mp2 -mpeg2video'} ) ff.cmd ff.run()
解復用
還可以將文件的音頻和視頻輸出成兩個mp4格式的文件
ff = FFmpeg( inputs={'input.ts': None}, outputs={ 'video.mp4': ['-map', '0:0', '-c:a', 'copy', '-f', 'mp4'], 'audio.mp4': ['-map', '0:1', '-c:a', 'copy', '-f', 'mp4'] } ) ff.cmd ff.run()
復用
復用就是將輸入的mp4文件和mp3文件合成同一個視頻文件
這裡使用 OrderedDict 來保留輸入的順序,以便它們與輸出選項中的流的順序相匹配:
from collections import OrderedDict inputs = OrderedDict([('video.mp4', None), ('audio_1.mp3', None), ('audio_2.mp3', None)]) outputs = {'output.ts', '-map 0 -c:v h264 -map 1 -c:a:0 ac3 -map 2 -c:a:1 mp2'} ff = FFmpeg(inputs=inputs, outputs=outputs) ff.cmd ff.run()
拆分成圖片
處理視頻素材內容還需要將視頻拆成一張張圖片,對圖片進行處理,然後再合並成視頻
在輸出的文件類型改成.png結尾即可
import ffmpy3 ff = ffmpy3.FFmpeg( inputs={'data.MP4': None}, outputs={'1/%d.png': None} ) ff.run()
四、最後
通過ffmpeg處理視頻主要還是要瞭解它的命令用法,可以在官方文檔裡進行查看
然後再去瞭解各種熱門視頻的模版,自動化生成自己想要的視頻指日可待
到此這篇關於Python 如何利用ffmpeg 處理視頻素材的文章就介紹到這瞭,更多相關Python ffmpeg 視頻素材處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python中subprocess實例用法及知識點詳解
- Python移動測試開發subprocess模塊項目實戰
- Python 如何實現批量轉換視頻音頻的采樣率
- Python實現獲取視頻時長功能
- Python常用工具之音頻調整音量