Unity AudioClip和PCM音频数据的转化

1 PCM音频数据转化AudioClip

假设PCM音频当前是16Khz采样率,16bit数据

复制代码
 byte[] pcmBytes=new byte[10240];
 float[] floatClipData = new float[audioBytes.Length/2];
 for (int i = 0; i < audioBytes.Length; i+=2)
 {  
     floatData[i / 2] = (short)((audioBytes[i + 1] << 8) | audioBytes[i]) / 32768.0f;
 }
 // 构造一个新的AudioClip
 AudioClip audioClip = AudioClip.Create("PCMClip", floatData.Length, 1, 16000, false);
 // 将音频数据设置到AudioClip中
 audioClip.SetData(floatData, 0);
 audiosource.clip = audioClip;
 audiosource.Play();

2 提取AudioClp中的数据转化为PCM bytes字节数组

复制代码
AudioClip audioClip = new AudioClip();
float[] audioData = new float[audioClip.samples * audioClip.channels];
audioClip.GetData(audioData, 0);
byte[] pcmBytesData = new byte[audioData.Length * 2];
for (int i = 0; i < audioData.Length; i++)
{
    short value = (short)(audioData[i] * short.MaxValue);
    pcmBytesData[i * 2] = (byte)(value & 0x0F);
    pcmBytesData[i * 2 + 1] = (byte)((value >> 8) & 0x0F);
}
相关推荐
动感光博3 小时前
Unity序列化字段、单例模式(Singleton Pattern)
unity·单例模式·c#
三块钱07943 小时前
【原创】基于视觉大模型gemma-3-4b实现短视频自动识别内容并生成解说文案
开发语言·python·音视频
FAREWELL000754 小时前
Unity基础学习(十五)核心系统——音效系统
学习·unity·c#·游戏引擎
向宇it6 小时前
【unity游戏开发——编辑器扩展】使用MenuItem自定义菜单栏拓展
开发语言·ui·unity·c#·编辑器·游戏引擎
动感光博6 小时前
Unity碰撞检测(射线投射、胶囊体投射)、交互(图层、掩码)
unity·c#·游戏引擎·游戏程序·动画
benben0448 小时前
Unity3D仿星露谷物语开发44之收集农作物
前端·游戏·unity·游戏引擎
动感光博8 小时前
Unity(URP渲染管线)的后处理、动画制作、虚拟相机(Virtual Camera)
开发语言·人工智能·计算机视觉·unity·c#·游戏引擎
MWHLS16 小时前
【以及好久没上号的闲聊】Unity记录8.1-地图-重构与优化
unity·开源
Icoolkj16 小时前
阿里通义万相 Wan2.1-VACE:开启视频创作新境界
音视频
u1521096484917 小时前
NDS3211HV单路H.264/HEVC/HD视频编码器
音视频·实时音视频·视频编解码