当前位置: 首页 > news >正文

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;}// 构造一个新的AudioClipAudioClip 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);
}

http://www.lryc.cn/news/218029.html

相关文章:

  • linux配置vlan后网络不通
  • GORM:在Go中轻松管理数据库
  • Ubuntu18.04 下PCL的卸载与安装
  • SMTP邮件发送图片-如何在github中存储图片并访问
  • 2023年软件系统架构师论文【回忆版】
  • 【使用python实现文件视频格式的转换】
  • 新媒体运营的营销方案
  • Flutter 05 组件状态、生命周期、数据传递(共享)、Key
  • 2.Vue3项目(二):vue项目创建,项目必需的基础依赖配置,项目集成各种第三方依赖
  • 【Mybatis源码】注册器 - TypeAliasRegistry
  • 【wp】2023鹏城杯初赛 Web web1(反序列化漏洞)
  • 三顾茅庐,七面阿里,成功上岸25k16薪,我行你也行~
  • 儿童听力损伤了,家长怎么办?
  • 【实验记录】为了混毕业·读读论文叭
  • asr翱捷LORA系列芯片选型参考推荐ASR6601/asr6505/asr6501/asr6500
  • Prometheus+Node_exporter+Grafana实现监控主机
  • odoo启动-加载模块(load_modules)
  • 【入门Flink】- 02Flink经典案例-WordCount
  • go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台
  • OpenGL ES入门教程(二)之绘制一个平面桌子
  • el-select 搜索无选项时 请求接口添加输入的值
  • 基于单片机的商场防盗防火系统设计
  • 【Java|golang】2103. 环和杆---位运算
  • [SSD综述 1.4] SSD固态硬盘的架构和功能导论
  • 【C++那些事儿】类与对象(1)
  • 集简云x slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • JS模块化,ESM模块规范的 导入、导出、引用、调用详解
  • markdown常用的快捷键
  • VSCode中的任务什么情况下需要配置多个问题匹配器problemMatcher?多个问题匹配器之间的关系是什么?
  • C语言鞍点数组改进版