ffmpeg格式轉換基礎知識


1. 媒體格式的介紹

  文件格式:特殊的文件類型,用來存儲音頻或視頻數據。一些類型可以用來存儲多條流數據,這些叫做容器。視頻文件格式一般包含視頻流和音頻流。

  媒體容器:特殊的文件格式,用來存儲多條流數據和相關元數據的。音頻和視頻是可以被編碼和解碼的,容器可以將這些音頻流和視頻流存儲在一個文件里面。

         有些容器只能存儲音頻,比如AIFF、WAV、XMF等等。有些只能存儲圖片,比如TIFF。大部分只可以同時存儲音頻】視頻、字幕、元數據等等。

       

    如果只是容器改變,編碼沒改,可以使用-c  copy參數或-c:a  copy參數或-c:v  copy參數

      比如:ffmpeg  -i  input.avi  -q  1  -c  copy output.mov

2. 轉碼和轉換

  使用ffmpeg對輸入源處理然后輸出的過程叫做轉碼。轉碼可以改變文件格式,或者文件格式不變,只是更改其他數據。轉碼過程可以分為下面幾個階段:

    1)demuxing解封裝:ffmpeg根據輸入源的文件擴展名來選擇最佳的解封裝器(在libavformat庫里面)。解封裝后生成編碼狀態的數據包、即壓縮狀態的數據包。(文件file ——> 數據包data package)

    2)decoding解碼:通過適當的解碼器將步驟1里面的數據包解碼為未壓縮的數據幀。如果使用-c copy或-codec copy,將不會有解碼這個步驟,當然也就不會有下面的編碼這個步驟了。(數據包data package ——> 數據幀frame)

    3)optional filtering可選的濾鏡:通過指定的濾鏡修改解碼后的數據幀。(修改數據幀)

    3)encoding編碼:通過指定編碼器將數據幀編碼為數據包。(數據幀frame ——> 數據包data package)

    4)muxing封裝:將數據包封裝為指定的媒體格式。(數據包data package ——> 文件file)

    

    

3. 編解碼器

  codec是coder和decoder的組合縮寫。用於編解碼視頻流和音頻流數據的。ffmpeg的編解碼是基於比特流進行的。在ffmpeg命令行可通過 -c 或者 -codec指定編解碼器。語法如下:

    -codec[:stream_specifier] codec_name

4. 轉換的全局選項和特定選項

  在轉碼過程里面,

    有一些選項全局選項,如下-y表示覆蓋輸出,-n表示結束處理過程,不覆蓋輸出;-target 表示針對指定設備進行轉碼處理。等等

    也有一些特定選項,比如只能用於視頻或者音頻等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM