⑴ Nero快速轉換音頻文件
Nero想必大家已不陌生,雖然Nero的主要功能是刻錄,但是它自帶的一些工具確實不錯,下面我就給大家介紹一下,希望對你有所幫助。
筆者使用的是Nero
6,Nero在安裝後會在桌面上建立一個Nero
StartSmart的快捷方式,如果桌面上沒有可以到開始菜單中找到,這里就不多說了。然後啟動NSS並在主界面中將標准模式設為專家模式,然後選擇“對音頻文件進行編碼”進入編碼文件窗口,按添加按鈕一次或多次添加音頻文件,如筆者需要將MP3文件轉換成CD格式的WAV,然後將輸出格式選擇PCM
Wave
file,點擊右側的設置來設置輸出後音頻的質量,設置完並選擇好目標文件存儲的文件夾後按繼續按鈕,此時系統就會自動將在等待轉換文件列表中的文件進行轉換,如圖所示
編輯提示:如果將其它格式的音頻文件轉換成MP3,Nero只允許30次的轉換次數,30次以後無法繼續使用。
⑵ 音樂文件如何轉碼
你好,很高興能為您解答問題。
首先為你解釋一下什麼是cda格式,cda是CD光碟和黑膠CD光碟等音樂光碟中的文件存儲格式,將音頻文件,如WAV波形文件使用「刻錄成音樂CD」的方式寫入光碟後,使用電腦打開這張光碟,你所看到的就是這種格式的文件。只有這種格式,你的CD播放機才能夠支持。
如何將cda文件轉換成mp3等其他音樂格式呢?我們需要藉助編碼轉換軟體,比較常用的有格式工廠,或者大家所熟悉的千千靜聽(現在已更名為網路音樂),格式工廠轉換的目錄非常簡潔明了,我就不再細說。使用千千靜聽轉換的時候,首先使用千千靜聽打開你要轉換的音樂,可以拖動文件到列表,也可以通過菜單上的打開按鈕,然後右鍵點擊這個文件,選擇轉換格式,在輸出格式里選擇MP3,設置你想要的存儲路徑,然後點擊立即轉換即可。這里有一個可調的參數叫做比特率,比特率越高,音質損失越小,一般建議選擇128到192,不建議選擇128以下,會明顯失真,如果選擇過高,會導致文件過大。
這樣你就可以轉碼成mp3文件了。
希望能夠幫到你。
⑶ 怎樣使用ffmpeg 進行音頻解碼
安裝完成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 mp3a ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3afloat 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.
⑷ 如何轉換音頻文件的編碼格式
格式工廠(Format Factory)是由上海格式工廠網路有限公司創立於2008年2月,是面向全球用戶的互聯網軟體。
主打產品「格式工廠」發展以來,已經成為全球領先的視頻圖片等格式轉換客戶端。格式工廠致力於幫用戶更好的解決文件使用問題,現擁有在音樂、視頻、圖片等領域龐大的忠實用戶,在該軟體行業內位於領先地位,並保持高速發展趨勢。
所有類型視頻轉到MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、webm等,新版支持RMVB(rmvb需要安裝Realplayer或相關的解碼器)、xv(迅雷獨有的文件格式)轉換成其他格式。
所有類型音頻轉到MP3、WMA、FLAC、AAC、MMF、AMR、M4A、M4R、OGG、MP2、WAV等。
所有類型圖片轉到JPG、PNG、ICO、BMP、GIF、TIF、PCX、TGA等。
軟體截圖(27張)
支持移動設備:索尼(Sony)PSP、蘋果(Apple)iPhone&iPod、愛國者(Aigo)、愛可視(Archos)、多普達(Dopod)、歌美(Gemei)、iRiver、LG、魅族(MeiZu)、微軟(Microsoft)、摩托羅拉(Motorola)、紐曼(Newsmy)、諾基亞(Nokia)、昂達(Onda)、OPPO、RIM黑莓手機、藍魔(Ramos)、三星(Samsung)、索愛(SonyEricsson)、台電(Teclast)、艾諾(ANIOL)和移動設備兼容格式MP4、3GP、AVI。
轉換DVD到視頻文件,轉換音樂CD到音頻文件。DVD/CD轉到ISO/CSO,ISO與CSO互轉源文件支持RMVB。
可設置文件輸出配置(包括視頻的屏幕大小,每秒幀數,比特率,視頻編碼;音頻的采樣率,比特率;字幕的字體與大小等)。
高級項中還有「視頻合並」與查看「多媒體文件信息」。
轉換過程中可修復某些損壞的視頻。
媒體文件壓縮。
可提供視頻的裁剪。
轉換圖像檔案支持縮放,旋轉,數碼水印等功能。
支持從DVD復制視頻。
支持從CD復制音樂。
⑸ 音頻基礎
聲音是一種由物體振動引發的物理現象,如小提琴的弦聲等。物體的振動使其四周空氣的壓強產生變化,這種忽強忽弱變化以波的形式向四周傳播,當被人耳所接收時,我們就聽見了聲音。
以揚聲器為例子,揚聲器發聲時是振膜在振動。下圖是放了塊小紙片到振膜上,振膜的振動導致小紙片「跳起了街舞」。
振膜的振動會導致振膜旁邊的空氣振動,然後導致更大范圍的空氣跟著一起振動,最後耳朵旁邊的空氣也開始振動。
如果只關注單個空氣分子,可以發現:它來回振動的軌跡,就是一個正弦或餘弦函數的曲線圖。
聲音有振幅,振幅的主觀感覺是聲音的大小。聲音的振幅大小取決於空氣壓力波距平均值(也稱平衡態)的最大偏移量。
從平衡位置到最大位移位置之間的距離,叫做 振幅 (Amplitude)。
空氣分子完全來回振動一次所花費的時間,叫做 周期 (Period),單位是秒(s)。
物體每秒來回振動的次數,叫做 頻率 (Frequency),也就是周期分之一。
理論上, 人類的發聲頻率是85Hz ~ 1100Hz ,人類只 能聽見20Hz ~ 20000Hz 之間的聲音。
PCM(Pulse Code Molation),脈沖編碼調制。人耳聽到的是模擬信號,PCM是把聲音從模擬信號轉化為數字信號的技術。
如何把聲音(聲源的振動)記錄下來呢?聲音屬於模擬信號,但更便於計算機處理和存儲的是數字信號(二進制編碼),所以需要將 模擬信號 (Analog Signal)轉成 數字信號 (Digital Signal)後進行存儲。這一過程,我們可以稱之為:音頻數字化。
將音頻數字化的常見技術方案是 脈沖編碼調制 ( PCM ,Pulse Code Molation),主要過程是:采樣 → 量化 → 編碼。
模擬信號的波形是無限光滑的,可以看成由無數個點組成,由於存儲空間是相對有限的,數字編碼過程中,必須要對波形的點進行采樣。 采樣 (Sampling):每隔一段時間採集一次模擬信號的樣本,是一個在時間上將模擬信號離散化(把連續信號轉換成離散信號)的過程。
每秒採集的樣本數量,稱為 采樣率 (采樣頻率,采樣速率,Sampling Rate)。比如,采樣率44.1kHz表示1秒鍾採集44100個樣本。
根據 采樣定理 (奈奎斯特–香農采樣定理,Nyquist-Shannon sampling theorem)得知:只有當采樣率高於聲音信號最高頻率的 2 倍時,才能把採集的聲音信號唯一地還原成原來的聲音。人耳能夠感覺到的最高聲音頻率為20000Hz,因此為了滿足人耳的聽覺要求,需要至少每秒進行40000次采樣(40kHz采樣率)。這就是為什麼常見的CD的采樣率為44.1kHz。電話、無線對講機、無線麥克風等的采樣率是8kHZ。
量化 (Quantization):將每一個采樣點的樣本值數字化。
位深度 (采樣精度,采樣大小,Bit Depth):使用多少個二進制位來存儲一個采樣點的樣本值。位深度越高,表示的振幅越精確。常見的CD採用16bit的位深度,能表示65536(2 16 )個不同的值。DVD使用24bit的位深度,大多數電話設備使用8bit的位深度。
編碼 :將采樣和量化後的數字數據轉成二進制碼流。
單聲道產生一組聲波數據,雙聲道(立體聲)產生兩組聲波數據。
采樣率44.1kHZ、位深度16bit的1分鍾立體聲PCM數據有多大?
1分鍾10.34MB,這對於大部分用戶來說是不能接受的。要想在不改變音頻時長的前提下,降低音頻數據的大小,只有2種方法:降低采樣指標、壓縮。降低采樣指標是不可取的,會導致音頻質量下降,用戶體驗變差,因此專家們研發了各種壓縮方案。
比特率 (Bit Rate),指單位時間內傳輸或處理的比特數量,單位是:比特每秒(bit/s或bps),還有:千比特每秒(Kbit/s或Kbps)、兆比特每秒(Mbit/s或Mbps)、吉比特每秒(Gbit/s或Gbps)、太比特每秒(Tbit/s或Tbps)。
采樣率44.1kHZ、位深度16bit的立體聲PCM數據的比特率是多少?
通常,采樣率、位深度越高,數字化音頻的質量就越好。從比特率的計算公式可以看得出來:比特率越高,數字化音頻的質量就越好。
需要注意的是: 音頻文件格式並不等於音頻編碼 。比如:
下面對常見的音頻編碼和文件格式做一個簡介,以後有需要時再進行詳細介紹。
WAV(Waveform Audio File Format),是由IBM和Microsoft開發的音頻文件格式,擴展名是 .wav ,通常採用PCM編碼,常用於Windows系統中。
WAV的文件格式 如下圖所示,前面有44個位元組的文件頭,緊跟在後面的就是音頻數據(比如PCM數據)。
根據采樣率和位深度可以得知:相對於自然界的信號,音頻編碼最多隻能做到無限接近,任何數字音頻編碼方案都是有損的,因為無法完全還原。目前能夠達到最高保真水平的就是PCM編碼,因此,PCM約定俗成叫做 無損 音頻編碼,被廣泛用於素材保存及音樂欣賞,CD、DVD以及常見的 WAV 文件中均有應用。
但並不意味著PCM就能夠確保信號絕對保真,PCM也只能做到最大程度的無限接近。我們習慣性的把MP3列入 有損 音頻編碼范疇,是相對於PCM編碼的。要做到真正的無損是困難的,就像用數字去表達圓周率,不管精度多高,也只是無限接近,而不是真正等於圓周率的值。
⑹ 怎麼把音樂轉換成mp3格式
工具/原料:
聯想g480、win10、音頻轉換器2.0、音樂。
1、打開音頻轉換器,如下圖所示:
⑺ 圖片聲音視頻文件的編碼是怎樣的,請給出二進制流的逆轉過程
先分開給您介紹一下視頻編碼跟音頻編碼:
視頻編碼就是通過特定的壓縮技術,將某個視頻格式的文件轉換成另外一種視頻格式文件的方法。
視頻編碼的主要功能是完成圖像的壓縮,使數字電視信號的傳輸量由1Gbit/s(針對1920x1080顯示格式)減少為20-30Mbit/s。
自然界中的聲音以及波形都非常復雜,聲音其實也是一種能量波,它有頻率和振幅
其中頻率所對應的是時間軸線,振幅對應的是電平軸線。
波是無限光滑的,弦線可看成由無數點組成。
音頻編碼主要是完成對聲音信息的壓縮。
聲音信號數字化後,信息量比模擬傳輸狀態大很多,不能像模擬電視聲音那樣直接傳輸
因而需要對聲音多一道壓縮編碼工序,即為音頻編碼。
音視頻編碼原理視頻編碼主要是對圖像進行有效的壓縮。
原始視頻圖像數據中包含大量的冗餘信息視頻編碼主要採取塊運動估計和運動補償技術有效的去除圖像幀間冗餘度,來壓縮碼率和帶寬,實現信號有效傳輸的目的。
我們需要通過抽樣、量化、編碼三個步驟將連續變化的模擬信號轉換為數字信號。
抽樣就是在時間上將模擬信號離散化。
量化是用有限個幅度值近似原來連續變化的幅度值,把模擬信號的連續幅度變為有限數量的有一定間隔的離散值。
編碼就是按一定的規律把量化後的值用二進制數字表示,然後轉換成二值或多值得數字信號流。
通常我們採用PCM編碼,其主要過程是將話音、圖像等模擬信號每隔一段時間進行取樣,使其離散化,同時將抽樣值按分層單位四捨五入取整量化,並將抽樣值按一組二進制碼來表示抽樣脈沖的幅值。
⑻ 如何將MP3格式的文件轉換為WAV格式 5種方法來將MP3格式的文件轉換為WAV格式
目錄方法1:免費的在線文件轉換1、在網路上搜索在線轉換器。2、導航到該網站內提供格式轉換服務的部分。3、導入你想要轉換的MP3文件。4、選擇「以wav作為輸出模式」。5、如果需要的話,輸入你的電子郵箱地址來接收格式轉換後的文件。6、點擊轉換按鈕。方法2:iTunes1、打開iTunes。2、前往iTunes → 偏好設置 → 導入設置。3、將「導入使用」設置為「WAV編碼器」。4、設置偏好參數。5、點擊「確定」來關閉導入設置窗口。6、點擊「確定」關閉通用參數選擇窗口。7、選擇iTunes中一個或多個MP3格式的文件。8、創建「wav版本的文件」。方法3:Windows媒體播放器1、確保你的Windows媒體播放器(WMP)配備有影音編碼包。2、確保WMP里裝備有AAC directhosw過濾器。3、首先使用WMP的剝離功能。4、雙擊「選項」對話框。5、點擊「剝離音樂」標簽。6、點擊「Windows媒體音頻格式」菜單框,選擇「wav格式」。7、插入空白CD。8、開始剝離音樂。方法4:Audacity1、打開Audacity軟體。2、前往文件 → 打開。3、選擇你想要轉換的MP3文件,然後點擊打開。4、等待文件導入過程結束。5、前往文件 → 導出wav格式文件(Export as .wav.)。6、在「另存為.wav文件到」對話框中,選擇轉換後文件的保存路徑。7、點擊保存,然後程序將把MP3格式文件導出為wav格式。方法5:Sound Converter1、該程序僅兼容於Ubuntu和OSX操作系統,不適用於Windows系統。2、下載並安裝軟體。3、當你打開sound converter後,將MP3文件拖拽到「音頻中心」的窗口中。4、點擊編輯 → 偏好設置。5、選擇「轉換為wav格式」,然後點擊「轉換」。你是否想使用各種聲頻軟體將你的MP3文件轉換為WAV格式?本文將向你展示多種文件格式轉換的方法。一起來學習吧。
方法1:免費的在線文件轉換
1、在網路上搜索在線轉換器。在著名的搜索引擎欄里輸入「MP3轉WAV格式轉換器」。 然後優先搜索免費的網站。
2、導航到該網站內提供格式轉換服務的部分。有時候,你需要先訪問該網頁,然後再自行查找格式轉換服務。
3、導入你想要轉換的MP3文件。
4、選擇「以wav作為輸出模式」。有些網站會需要你指定文件轉換的具體格式。
5、如果需要的話,輸入你的電子郵箱地址來接收格式轉換後的文件。有些網站允許你自行從網站下載格式轉換後的文件。有些網站則需要你提供一個電子郵箱來接收文件。如果你擔心被垃圾、廣告郵件騷擾,那麼你可以使用一個你不常用的郵箱來接收文件。你可以使用這個郵箱專門來接收各種你需要的文件。
6、點擊轉換按鈕。下載轉換好的文件,或通過電子郵箱接收文件。
方法2:iTunes
1、打開iTunes。根據你iTunes版本的不同,轉換文件格式的操作會稍有不同。
2、前往iTunes → 偏好設置 → 導入設置。如果你使用的是iTunes 7或更早版本的iTunes,那麼你需要點擊偏好設置里的「高級」選項卡後,才能進入「導入設置」。
如果你使用的是iTunes 8或更新版本,那麼進入「偏好設置」後,頁面將自動進入「高級」選項下。
3、將「導入使用」設置為「WAV編碼器」。
4、設置偏好參數。在「設置」旁邊的選項里,選擇「自動」或「自定義...」來設置參數 。如果你想要自定義文件轉換的各項參數,那麼點擊「自定義...」,然後選擇樣本頻率、樣本大小以及聲道。一般情況下,將聲道設置為「立體聲」即可。
5、點擊「確定」來關閉導入設置窗口。
6、點擊「確定」關閉通用參數選擇窗口。
7、選擇iTunes中一個或多個MP3格式的文件。
8、創建「wav版本的文件」。該步的具體操作取決於你的iTunes版本:選中文件後,進入「高級」選項卡,然後選擇「創建WAV版本文件」。
右鍵單擊文件,然後選擇「創建WAV版本」。
方法3:Windows媒體播放器
1、確保你的Windows媒體播放器(WMP)配備有影音編碼包。影音編碼包能夠使WMP編碼和解碼音頻播放文件,也能允許媒體播放器創建多個格式的音頻文件。在網路上搜索「WMP編碼包」,然後下載一個安全好用的編碼包。下載後,編碼包會自動整合到媒體播放器中。
2、確保WMP里裝備有AAC directhosw過濾器。AAC directshow過濾器是一個解密程序,能夠允許WMP正常播放ACC格式的歌曲(iTunes中許多歌曲都是ACC格式)。在網路上搜索並下載安全可用的「AAC directshow過濾器」,並按照說明正確安裝它。下載後,過濾器會自動整合到媒體播放器中。
3、首先使用WMP的剝離功能。你可以將CD上的音頻文件拷貝到電腦硬碟上,WMP就可以將MP3文件轉化為WMV文件。
4、雙擊「選項」對話框。點擊現在播放 → 更多選項。
5、點擊「剝離音樂」標簽。
6、點擊「Windows媒體音頻格式」菜單框,選擇「wav格式」。點擊「應用」,然後點擊「確定」,退出「選項」對話框。
7、插入空白CD。
8、開始剝離音樂。在菜單欄中,找到「剝離」標簽,然後點擊「剝離」,開始復制音樂。你的歌曲文件格式轉換完後,就會自動添加到WMP的媒體庫中。
方法4:Audacity
1、打開Audacity軟體。你可以從官網下載軟體。
2、前往文件 → 打開。
3、選擇你想要轉換的MP3文件,然後點擊打開。
4、等待文件導入過程結束。具體等待時間將取決於你的文件大小以及電腦運行速度。
5、前往文件 → 導出wav格式文件(Export as .wav.)。
6、在「另存為.wav文件到」對話框中,選擇轉換後文件的保存路徑。如果你想要重命名wav文件,就在文件名一欄輸入文件的名稱。
7、點擊保存,然後程序將把MP3格式文件導出為wav格式。等待格式轉換過程的完成。完成後,你就可以在你選擇的路徑下找到轉換後的文件啦。
方法5:Sound Converter
1、該程序僅兼容於Ubuntu和OSX操作系統,不適用於Windows系統。所以如果你正使用Windows系統的電腦,那麼你最好參考上面幾種方法來轉換文件格式,或者你可以考慮下載一個類似的音頻轉換器。
2、下載並安裝軟體。如果你使用的是Ubuntu系統,那麼你需要:前往主菜單 → 應用程序 → Ubuntu軟體中心。
在搜索欄內輸入「soundc」,然後按下回車鍵。
輸入你的密碼來驗證身份。
3、當你打開sound converter後,將MP3文件拖拽到「音頻中心」的窗口中。
4、點擊編輯 → 偏好設置。
5、選擇「轉換為wav格式」,然後點擊「轉換」。
小提示當你使用網路在線轉換服務時,務必先閱讀網站給出的條款和協議,了解上傳文件的時間、大小限制等情況。
警告使用在線轉換器存在一定的風險,在使用前最好自行把握風險。
⑼ 易語言音頻轉換取編碼信息的方法
易語言音頻轉換取編碼信息的方法是轉換成url_utf8編碼。將編輯框內文字轉換成url_utf8編碼,拼接成URL,通過http讀文件方式,讀取轉換後的音頻文件。並把它寫成MP3文件。
⑽ 第六章 音視頻的採集與編碼
iOS平台提供了多套API採集音頻,如果開發者想要直接指定一個路徑,則可以將錄制的音頻編碼到文件中,可以使用 AVAudioRecorder 這套API。
iOS平台提供了兩個層次的API來協助實現,第一種方式是使用 AudioQueue ,第二種方式是使用 AudioUnit ,實際上AudioQueue是AudioUnit更高級的封裝。
使用場景
1. AVAudioRecorder 簡單易用
2. AudioQueue 僅僅是要獲取內存中的錄音數據,然後再進行編碼輸出(有可能是輸出到本地磁碟,也有可能 是網路)
3. AudioUnit 要使用更多的音效處理,以及實時的監聽。
ExtAudioFile ,iOS提供的這個API只需要設置好輸入格式、輸出格式以及輸出文件路徑和文件格式即可。
視頻畫面的採集主要是使用各個平台提供的 攝像頭API 來實現的, 在為攝像頭設置了合適的參數之後,將攝像頭實時採集的視頻幀渲染到屏幕上提供給用戶預覽,然後將該視頻幀 編碼 到一個視頻文件中,其使用的編碼格式一般是 H264 。
本節會設計並實現一個基於攝像頭採集,最終用 OpenGL ES 渲染到 UIView 上,並且可以支持後期視頻特效處理,以及編碼視頻幀的架構。
首先來看一下整體架構圖
接下來分析一下該架構
我們就可以 抽象出以下兩個規則。
基於上面的分析,我們可以畫出節點的類圖關系
由於我們要獲取攝像頭採集的數據,所以這里需重寫該Protocol裡面約定的方法,也就是攝像頭用來輸出數據的方法,簽名如下:
最重要的是 CMSample-Buffer 類型的 sampleBuffer ,其中實際存儲著攝像頭採集到的圖像, CMSampleBuffer 結構體由以下三個部分組成。
iOS平台不允許App進入 後台 的時候還進行 OpenGL 的渲染操作,如果App依然進行 渲染操作 的話,那麼系統就會強制殺掉該App。
在iOS平台上的 CoreVideo 這個 framework 中提供了
方法,可以使得整個交換過程更加高效,因為 CVPixelBuffer 是 YUV 數據格式的,所以可以分配以下兩個紋理對象。
為什麼非要轉換為RGBA格式呢?
因為在 OpenGL 中紋理的默認格式都是 RGBA 格式的,並且也要為後續的紋理處理以及渲染到屏幕上打下基礎,最終編碼器也是以 RGBA 格式為基礎進行轉換和處理的。
YUV轉RGBA
在 FragmentShader 中將 YUV 轉換為 RGBA 格式。
無論是單獨的音頻編碼,還是視頻編碼中的音頻流部分,使用得最廣泛的都是 AAC 的編碼格式。
首先是比特率,也就是最終編碼出來的文件的碼率,接著是聲道 數、采樣率,這兩個將不再贅述,然後是最終編碼的文件路徑,最後是編碼器的名字。
銷毀前面所分配的資源以及打開的連接通道。
可使用 AudioToolbox 下的 Audio Converter Services 來完成硬體編碼。
AudioToolbox 中編碼出來的AAC數據也是裸數據,在寫入文件之前 也需要添加上 ADTS 頭信息,最終寫出來的文件才可以被系統播放器播放。
類似於軟體編碼提供的三個介面方法,這里也提供了三個介面方法,分別用於完成 初始化 、 編碼數據 和 銷毀編碼器 的操作。
iOS平台提供了音視頻的API,如果需要用到硬體Device相關的API,就需要配置各種 Session ;如果要用到與提供的軟體相關的API,就需要配置各種 Description 以描述配置的信息,而在這里需要配置的Description就是前面介紹的AudioUnit部分所配置的 Description 。
軟體編碼實際使用的庫是 libx264 庫,但是開發是基於FFmpeg的API進行的。
而編碼的輸入就是本文前面攝像頭捕捉的紋理圖像(顯存中的表示),輸出是 H264 的 Annexb 封裝格式的流。
由於輸入是一張 紋理 ,輸出是 H264 的裸流。
VideoEncoderAdapter 。為一個類命名其實就是根據該類的職責而確定的,上面這個類實際上就是將輸入的 紋理ID 做一個轉換,使得轉換之後的數據可以作為具體 編碼器 的輸入。
從全局來看一下軟體編碼器的整體結 構,如下圖所示。
從上圖中可以看到整個軟體編碼器模塊的整體結構,其實, 紋理拷貝線程 是一個生產者,它生產的視頻幀會放入 VideoFrameQueue 中; 而 編碼線程 則是一個消費者,其可從 VideoFrameQueue 中取出視頻幀, 再進行 編碼 ,編碼好的 H264 數據將輸出到目標文件中。
Video-FrameQueue ,這是一個我們自己實現的 保證線程安全 的隊列,實際上就是一個 鏈表 ,鏈表中每個 Node 節點內部的元素均是一個 VideoFrame 的結構體。
編碼線程 ,在編碼線程中首先需要實例化編碼器,然後進入一個循環,不斷從 VideoFrameQueue 裡面取出視頻幀元素,調用編碼器進行編碼,如果從 VideoFrameQueue 中獲取元素的返回值是 -1 ,則跳出循環,最後銷毀編碼器。
紋理拷貝線程 ,該線程首先需要初始化OpenGL ES的上下文環境,然後 綁定到新建立的這個紋理拷貝線程之上。
幀緩存對象 是任何一個 OpenGL Program 渲染的目標。
在iOS8.0以後,系統提供了 VideoToolbox 編碼API,該API可以充分 使用硬體來做編碼工作以提升性能和編碼速度。
首先來介紹 VideoToolbox 如何將一幀視頻幀數據編碼為 H264 的壓縮數據,並把它封裝到 H264HWEncoderImpl 類中,然後再將封裝好的這個類集成進前面的預覽系統中,集成進去之後,對於原來僅僅是預覽的項目,也可以將其保存到一個 H264 文件中了。
使用 VideoToolbox 可以為系統帶來以下幾個優點,
而VideoToolbox是iOS 8.0 以後才公開的API,既可以做編碼又可以做解碼工作。
VideoToolbox的編碼原理如下圖所示
左邊的三幀視頻幀是發送給編碼器之前的數據,開發者必須將原始圖像數據封裝為 CVPixelBuffer 的數據結構,該數據結構是使用 VideoToolbox 編解碼的核心。
iOS的 CoreVideo 這個 framework 提供的方法 就是專門用來將 紋理對象 關聯到 CVPixelBuffer 表示視頻幀的方法。
下面來看這個編碼器輸出的對象, Camera 預覽返回的 CMSampleBuffer 中存儲的數據是一個 CVPixelBuffer ,而經過 VideoToolbox 編碼輸出的 CMSampleBuffer 中存儲的數據是一個 CMBlockBuffer 的引用,如下圖所示。
如何構建編碼器,使用 Camera 的時候使用的是 AVCaptureSession ,而這里使用的會話就是 VTCompressionSession ,這個會話就代表要 使用編碼器 ,等後續講到 硬體解碼場景 時將要使用的會話就是 VTDecompressionSessionRef 。
為什麼要判斷關鍵幀呢?因為 VideoToolbox 編碼器在每一個關鍵幀前面都會輸出 SPS 和 PPS 信息,所以如果本幀是關鍵幀,則取出對應的 SPS 和 PPS 信息。
那麼如何取出對應的SPS和PPS信息呢?前面提到 CMSampleBuffer 中有一個成員是 CMVideoFormatDesc ,而 SPS 和 PPS 信息就存在於這個對於視頻格式的描述裡面。
Video-Encoder 也是一個輸出節點,該輸出節點是編碼並寫到磁碟中的。
有兩點需要注意。
第一點,由於要將紋理對象渲染之後再放到編碼器中。
第二點,由於渲染到的目標紋理對象需要交給編碼器進行編碼。
如上圖所示,iOS平台提供的多媒體介面是從底層到上層的結 構,之前都是直接使用 VideoToolbox ,而 AVFoundation 是基於 VideoToolbox 進行的封裝。它們的關注點不一樣。
重點來看一下 AVFoundation 這個層次提供的幾個主要API。
為了寫入本地文件而提供的API,該類可 以方便地將圖像和音頻寫成一個完整的本地視頻文件。
該類可以 方便地將本地文件中的音頻和視頻解碼出來。
這個類的使用場景比較多,比如拼接視頻、合並音頻與視頻、轉換格式,以及壓縮視頻等多種場景,其實是一個更高層次的封裝。
項目鏈接地址如下:
iOS-FDKAACEncoder
iOS-AudioToolboxEncoder
Android-CameraPreview
iOS-VideoToolboxEncoder