1. 程式人生 > >Unity3D中錄制和輸出wav文件

Unity3D中錄制和輸出wav文件

數據大小 color 3D class style converter capture 這樣的 ref

近期在做視頻錄制方面的事情,看了下音頻的錄制和輸出。主要參考官方的FrameCapturer:

https://github.com/unity3d-jp/FrameCapturer

由於需求不是很復雜,只做了錄制和簡單的wav輸出。

wav文件結構較為簡單,分為文件頭和數據兩部分,文件頭格式網上有很多,數據這塊可以直接采用未壓縮的數據。

這裏需要註意一點,C#在用StreamWriter寫入時,並不會填充所有字節。

例如int型數據占4個字節,而寫入時只會填充相應數據大小的字節,所以這裏使用BitConverter來做字節的寫入

mFileStream.Write(BitConverter.GetBytes(16
), 0, 4);

獲取音頻這塊可以用Unity自己提供的事件:

void OnAudioFilterRead(float[] samples, int channels)
{
    ...
}

音頻寫入順序為左聲道-右聲道,左聲道-右聲道 ... 循環。由於Unity默認就是這樣的順序,所以第二個參數也用不到。

再對應wav文件的不同位數,寫入字節時進行相應的數值轉換操作即可。

工程文件地址:

https://gitee.com/Hont/WavAudioRecorder

Unity3D中錄制和輸出wav文件