FFMPEG 中級指南/格式
你是否曾經好奇為什麼一個 MP3 檔案可以告訴你歌曲的名稱和製作人? 嗯,這是有原因的,它與 MPEG 如何設計格式有關。 它可以處理元資料,稱為 ID3 標籤,MP3 播放器會在播放來自編解碼器的音樂時從格式中讀取這些標籤。 格式也通常被稱為檔案格式、容器格式或容器。 一些影片的例子包括高階系統格式 (ASF)、音訊影片交錯 (AVI) 和MPEG-4 第 14 部分 (.mp4)、Ogg (.ogg) 和Matroska (.mkv)。
要了解編解碼器如何在格式中使用,你可以看看在多種語言被很多人說的地方製作和銷售的商業 DVD 和藍光光碟。 外殼背面通常會解釋光碟有兩個不同的音軌;一個是用該國的主要語言,另一個是用第二語言或內容被配音的原始語言。 或者,一些主要的製片廠會發布帶有 5.1 和立體聲揚聲器設定的母帶音訊的電影,或者他們可能會提供音訊描述或視障人士。 無論哪種情況,大多數 DVD 播放器都能夠在執行時切換這些音軌,如果沒有自動切換,製片廠通常會提供一種方法讓人們在 DVD 中導航到選項選單並在播放電影之前選擇它。 字幕也是如此。
使用正確的軟體,這些音軌可以完全相互隔離,這個過程被稱為解複用,FFmpeg 是這些程式之一,這並不奇怪。 它可以執行解複用和解碼,作為多媒體工具的功能之一。 查詢一般文件 以獲取 FFmpeg 支援的編解碼器列表。
FFmpeg 使用一個名為 libavformat 的庫來與格式互動。 一些格式有預設的編解碼器和設定,你不需要自己設定。 這就是為什麼 ffmpeg -i input -o output 在沒有任何特定標誌的情況下也能正常工作。
FFmpeg 使用一個名為 libavcodec 的庫來與編解碼器互動。 與格式類似,一些編解碼器有預設設定,你不需要自己設定。
可以在不重新編碼流的情況下將編解碼器從一種格式傳輸到另一種格式。[1]
ffmpeg -i input -acodec copy -vcodec copy -o output
雖然這確實允許在現有影片編解碼器之上新增字幕,但也意味著你要犧牲對媒體播放器的支援。 根據你切換到的格式,你可能需要重新編碼。
你也可以從多媒體檔案中剪下和轉換一部分。 這對於從包含多個歌曲的原始 (PCM) 音訊 CD 複製檔案中提取和壓縮音軌很有用。
ffmpeg -c:a pcm_s16le -ss 1615.3 -t 279 -i RawAudio-example.bin Track-6.ogg
在本例中,音軌是透過指定編解碼器 (-c:a pcm_s16le PCM 16 位小端)、原始檔中的開始時間 -ss 1615.3、包含音軌的摘錄長度 -t 279、原始檔名 -i RawAudio-example.bin 和一個示例輸出檔名 Track-6.ogg 來提取的。
雖然 ffmpeg 缺乏本地的批處理轉換功能,但可以使用 for 迴圈 命令。 例如,以下命令將工作目錄中的所有 wavesound 檔案轉換為 OGG 格式
for i in *.wav; do ffmpeg -i "$i" "${i%.*}.ogg"; done
FFMPEG 工具會自動檢測副檔名。 請注意,該命令區分大小寫。