码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D中录制和输出wav文件

时间:2018-06-24 17:56:55      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:apt   转换   cap   mfile   targe   bsp   lte   部分   事件   

近期在做视频录制方面的事情,看了下音频的录制和输出。主要参考官方的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文件

标签:apt   转换   cap   mfile   targe   bsp   lte   部分   事件   

原文地址:https://www.cnblogs.com/hont/p/9221017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!