- +1
使用FFmpeg添加、刪除、替換和提取視頻中的音頻
翻譯、編輯:Alex
技術審校:李忠
本文來自OTTVerse,作者為Krishna Rao Vijayanagar。
▲掃描圖中二維碼了解音視頻技術大會更多信息▲
Easy-Tech #019#——FFmpeg
FFmpeg是一個超級強大的工具,它可以在視頻文件中添加、刪除、提取或者替換音頻。如果你的電腦上已經(jīng)安裝了FFmpeg,那么你就擁有了可以給電影添加或刪除音頻的工具!
我們一起來看看FFmpeg是如何做到的。
使用FFmpeg刪除視頻中的音頻
很多人想要知道如何從錄制的視頻中刪除音軌,比如馬路噪音或者背景噪音。
刪除音頻最簡單的方法是:只將視頻復制到一個新的文件中,而不復制音頻。這個方法之所以簡單,是因為它無需將視頻重新編碼。下面是刪除音頻的命令行:
ffmpeg.exe -i videoWithAudio.mp4 -c:v copy -an videoWithoutAudio.mp4使用-c:v copy命令將視頻復制到videoWithoutAudio.mp4-an告訴FFmpeg不要復制音頻
上述方法非常適用于電影中只有一個音軌的情況。但是,如果電影中有3~4個音軌,而你只想刪除第二個音軌,該如何操作?
如何通過FFmpeg刪除某個特定音軌?
我們在下一部分將學習到。
使用FFmpeg刪除特定音頻
你可以使用FFmpeg中的map命令來刪除特定音軌。
map命令的通用語法是:
-map input_file_index:stream_type_specifier:stream_index然后,你可以通過-map 0:a:1(從0開始計數(shù))從視頻中選擇第二個音軌。在上文的例子中,如果你的文件中有一個視頻和兩個音軌,那么你就可以使用-map 0:a:1只選擇第二個音軌,并將它復制到你的最終輸出文件中。同樣,-map 0是指選擇第一個輸入文件中的所有數(shù)據(jù)(包括音頻和視頻),所以你需要先選擇所有數(shù)據(jù),然后取消選擇音頻。
ffmpeg.exe -i videoWithAudio.mp4 -map 0 -map 0:a:1 -copy videoOutput.mp4如果電影中有5個音軌,除了第一個,其他你都想選擇。這個時候你可以使用反向的map命令(在map命令的參數(shù)前加負號)。使用-map -0:a:0 這一命令,F(xiàn)Fmpeg在選擇時就會忽略第一個音軌。反向的map非常強大!實際上,我們已在前文學習了使用 -an命令從視頻中刪除音頻。你可以通過如下方式,使用反向的map來達到相同的效果。
ffmpeg -i videoWithAudio.mp4 -map 0 -map -0:a videoWithoutAudio.mp4使用FFmpeg添加音頻你已經(jīng)刪除了一個音軌,那么你很可能想要再添加一個,對吧?下面我們將學習如何使用FFmpeg向視頻中添加音頻。
在前文中你已經(jīng)學習了map命令的使用,因此添加音頻對你來說應該很容易。命令行如下所示:
ffmpeg \-i video.mp4 \-i audio.mp3 \-c copy \-map 0:v:0 \-map 1:a:0 \ videoWithAudio.mp4上面的命令行很容易理解。你所做的就是使用map命令將視頻和音頻分別從不同的文件中復制到同一個輸出文件。-map 0:v:0 選擇了第0個輸入文件(視頻輸入)的第0個軌道。
–map 1:a:0 選擇了第一個輸入文件(音頻輸入)的第0個軌道。
不用重新編碼,-c copy同時復制音軌和視軌到輸出文件。如果你想要重新編碼,可以選擇合適的音視頻編解碼器,配置相應的編碼質量。
使用FFmpeg從視頻中提取音頻
使用FFmpeg從視頻提取音頻是另一個非常有用且常見的操作。無論是否重新編碼音頻,你都可以這么做。
讓我們先來看看第一種場景:不重新編碼,直接從媒體文件中提取音頻并保存下來。
提取音頻意味著要舍棄掉視頻,對吧?使用-vn 命令就可以幫助我們輕松刪除視頻。-vn命令與刪除音頻的-an命令類似。
然后,你所要做的就是將音頻從源文件復制到目標文件。使用-acodec copy命令即可完成操作,該命令告訴FFmpeg只復制音頻而不對其進行重新編碼。
ffmpeg -i videoWithAudio.mp4 -vn -acodec copy onlyAudio.aac很簡單,對不對?現(xiàn)在讓我們看下另一種情況:當你提取音頻后想要重新對它進行編碼。下面是如何使用FFmpeg從視頻中提取音頻,然后使用libmp3lame將音頻編碼為不同的質量,并將其存儲為mp3文件。
ffmpeg.exe -i videoWithAudio.mp4 -vn -c:a libmp3lame -q:a 1 onlyAudio.mp3-q:a表示質量(在LAME文檔中定義[1]),質量分布范圍為0~6,其中0表示高質量音頻,6表示低質量音頻。
圖片來自Pexels.com,作者為Stas Knop
使用FFmpeg從視頻中替換音頻
如何替換已包含音頻的視頻中的音軌?這將是我們今天最后研究的一種場景。
在上文我們已經(jīng)討論過,有兩個步驟:
刪除音頻
添加替換音頻
但有沒有更快更好的方法?
有了FFmpeg,總能找到更好的方法!
請看下列命令行:
-map input_file_index:stream_type_specifier:stream_index.所以,你可以使用-map 1:a:2來選擇第二個輸入文件中的第三個音軌,因為計數(shù)從0開始。ffmpeg -i video_with_audio.mp4 -i newAudio.wav \-map 0:0 \-map 1:0 \-c:v copy \-c:a libmp3lame -q:a 1 \-shortest \ video_with_newAudio.mp4在上文的例子中,我們需要從一個文件中獲取視頻以及另一個文件中獲取音頻。而map命令非常便捷地完成了上述操作。我們從第一個輸入文件(視頻)中選擇第0個軌道,并從第2個輸入文件(音頻)中選擇第0個軌道。然后我們原樣復制視頻并重新編碼音頻,再將它們一起放入新的文件中。如果你不想重新編碼音頻,你只需使用-a:c copy命令,那么音頻就只被復制而不會重新編碼。
-shortest命令用于確保當達到較短的輸入文件(兩個輸入文件之一)長度時停止轉換。如果這個功能在你的用例中無關緊要,那么你可以不使用這一命令。
結 語
好了,現(xiàn)在你已經(jīng)知道了如何使用FFmpeg從視頻中添加、刪除、替換和提取音頻。
后續(xù)文章中我們將介紹FFmpeg的更多功能和用法。
注釋:
[1]https://wiki.hydrogenaud.io/index.php/LAME
致謝:
本文已獲得作者Krishna Rao Vijayanagar授權翻譯和發(fā)布,特此感謝。
原文鏈接:
https://ottverse.com/add-remove-extract-audio-from-video-using-ffmpeg/
本文為澎湃號作者或機構在澎湃新聞上傳并發(fā)布,僅代表該作者或機構觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發(fā)布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。





- 報料熱線: 021-962866
- 報料郵箱: news@thepaper.cn
互聯(lián)網(wǎng)新聞信息服務許可證:31120170006
增值電信業(yè)務經(jīng)營許可證:滬B2-2017116
? 2014-2026 上海東方報業(yè)有限公司




