【Python】ffmpeg模塊處理視頻、音頻信息

多媒體視頻處理工具FFmpeg有非常強大的功能包括視頻採集功能、視頻格式轉換、視頻抓圖、給視頻加水印等。
這裏主要介紹一下FFmpeg的一些常用參數,並且主要功能:截取視頻、視頻格式轉換、視頻分辨率轉換、視頻合併、提取視頻、提取音頻、提取圖片、視頻水印處理等。

ffmpeg參數:

一、公共參數:
-i 設定輸入流 
-y 表示如果輸出文件已存在則覆蓋
-f 設定輸出格式  指定文件格式(ffmpeg -formats可以列舉支持的format)
-b 指定視頻和音頻加起來的碼率
-q:v表示存儲jpeg的圖像質量,一般2是高質量。 格式:-q:v 2 -f image2
-ss 開始時間                                                         格式:00:00:02或者2.00
-t 表示截取多長的時間(持續時間)
-to 截到視頻的哪個時間點結束(時間點)
-async 多少楨同步
-max_muxing_queue_size  增大容器封裝隊列大小(視頻處理出現報錯時) 格式:-max_muxing_queue_size 1024

二、視頻參數
-re 根據文件真實的幀率來讀取文件,生成實時刷新的直播流  格式:-re
-r 設定幀速率,單位爲Hz,默認爲25                  格式:-r 29(表示每一秒幾幀)
-s 設定畫面的寬與高(幀尺寸)                        格式:-s 720x1280
–b:v 表示視頻平均碼率(更改碼率的速度最慢)       格式:–b:v 1500k
-bufsize 用於設置碼率控制緩衝器的大小             格式:-bufsize 1500k 
-maxrate 碼率波動,不要超過一個閾值               格式:-maxrate 1800k
-minrate 碼率波動,不要低於一個閾值               格式:-minrate 1300k
-aspect 設定畫面的比例                                      格式:-aspect 16:9 或者-aspect 1.7777
-vf scale=iw*0.9:ih*0.9或者-vf scale=720:1280或者scale=720:-1     -vf是調用video filter,這裏用了scale filter來改變分辨率進行轉碼
-vn 不處理視頻 
-vcodec 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器  -c:v效果一樣
-vcodec copy 表示使用跟原視頻一樣的視頻編解碼器。
-c:v libx264 表示對原視頻進行libx264重新編碼
-pass n 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計信息,第二遍生成精確的請求的碼率  格式:-pass 1
-bsf:v h264_mp4toannexb=-vbsf h264_mp4toannexb   把mp4格式轉換爲ts格式

三、音頻參數
–ar 表示音頻採樣率,單位爲Hz;               格式:–ar 44100
–ab 音頻數據流量 位速                       格式:–ab 128k
-ac 設定聲音的Channel數 
-acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器  -c:a效果一樣
-acodec copy表示使用跟原視頻一樣的音頻編解碼器。
-an 不處理音頻
-vol 200%的音量              格式:-vol 200

注意一個問題,ffmpeg 在切割視頻的時候無法做到時間絕對準確,因爲視頻編碼中關鍵幀(I幀)和跟隨它的B幀、P幀是無法分割開的,否則就需要進行重新幀內編碼,會讓視頻體積增大。所以,如果切割的位置剛好在兩個關鍵幀中間,那麼 ffmpeg 會向前/向後切割,所以最後切割出的 chunk 長度總是會大於等於應有的長度。

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