音視頻開發-音頻嚐鮮

在安逸的知識領域待久了,人就變得迷茫的。接觸了音視頻開發,打算一步步學起。Android預備的知識有音視頻的基礎知識、openGl的知識和最主要的Ffmeng知識。

音視頻的基礎

AndioRecord是Android系統提供的用於實現錄音的功能類

AudioTrack可以完成Android平臺上音頻數據的輸出任務

  • MODE_STREAM:在這種模式下,通過write一次次把音頻數據寫到AudioTrack中。
  • MODE_STATIC:這種模式下,在play之前只需要把所有數據通過一次write調用傳遞到AudioTrack中的內部緩衝區,後續就不必再傳遞數據了。

Camera採集視頻數據並保存到文件,分別使用 SurfaceView、TextureView 來預覽 Camera 數據

MediaExtractor的作用是把音頻和視頻的數據進行分離。

MediaMuxer的作用是生成音頻或視頻文件;還可以把音頻與視頻混合成一個音視頻文件

MediaCodec類可以用於使用一些基本的多媒體編解碼器

  • 編解碼器能處理的數據類型爲:壓縮數據、原始音頻數據和原始視頻數據。你可以通過ByteBuffers能夠處理這三種數據,但是需要你提供一個Surface,用於對原始的視頻數據進行展示,這樣也能提高編解碼的性能。Surface使用的是本地的視頻緩衝區,這個緩衝區不映射或拷貝到ByteBuffers。這樣的機制讓編解碼器的效率更高。通常在使用Surface的時候,無法訪問原始的視頻數據,但是你可以使用ImageReader訪問解碼後的原始視頻幀。在使用ByteBuffer的模式下,您可以使用Image類和getInput/OutputImage(int)訪問原始視頻幀

PCM採集
音頻:模擬信號->採樣->量化->編碼->數字信號

視頻編碼中H264是目前最主流的視頻編碼標準

在H264中,三種類型的幀數據分別爲

I幀:幀內編碼幀。就是一個完整幀。

P幀:前向預測編碼幀。是一個非完整幀,通過參考前面的I幀或P幀生成。

B幀:雙向預測內插編碼幀。參考前後圖像幀編碼生成。B幀依賴其前最近的一個I幀或P幀及其後最近的一個P幀

音頻編碼以AAC編碼爲主

AAC格式主要分爲兩種:ADIF、ADTS。

ADIF:Audio Data Interchange Format。 音頻數據交換格式。這種格式的特徵是可以確定的找到這個音頻數據的開始,不需進行在音頻數據流中間開始的解碼,即它的解碼必須在明確定義的開始處進行。這種格式常用在磁盤文件中。

ADTS:Audio Data Transport Stream。 音頻數據傳輸流。這種格式的特徵是它是一個有同步字的比特流,解碼可以在這個流中任何位置開始。它的特徵類似於mp3數據流格式。

做個簡單的音視頻播放器,待續~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章