资源简介
这是一个使用C#编写的Unity脚本,可以录制麦克风的语音输入,保存成WAV格式的文件。使用说明:首先要有麦克风接入,调成默认输入设备,然后把脚本放在任意一个物体上,接口可以不用配置,都有默认值,运行时点击G是开始录音,H是播放录音,J是保存文件。
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
public class RecordMic : MonoBehaviour {
public string filePath = null;
public int Recordlength = 30;
// Use this for initialization
void Start () {
if (String.IsNullOrEmpty(filePath))
filePath = Application.dataPath + “/record.wav“;
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.G))
Recording ();
else if (Input.GetKeyDown (KeyCode.H))
PlayRecord ();
else if (Input.GetKeyDown (KeyCode.J))
SaveRecord();
}
[HideInInspector]
public AudioClip clip;
//录音的采样率
const int samplingRate = 44100;
///
/// 开始录音
///
public void Recording()
{
string[] micDevices = Microphone.devices;
if (micDevices.Length == 0)
{
Debug.Log(“没有找到录音组件“);
return;
}
Debug.Log(“录音时长为“+Recordlength.ToString()+“ 秒“);
Microphone.End(null);//录音前先停掉录音,录音参数为null时采用的是默认的录音驱动
clip = Microphone.Start(null false Recordlength samplingRate);
}
///
/// 停止录音
///
public void StopRecord()
{
int audioLength;
int lastPos = Microphone.GetPosition(null);
if (Microphone.IsRecording(null))
{
audioLength = lastPos / samplingRate;
}
else
{
audioLength = Recordlength;
}
Microphone.End(null);
if (audioLength < 1.0f)
{
Debug.Log(“录音时长短“);
}
}
///
/// 播放录音
///
public void PlayRecord()
{
StopRecord();
AudioSource.PlayClipAtPoint(clip Vector3.zero);
}
///
/// 保存录音
///
public void SaveRecord()
{
StopRecord();
try
{
Save(clip filePath);
Debug.Log(“保存完毕“);
}
catch (Exception ex)
{
Debug.Log(ex.Message + ex.StackTrace);
}
}
public static void Save(AudioClip clip string path)
{
string filePath = Path.GetDirectoryName(path);
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
using (FileStream fileStream = CreateEmpty(path))
{
ConvertAndWrite(fileStream clip);
WriteHeader(fileStream clip);
}
}
private static void ConvertAndWrite(FileStream fileStream AudioClip clip)
{
float[] samples = new float[clip.samples];
clip.GetData(samples 0);
相关资源
- Unity5麦克风录音Record MicroPhone Audio 更
- Unity测距脚本
- 一套类moba的教学视频百度云地址
- Unity网络正常状态下优先加载网络图片
- c#自动录音
- Unity3D虚拟现实开发之标签跟随功能
- 一个很不错的C#录音控件源码,帮您提
- Unity面试题30题含答案——C#基础.
- unity模型贴图滚动脚本
- 跑酷游戏源码
- unity3d 连接外置摄像头
-
Js to CSharp sc
ript converter - unity上传文件7牛云存储服务器
- 鱼类游动代码
- unity旋转,缩放,移动控制脚本
- unity旧粒子系统转换为新粒子系统
- MoveCamera.cs
- Unity3D场景中对模型旋转放大缩小脚本
- unity3d实现物体透明渐变效果
- 使用C#在Unity中制作VR游戏
- c#获取麦克风音量 百分比显示
- C#实现声音录制
- 通过api控制麦克风音量
- C#调用API实现录音功能
- Unity项目对齐地面功能
- Unity5实战使用C#和Unity开发多平台游戏
- 可视化调节曲线运动Unity插件
- SwitchClick.cs
- c# 排序算法诠释排序过程
- Unity\“I18N.West\“
评论
共有 条评论