unity class.jarmicrophoneclass 怎么控制录音时间

我猜很少有人会这个,Microphone录音,保存音频文件到本地_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:52,535贴子:
我猜很少有人会这个,Microphone录音,保存音频文件到本地收藏
我用Unity的Microphone进行录音,顺利地用AudioClip播放了出来,那么问题来了,我怎么把录下的音频信息保存为一个音频文件?格式先不谈,可以慢慢搞,但是现在手上只有一堆int16和byte数组,怎么保存?
三叔正版授权网游公测!
编码 写出。不同格式不同编码方式具体查看具体协议实现编码,或者去找相应编码库
Unity录制的是Wav数据,现在已经实现了Wav文件的保存,问题在于如何将Wav数据直接在内存中转码为AAC数据用来传输,服务器仅支持AAC音频,目前并没有发现可以在Unity中使用的在内存中转码的C#音频库,之前发现的一款商业音频库竟然不支持AAC!!!
问下 用这东西 录制有游戏背景音乐 怎么办 小尾巴tankwar 科学的小技巧 可以使用跳弹后折射的炮弹打击其他坦克   --来自助手版贴吧客户端
Microphone录音和uSpeak 这两个用那个可行??
要在网络手游里做类似语音留言的东西
为啥我找不到录音设备
楼主怎么实现Wav文件的保存的啊?
和张大佛爷、二月红一起去探秘矿洞墓穴!
楼主使用的采样率是多少?
我用10025在手机上测试 噪音太大 不能接受
有代码示例么?可以录制内置播放音源吗?比如我想录制AudioSoure通过AudioMixer处理后的音效。
直接用Microphone实时播放录音不会有延迟么
怎么解决的?
如何实现录音功能
LZ能不能教教啊?怎么进行转码
LZ.怎么保存音频到本地啊
Unity调用Android录音不行吗?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或unity3d - How can pause/resume recording audio from microphone in unity engine - Stack Overflow
to customize your list.
Announcing Stack Overflow Documentation
We started with Q&A. Technical documentation is next, and we need your help.
Whether you're a beginner or an experienced developer, you can contribute.
In unity engine I want record audio from microphone with pause/ I want to have all of recorded audio in one AudioC and I don't know how many time it will pause and play (it's depend to user, not me) (also length of it) what can I do ?
Don't have ready made solution, but the way you should start is to use
class and use its Start and End function to record audio. This returns an audio clip which can be
to a numbered file (e.g., audio_datetime_00001,audio_datetime_00002,...). Once user Play/Pause/Stop you can create a new audio file. Later you can
(try Mark Heath's solution).
Happy coding!!!
6,94141940
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabled你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
unity 录音通过
Microphone.Start(null, false, recordLength, frequency);
来录音. 但是好像并没有设置录音的格式....
返回的AudioClip 也没有设置格式的参数....在编辑上倒是看到后format 的选项....但是代码里面没有....
究竟怎么设置录音的格式呢??? 比如wav格式.....
有两种解决方式,一种是不用Unity提供的接口,网上很多C++封装实现的,可以将其做成dll文件,unity去调用其接口录音,二是使用unity提供的接口返回ogg格式就可以。你添加wav头数据需要在其保存流文件之前去加入,不赞成这么做。容易破坏其格式。
Microphone.Start 这个好像就是声音采集,至于你要保存成什么格式,应该是需要你自己转的,比如保存成wav,你就得给.wav文件添加头部数据等等,这个你可以去网上搜一下(wav格式),应该有很多。
楼主,噪音问题解决了么 ,能分享下解决的方案么。。
要回复问题请先或
浏览: 1578
关注: 4 人The Unity3D(15)
& & unity 录音功能主要通过,Microphone这个类来完成。使用这个类自然可以跨平台,不用调用平台本地代码处理。
private static AudioC
private static int maxRecordTime = 10;
private static int samplingRate
public static bool TryStartRecording()
Microphone.End(null);
clip = Microphone.Start(null, false, maxRecordTime, samplingRate);
catch(Exception e)
& & Start开始录音,name默认不写就是寻找默认设备。samplingRate是采样率长度,越长音质越好,录音文件越大。Start之前调用End是为了结束可能正在进行的录音。
public static void EndRecording(out int length, out AudioClip outClip)
int lastPos = Microphone.GetPosition(null);
if (Microphone.IsRecording(null))
length = lastPos / samplingR
length = maxRecordT
Microphone.End(null);
if (length & 1.0f)
& & 结束的时候,计算音频数据的长度,返回长度和clip对象,做进一步处理。拿到,clip文件就可以利用AudioSource播放了。如果,我们需要保存和读取这个音频文件我们就需要使用clip的SetData和GetData文件。
public static byte[] GetData(this AudioClip clip)
var data = new float[clip.samples * clip.channels];
clip.GetData(data, 0);
byte[] bytes = new byte[data.Length * 4];
Buffer.BlockCopy(data, 0, bytes, 0, bytes.Length);
return SVZip.ConvertBytesZlib(bytes, press);
public static void SetData(this AudioClip clip, byte[] bytes)
bytes = SVZip.ConvertBytesZlib(bytes, pressionMode.Decompress);
float[] data = new float[bytes.Length / 4];
Buffer.BlockCopy(bytes, 0, data, 0, data.Length);
clip.SetData(data, 0);
public static byte[] ConvertBytesZlib(byte[] data, CompressionMode compressionMode)
CompressionMode mode = compressionM
if (mode != press)
if (mode != CompressionMode.Decompress)
throw new NotImplementedException();
return ZlibStream.UncompressBuffer(data);
pressBuffer(data);
& & GetData会获得一个float数组,里面是采样音频数据。我们需要把它转换byte数据保存文件,利用BlockCopy内存拷贝,并且使用了Zlib压缩算法对最终的byte数据压缩。GetData的时候,先解压在逆向把byte数据转换为flaot数据,返回给clip,就拿到了可以播放的clip对象了。
& & 使用SetData的clip需要我们调用AudioClip.Create方法创建出来,所以录音的时候,我们需要拿到原始clip的frequency和LengthSamples属性,传入给create方法。
& & 当clip的数据可以转换成byte数据的时候,我们就可以使用读写文件的方法保存和读取了。另外,既然我们有了音频数据,我们可以做一些操作修改音调添加魔音处理等这样的功能。
==================================================================================
& & 还有一个功能需求,就是在录音的过程中。如何显示录的声音的大小,同时显示一个音量大小的动画呢。其,核心的思路是,音频数据是float的0-1范围内的数据。就是音量大小的比例。我们可以把0-1的范围,分为若干个区间,来表示音量的大小。那么,我们有两个方案,来录音的时候实时获取这个sample数据。
& & 第一,就是使用协程,不断的检测Microphone.IsRecording是否在录音中,然后利用Microphone.GetPosition获得当前的进度,往前计算一段sample数据,找出一个平均值来代表这段时间的音量大小。
& &第二,就是使用clip的回调接口PCMReaderCallback,在录到数据的时候会回调这个函数,参数中可以拿到当前的一段的sample数据。同样的找出一个平均值来代表当前的音量。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:138783次
积分:2901
积分:2901
排名:第8543名
原创:143篇
评论:83条
(4)(24)(3)(2)(5)(5)(1)(6)(1)(5)(18)(2)(2)(2)(1)(24)(4)(1)(2)(4)(1)(1)(1)(1)(1)(2)(2)(4)(1)(1)(1)(4)(6)(5)Unity3D(255)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:292231次
积分:3837
积分:3837
排名:第5761名
原创:38篇
转载:387篇
评论:27条
(7)(4)(1)(10)(13)(6)(12)(3)(10)(3)(12)(9)(8)(5)(8)(7)(5)(15)(3)(11)(16)(8)(7)(16)(31)(8)(6)(5)(7)(6)(4)(4)(10)(16)(8)(6)(4)(5)(7)(10)(2)(5)(4)(1)(5)(1)(2)(6)(6)(4)(3)(2)(11)(22)(13)(5)

我要回帖

更多关于 unity microphone使用 的文章

 

随机推荐