[unity] 音频的二进制流转化为audioclip的两种方式
1、将返回的byte[]数组,转换成float[]数组,然后将通过
audioSource.clip.SetData()方法,将音频数据赋给audiosource,实现语音播放;但这种只有wav很有可以直接用mp3需要第三方库,我没有试过
int SampleRate = 24000;AudioClip _audioClip = AudioClip.Create("audioClip", SampleRate * 600, 1, SampleRate, false); byte[] originalData = response;float[] _clipData = new float[originalData.Length / 2];for (int i = 0; i < originalData.Length; i += 2){_clipData[i / 2] = (short)((originalData[i + 1] << 8) | originalData[i]) / 32768.0f;}_audioClip.SetData(_clipData, 0);
mp3的请参考:https://blog.csdn.net/L877790502/article/details/119042479
2、将返回的btye[]数组,使用filestream,先保存为mp3文件,然后,再用www类,读取本地文件,获取www,audioclip,在赋给audiosource,进行音频播放。
private void ConvertSound(byte[] respone)
{File.WriteAllBytes(Application.streamingAssetsPath+"/temp.mp3",originalData);StartCoroutine(Application.streamingAssetsPath+"/temp.mp3");
}IEnumerator GetAudioClip(string fullPath)
{fullPath = "file://" + fullPath;using (var uwr = UnityWebRequestMultimedia.GetAudioClip(fullPath, AudioType.MPEG)){((DownloadHandlerAudioClip)uwr.downloadHandler).streamAudio = true;yield return uwr.SendWebRequest();if (uwr.isNetworkError || uwr.isHttpError){debugSongPath2.text = uwr.error;yield break;}DownloadHandlerAudioClip dlHandler = (DownloadHandlerAudioClip)uwr.downloadHandler;if (dlHandler.isDone){audio.clip = dlHandler.audioClip;if (audio.clip != null){audio.clip = DownloadHandlerAudioClip.GetContent(uwr);Debug.Log("Playing song using Audio Source!");}else{Debug.Log("Couldn't find a valid AudioClip.");}}else{Debug.Log("The download process is not completely finished.");}}
}
[unity] 音频的二进制流转化为audioclip的两种方式相关推荐
- java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法
Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...
- 十进制转二进制,用java的两种基本方法,适合新手
十进制转二进制,用java的两种基本方法,适合新手 1.String字符串拼接法 package cn.sxt;import java.util.Scanner;/*** 6. 从键盘输入某个十进制整 ...
- unity添加天空盒的两种方式
添加天空盒有两种方式 1 : 在当前相机上添加skybox 2 : 在当前场景上添加skybox (两种方式的结果是一样的 第一种方式的优势在于 如果 世界中有多个摄像机的话,切换摄像机 ...
- Unity中制作自定义字体的两种方式
Unity支持自定义图片字体(CustomFont),网上有很多教程,细节不尽相同,当概括起来基本就是两种方式.一是使用BMFont,导出图集和.fnt文件,再使用图集在Unity中设置得到字体.二是 ...
- List使用stream流转成map的几种方式
List使用stream流转成map的几种方式 实体例子 List<Object> 转成Map<String,Object> List<Object> 转成Map& ...
- Unity中ugui如何制作不规则按键的两种方法
Unity中ugui如何制作不规则按键的两种方法 两种不同的方案 目前,关于这个问题如何,解决通过搜索引擎我们能找到两种不同的方案: 多边形碰撞器: 该方法是指给精灵(Sprite)添加一个多边形碰撞 ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...
- Unity中传入任意数,转换成分,秒,并进行倒计时换算..(两种方式)
第一种方式是利用Unity中的协程,代码如下: using System.Collections; using System.Collections.Generic; using UnityEngin ...
- unity 2D游戏开发 制作帧动画的两种方法
本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法. 比较简单,一学即会. 方法一: 是用代码控制: 先创建一个2D工程.导入图片资源,并设置texture的texture ty ...
最新文章
- 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
- 数字测图原理与方法的实习日志_【技术】消费级无人机倾斜摄影测量1:500测图方法及精度研究...
- 用linux下常用命令wget进行整站下载(递归下载至本地)
- php对象编程遇到的BUG!
- 分行与支行有什么区别
- mysql 5.7 的组复制
- 内存映射MMAP和DMA【转】
- 微软Visual Studio2005开发工具路线图详解
- 游标循环读取的正确逻辑_千分尺的正确使用方法原来是这样?我用了那么多年都用错了...
- 纯css实现给图片加标签
- eclipse java 注释_Eclipse Java注释模板设置详解
- NSString的retainCount
- js中contains()方法的了解
- 06 - 雷达发射机 概述
- 什么是OBD及组成和作用、工作原理
- Unity 2019.3现已发布
- Mac设置顶部菜单栏技巧?
- 基于CUDA的GPU并行计算技术实现网课课表编排
- 2022年全球市场旋转压片机总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 连接 s3.amazonaws.com port 443: Connection refused