Unity3D中录制和输出wav文件
Posted hont
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D中录制和输出wav文件相关的知识,希望对你有一定的参考价值。
近期在做视频录制方面的事情,看了下音频的录制和输出。主要参考官方的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文件的主要内容,如果未能解决你的问题,请参考以下文章
我从 wav 文件中获取峰值频率。但是对于录制的 2 个频道 wav,它不起作用
如何同时录制使用 AVPlayer 和 wav 文件播放的歌曲?