☞ ░ 前往老猿Python博文目錄 ░
moviepy音視頻剪輯模塊的視頻剪輯基類write_videofile方法用於將視頻剪輯輸出到文件,調用語法如下:
write_videofile(self, filename, fps=None, codec=None,
bitrate=None, audio=True, audio_fps=44100,
preset="medium",
audio_nbytes=4, audio_codec=None,
audio_bitrate=None, audio_bufsize=2000,
temp_audiofile=None,
rewrite_audio=True, remove_temp=True,
write_logfile=False, verbose=True,
threads=None, ffmpeg_params=None,
logger='bar')
部分參數作用在moviepy官方文檔中沒有說明,經查閱相關源代碼和驗證測試,確認相關參數功能功能如下。
參數說明如下:
- filename:視頻文件名,只要是ffmpeg支持的視頻文件如 .ogv, .mp4, .mpeg, .avi, .mov等都可以
- fps:幀率,每秒編碼的幀數
- codec:用於圖像編碼的編解碼器,可以是ffmpeg支持的任何編解碼器。如果文件名的擴展名爲“.mp4”、“.ogv”、“.webm”,則會相應地設置編解碼器,但如果不喜歡默認值,則仍可以進行設置。對於其他擴展名,必須相應地設置輸出文件名。一些常用的編解碼器如下:
- ‘libx264’:視頻壓縮效果好的一款編解碼器,MP4的缺省編解碼器,視頻質量通過bitrate參數調節
- ‘mpeg4’:一種可選的MP4編解碼器,可以替代’libx264’,可以獲得更好的視頻質量
- ‘rawvideo’:完美的視頻質量,但文件會巨大,對應視頻文件爲’.avi’
- ‘png’:完美的視頻質量,對應視頻文件爲’.avi’,但文件大小比’rawvideo’小
- ‘libvorbis’:是一種完全開放、免費的編解碼器,有不錯的視頻格式,但是要不廣,對應視頻文件爲’.ogv’
- ‘libvpx’:一種很適合在HTML5中使用的網絡視頻輕量級編開源解碼器,對應視頻文件爲’.webm’
- bitrate:輸出視頻的比特率,也即碼率BPS(Bits Per Second),指每秒傳送的數據位數
- audio:可以爲True、False或文件名,如果True且剪輯附加了音頻,則音頻將作爲視頻的音頻保存,如果爲False則不保存音頻,如果爲音頻文件名則將此音頻文件將作爲視頻的音頻
- audio_fps:聲音的採樣頻率
- preset:設置FFMPEG用於優化壓縮的時間。字符串類型,可選值有:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、 placebo。請注意,這不會影響視頻的質量,隻影響視頻文件的大小。所以如果趕時間而文件大小不是很重要可以設置爲ultrafast
- audio_nbytes:音頻的採用的位數,對應基於字節爲單位就是聲道數;
- audio_codec:音頻解碼器,例如’.mp3’的’libmp3lame’、‘ogg’的’libvorbis’、 ‘m4a’的’libfdk_aac’、 ‘pcm_s16le’ 16位聲音和’pcm_s32le’的32位聲音。默認值爲“libmp3lame”,除非視頻擴展名爲“ogv”或“webm”,在這2種情況下,默認值爲“libvorbis”。
- audio_bitrate:音頻比特率,字符串形式,如“50k”、“500k”、“3000k”,用於將確定輸出文件中音頻的大小/質量。請注意,這主要是一個指示性目標,輸出文件的比特率不一定會按此設置。
- audio_bufsize:音頻緩衝區大小
- temp_audiofile:如果輸出由音頻,則該參數用於指定要生成併合併到電影中的臨時音頻文件的名稱,如果沒有指定則用缺省模式的臨時文件名
- rewrite_audio:這個參數目前沒有作用,估計是爲了兼容以前的版本
- remove_temp:是否刪除臨時文件
- write_logfile:如果爲True,將爲音頻和視頻輸出記錄日誌文件。日誌文件將以“.log”結尾,包含輸出文件的名稱
- verbose:已經廢棄使用,留下來是爲了兼容性,以前用於打開/關閉消息。現在使用logger=None。
- threads:用於ffmpeg的線程數,可以加快多核計算機上視頻輸出的速度
- ffmpeg_params:需額外傳遞的其他ffmpeg參數,用列表傳遞,形如:[’-option1’,‘value1’,’-option2’,‘value2’]
- logger:字符串類型,"bar"表示進度條、None 表示不設置、或任何程序日誌記錄器的名字
更多關於VideoClip的屬性和方法請參考《moviepy音視頻剪輯:視頻剪輯基類VideoClip的屬性及方法詳解》(免費文章)或《moviepy音視頻剪輯:視頻剪輯基類VideoClip詳解》(付費專欄文章,但內容更全、案例更多)。
更多moviepy的介紹請參考《PyQt+moviepy音視頻剪輯實戰文章目錄》或《專欄:使用PyQt開發圖形界面Python應用》。