使用這個多功能的 Linux 命令轉(zhuǎn)換音頻文件
我工作需要使用音視頻媒體,不管你處理哪種媒體,你肯定知道標準化是一種有價值的工具。就像你不會試圖把一個分數(shù)加到一個小數(shù)上而不轉(zhuǎn)換其中一個一樣,我已經(jīng)知道,把不同格式的媒體組合起來并不理想。為了方便用戶,大多數(shù)愛好者級應(yīng)用程序使轉(zhuǎn)換過程不可見。然而,對于那些需要控制媒體細節(jié)的用戶的靈活軟件,會通常讓你自己提前將媒體轉(zhuǎn)換為所需的格式。我有一些最喜歡的音頻轉(zhuǎn)換工具,其中之一就是號稱“音頻的瑞士軍刀” —— ??SoX??。
安裝
在 Linux 或 BSD 上,可以從軟件存儲庫或 Ports 樹中安裝 ??sox?
? 命令(,以及一些有用的符號鏈接)。
你也可以從 ??Sourceforge.net?? 上安裝 SoX。它不經(jīng)常發(fā)布,但它的代碼庫往往是穩(wěn)定的,所以如果你想要最新的功能(如 Opus 支持),構(gòu)建它是容易和安全的。
SoX 主要提供了 ??sox?
? 命令,但是創(chuàng)建了一些有用的符號鏈接:??play?
?、??rec?
? 和 ??soxi?
?。
使用 SoX 獲取文件信息
SoX 可以讀取和重寫音頻數(shù)據(jù)。它是否存儲重寫的音頻數(shù)據(jù)取決于你。在有些情況下,你不需要存儲轉(zhuǎn)換后的數(shù)據(jù),例如,當你將輸出直接發(fā)送到揚聲器進行回放時。然而,在進行任何轉(zhuǎn)換之前,最好首先確定要處理的是什么。
使用 ??soxi?
? 命令也可以收集音頻文件信息。??soxi?
? 會符號鏈接到 ??soxi --info?
?。
這個輸出可以讓你很好地了解音頻文件的編碼方式、文件長度、文件大小、采樣率和通道數(shù)。其中一些你可能認為你已經(jīng)知道了,但當客戶把媒體帶到我面前時,我從不相信這些假設(shè)。使用 ??soxi?
? 驗證媒體屬性。
轉(zhuǎn)換文件
在本例中,,一個游戲節(jié)目倒計時的音頻是以MP3文件的形式提供的。雖然幾乎所有的編輯應(yīng)用程序都接受壓縮音頻,但它們并不是在壓縮的數(shù)據(jù)上進行編輯。轉(zhuǎn)換是在某個地方發(fā)生的,可能是一個秘密的后臺任務(wù),也可能提示讓你保存一份副本。我通常喜歡自己提前完成轉(zhuǎn)換。這樣,我可以控制使用的格式。我可以在夜間批量處理大量的媒體,而不是浪費寶貴的制作時間,等待編輯應(yīng)用程序按需處理它們。
??sox?
? 命令用于轉(zhuǎn)換音頻文件。在 ??sox?
? 流程中有幾個階段:
- 輸入
- 合并
- 特效
- 輸出
但在命令語法中,特效步驟令人困惑地放到了最后一步。這意味著 ??sox?
? 流程是這樣組成的:
編碼
最簡單的轉(zhuǎn)換命令只涉及一個輸入文件和一個輸出文件。下面是轉(zhuǎn)換 MP3 文件為無損 FLAC 文件的命令:
特效
特效可以在命令末尾指定。它可以在將數(shù)據(jù)發(fā)送到最終目的地之前更改音頻。例如,有時聲音太大會在轉(zhuǎn)換過程中造成問題:
應(yīng)用增益(??gain?
?)效果通常可以解決此問題:
淡入淡出
另一個常用的效果是淡入淡出(??fade?
?)。此效果允許你定義淡入或淡出的類型,以及你希望淡入淡出效果持續(xù)的時間。
下面是一個使用倒拋物線的 6 秒淡入示例:
這將對音頻的頭部應(yīng)用 3 秒的淡入,并從 8 秒標記開始淡出(這段音樂只有 11 秒,因此在這種情況下淡出也是 3 秒):
??sox?
? 手冊頁中列出了不同類型的淡入淡出(正弦、線性、倒拋物線等)以及淡入淡出提供的選項。
特效語法
每個特效插件都有自己的語法,因此請參閱手冊頁了解如何調(diào)用每個特效插件的詳細信息。
效果可以在一個命令中以菊花鏈的方式進行,至少在你想組合它們的范圍內(nèi)是如此。換句話說,沒有語法可以只在六秒鐘的淡出期間應(yīng)用一個鑲邊效果。對于如此精確的東西,你需要一個圖形聲波編輯器或數(shù)字音頻工作站,例如 ??LMMS?? 或 ??Rosegarden??。但是,如果你只想應(yīng)用一次特效,可以在同一命令中將它們一起列出。
此命令應(yīng)用了一個 -1 的增益效果、1.35 的節(jié)奏拉伸和淡出:
組合音頻
SoX 還可以通過連接或混合音頻文件來組合音頻文件。
要連接(或者說拼接)文件合并為一個文件,請在命令中提供多個輸入文件:
在本例中,??output.flac?
? 現(xiàn)在包含 ??countdown.mp3?
? 音頻,緊接著是 ??intro.ogg?
? 音樂。
但是,如果你希望兩首曲目同時播放,可以使用 ??--combine mix?
? 選項:
然而,想象一下,這兩個輸入文件的不同之處不僅僅在于它們的編解碼器。人聲音軌用單聲道(一個聲道)錄制并不少見,但音樂至少要用立體聲(至少兩個聲道)來錄制。SoX 不會給出默認的解決方案,因此你必須首先自己標準化這兩個文件的格式。
更改音頻文件
選項與后面列出文件名有關(guān)。例如,此命令中的 ??--channels?
? 選項將僅僅應(yīng)用于 ??input.wav?
?,而不被應(yīng)用于 ??example.ogg?
? 和 output.flac:
這意味著在 SoX 中,選項的位置非常重要。如果你在命令開始時指定一個選項,那么實際上只會覆蓋 SoX 自己從輸入文件中收集的內(nèi)容。然而,在輸出文件名前的選項決定了 SoX 如何寫入音頻數(shù)據(jù)。
要解決前面的通道不兼容問題,你可以首先標準化輸入,然后混合:
SoX 絕對需要多個命令來執(zhí)行復(fù)雜的操作,因此根據(jù)需要創(chuàng)建幾個臨時和中間文件是正常的。
多通道音頻
當然,并非所有音頻都被限制在一個或兩個聲道。如果你想將多個音頻通道組合成一個文件,可以使用 SoX 的 ??--combine merge?
? 選項:
簡單的音頻操作
在沒有視覺界面的情況下操作音頻似乎很奇怪,而且對于某些任務(wù)來說,SoX 絕對不是最好的工具。然而,對于許多任務(wù),SoX 提供了一個簡單而輕量級的工具包。SoX 是一個具有強大潛力的簡單命令。有了它,你可以轉(zhuǎn)換音頻,操縱通道和波形,甚至生成自己的聲音。本文僅簡要概述了其功能,因此請閱讀其手冊頁或 ??在線文檔??,然后看看你能創(chuàng)造什么。