python將ffmpeg將mp3轉wav的簡單介紹

本文目錄一覽:

怎麼通過ffmpeg將音頻文件轉換成Mp3 轉

安裝完成ffmpeg後,就可以使用ffmpeg進行音頻文件格式轉換。比如 ./ffmpeg -i /media/1.mp3 /media/1.wav, 通過該命令行可以將/media文件夾下1.mp3文件轉換成WAV格式的。

但是反過來 ./ffmpeg -i /media/1.WAV /media/1.MP3 卻不能轉換成Mp3格式,提示如下錯誤(找不到編碼器):

Stream mapping:

Stream #0:0 – #0:0 (wav – ?)

Encoder (codec none) not found for output stream #0:0

如果強行指定編碼器 ./ffmpeg -i /media/1.wav -acodec mp3 /media/1.mp3, 仍提示找不到編碼器錯誤:

Unknown encoder ‘mp3’

這是因為,ffmpeg雖然是個開源軟體,但因為具體格式的版權原因,它並沒有包含所有的編解碼格式,或者有個格式只有對應的解碼器,但沒有編碼器,比如 Mp3就只有解碼器,能播放Mp3文件,但卻沒有Mp3的編碼器,無法將其它格式轉換成Mp3。可以通過命令行 ./ffmpeg -codecs 查詢編解碼配置,第一個D表示Decoder,該格式能夠解碼;E表示Encoder,該格式可以編碼。從中可以看出Mp3不能編碼,Mp2倒是即可解碼 也可編碼。如何解決這個問題呢?

D A D mp1 MP1 (MPEG audio layer 1)

D A D mp1float MP1 (MPEG audio layer 1)

DEA D mp2 MP2 (MPEG audio layer 2)

D A D mp2float MP2 (MPEG audio layer 2)

D A D mp3 MP3 (MPEG audio layer 3)

D A D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)

D A D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3)

我的第一個方法是自己寫代碼來完成。源碼文件中,Allcodecs.c中對各個格式進行註冊,先修改Mp3的註冊行,改為同時註冊解碼器和編碼器:

REGISTER_ENCDEC (MP2, mp2);

REGISTER_DECODER (MP2FLOAT, mp2float);

REGISTER_DECODER (MP3, mp3) // 此行修改為 REGISTER_ENCDEC (MP3, mp3)

然後新增Mp3編碼器的實現Struct,裡面Init函數、encode函數、close函數使用Mp2的函數,因為我也不知道如何去實現Mp3的函數,或者說到代碼實現級我也不知道Mp3和Mp2的區別在哪。

AVCodec ff_mp3_encoder = {

.name = “mp3”,

.type = AVMEDIA_TYPE_AUDIO,

.id = CODEC_ID_MP3,

.priv_data_size = sizeof(MpegAudioContext),

.init = MPA_encode_init,

.encode = MPA_encode_frame,

.close = MPA_encode_close,

.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},

.supported_samplerates= (const int[]){44100, 48000, 32000, 22050, 24000, 16000, 0},

.long_name = NULL_IF_CONFIG_SMALL(“MP3 (MPEG audio layer 3)”),

.defaults = mp3_defaults,

};

重新編譯上線。 用命令行./ffmpeg -i /media/1.WAV /media/1.MP3 試了一下,能成功生成1.mp3文件,文件也能播放。似乎沒有問題了,單用 file /media/1.mp3 查看了一下,發現文件不是Mp3格式的,而是Mp2格式的:

/media/1.mp3: MPEG ADTS, layer II, v1, 128 kbps, 44.1 kHz, Stereo

很遺憾,自行修改代碼的方式行不通,因為不是每個編解碼格式協議的專家,自行修改代碼失敗的風險很大,不僅是Mp3,還有一些其他格式比如AMR OGG H.263是沒有編碼器的。所以,第二個方案,使用成熟的第三方編碼器和ffmpeg結合。

Mp3比較好的開源第三方庫是libmp3lame(簡稱Lame)。我下了一個最新版本(3.99.4)的Lame源碼,編譯它:

首先配置: ./configure –prefix=/shared –enable-shared –enable-static

然後編譯: make

make install

生成文件: 動態鏈接庫 /shared/lib/libmp3lame.so 和 靜態鏈接庫 /shared/lib/libmp3lame.a。這裡只需要使用動態鏈接庫,將.so文件拷貝到/lib中,這個文件夾是動態鏈接庫的默認搜索路徑, 讓ffmpeg運行時可以找到。

然後對ffmpeg配置libmp3lame: ./configure –enable-libmp3lame

重新編譯ffmpeg,運行轉化命令,看看效果如何。

首先執行 ./ffmpeg -codecs 查看可用編解碼的變化,可以看到多出了libmp3lame編碼器,帶E的:

D V D lagarith Lagarith lossless

EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)

EV ljpeg Lossless JPEG

D V D loco LOCO

然後執行 ./ffmpeg -i /media/1.WAV /media/1.MP3, 生成1.mp3,用File命令查看,確實是Mp3文件。

/media/1.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Stereo

大功告成,問題解決。

也可在命令行中指定編解碼生成Mp3文件:./ffmpeg -i /media/1.WAV -acodec libmp3lame /media/1.MP3.

Python pydub音頻處理

Pydub可以讓你用簡單的方式處理音頻。

Pydub提供了簡潔的高層介面,極大的擴展了python處理音頻文件的能力。

GitHub鏈接: pydub-github

GitHub:

pydub的使用必須安裝對應的依賴軟體 ffmpeg 或 avconv

驗證是否安裝成功:

Open a WAV file

Open a mp3 file

Open a other file

切割音頻

分貝操作

分貝(decibel)是量度兩個相同單位之數量比例的計量單位,主要用於度量聲音強度,常用dB表示。

音頻鏈接

將一個文件添加到另一個文件的末尾

音頻長度

淡入淡出

重複音頻

再次淡入淡出

直接保存

所有ffmpeg支持的都支持

用標籤保存結果(元數據)

實例:

將mp3文件轉換成wav文件:

Python音頻處理庫 pydub

如何使用命令行工具將MP3文件轉換為wav?

處理音頻格式這必然離不開音頻編輯軟體來製作了,你們知道是如何操作的嗎?今天的這邊文章就是以圖文並茂的形式給大家展現出來,就是讓更多的夥伴可以學習到知識,感興趣的寶寶們可以和小編一起往下看啦!

操作步驟:

1、在我們的電腦上下載並安裝迅捷音頻轉換器

2、雙擊打開軟體界面,手機號註冊獲取簡訊驗證碼登錄軟體或者用第三方登錄平台微信/QQ授權軟體直接登錄。

3、登錄完成之後找到音頻轉換然後再通過「添加文件」按鈕將需要添加的音頻文件進行添加進去即可。

4、軟體右上方的功能編輯欄對已添加的音頻文件進行編輯處理,在選擇輸出格式中找到WAV,再根據自己喜歡對下方的音頻質量以及音頻進行設置最後開始轉換就可以了。

如何將mp3格式轉換成wav格式?

將MP3格式轉換成WAV格式的方法如下:

(1)MP3格式和WAV格式都是屬於音頻格式的一種,要把MP3格式轉換成WAV格式,可以通過一些視頻音頻轉換軟體來轉換,比如:格式工廠 ,超級轉換秀,狸窩全能視頻轉換器,萬能視頻轉換器(Total Video Converter) v5.0.6,等,即可。(下面以格式工廠為例)

(2)  具體方法如下: 首先在電腦上下載一個視頻音頻轉換軟體「格式工廠」,然後安裝並打開,選擇音頻轉換模式中的「所有轉到WAV”,然後把MP3格式的音頻 直接拖入這個窗口,點確定,就可以將MP3轉換成WAV格式,即可。(如下圖)

如何將MP3格式的音頻轉換為WAV格式

將MP3轉換為WAV的軟體,可以用【風雲音頻處理大師】完成。

雙擊打開軟體,選擇音頻轉換功能。

選鉛游擇軟體界面中間的添加文件將MP3音頻文件添加進軟體李歷中或者將MP3音頻文件選中拖拽進軟體界面都可以。

將輸出格式設置為WAV。

設置輸出路徑,哪激搜選擇是源目錄儲存還是自定義文件夾存儲轉換好的WAV文哪激搜件。設置完成後,點擊開始處理

等待轉換完成後,點擊打開文件。對轉換的WAV音頻文件進行查看。

怎樣使用FFMPEG將WAV轉碼成其他格式

MP3大家一定很熟悉,但要將WAV格式的聲音文件轉換成MP3格式,你可能首先想到的是找專門的格式轉換工具,其實不必那麼複雜,你身邊就有一個現成的工具,這就是Windows附件中所帶的「錄音機」,使用這個工具能最簡便實現WAV格式轉為MP3格式,具體操作方法如下: 依次單擊「開始→程序→附件→娛樂→錄音機」,打開錄音機程序,然後單擊文件菜單,從文件中打開需要轉換的WAV文件,再單擊「文件→另存為」,在「另存為」對話框中單擊「更改」按鈕,在「格式」框中選擇「MPEGLayer-3」格式,一切就OK了。在轉換時,如果想控制文件大小,如想讓聲音更好聽或要使文件更加小巧,可以在窗口的「聲音選定」中選擇其中的「屬性」,在該欄中選擇更低或更高的採樣頻率就可以了,怎麼樣,是不是很方便,快試一試吧轉好以後文件名重命名為.mp3

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197066.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:27
下一篇 2024-12-03 13:27

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論