欧美成人A片免费|日韩无码一级av|一级黄色大片在线播放|黄片视频在线观看无码|亚洲精品成人无码影视|婷婷五月天视频网站|日韩三级AV在线播放|姓爱av在线婷婷春色五月天|真人全黃色录像免费特黄片|日本无码黄在线观看下载

  • +1

使用FFmpeg添加、刪除、替換和提取視頻中的音頻

2022-04-06 12:00
來源:澎湃新聞·澎湃號·湃客
字號

翻譯、編輯: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。

    +1
    收藏
    我要舉報
            查看更多

            掃碼下載澎湃新聞客戶端

            滬ICP備14003370號

            滬公網(wǎng)安備31010602000299號

            互聯(lián)網(wǎng)新聞信息服務許可證:31120170006

            增值電信業(yè)務經(jīng)營許可證:滬B2-2017116

            ? 2014-2026 上海東方報業(yè)有限公司