moviepy音視頻剪輯基類VideoClip的write_videofile方法codec、bitrate、preset、audio_bitrate、audio_nbytes等參數的作用

☞ ░ 前往老猿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應用》。

跟老猿學Python、學5G!

☞ ░ 前往老猿Python博文目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章