Unity中将byte转为可播放的AudioClip
这是搜集各路诸侯的信息后,自己整理的方法
using System;
using UnityEngine;
public class Bytes2AudioClip : MonoBehaviour
{
public AudioSource audioSource;//音频播放源
/// <summary>
/// 将byte[]转换成AudioClip
/// </summary>
/// <param name="data"></param>
public void BytesToAudioClip(byte[] data)
{
float[] _clipData= bytesToFloat(data);//进行数据转换。将byte转成AudioClip可读取的float
audioSource.clip = AudioClip.Create("audioClip", 16000 * 10, 1, 16000, false);//不进行这一步,audioSource.clip会报空!
audioSource.clip.SetData(_clipData, 0);//完成赋值
}
public static float[] bytesToFloat(byte[] byteArray)//byte[]数组转化为AudioClip可读取的float[]类型
{
float[] sounddata = new float[byteArray.Length / 2];
for (int i = 0; i < sounddata.Length; i++)
{
sounddata[i] = bytesToFloat(byteArray[i * 2], byteArray[i * 2 + 1]);
}
return sounddata;
}
static float bytesToFloat(byte firstByte, byte secondByte)
{
//小端和大端顺序要调整
short s;
if (BitConverter.IsLittleEndian)
s = (short)((secondByte << 8) | firstByte);
else
s = (short)((firstByte << 8) | secondByte);
return s / 32768.0F;
}
}
如果有帮助的话,不要忘记点赞+收藏哦!Thanks~