audio
This commit is contained in:
parent
bfc8651b1e
commit
9a631912f3
@ -14,7 +14,7 @@ public class UniSoundPlayer : MonoBehaviour, ISoundPlayer
|
|||||||
|
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
AudioClip dummy = AudioClip.Create("dummy", 1, 1, AudioSettings.outputSampleRate, false);
|
AudioClip dummy = AudioClip.Create("dummy", 1, 2, AudioSettings.outputSampleRate, false);
|
||||||
dummy.SetData(new float[] { 1, 1 }, 0);
|
dummy.SetData(new float[] { 1, 1 }, 0);
|
||||||
m_as.clip = dummy;
|
m_as.clip = dummy;
|
||||||
m_as.loop = true;
|
m_as.loop = true;
|
||||||
@ -62,6 +62,17 @@ public class UniSoundPlayer : MonoBehaviour, ISoundPlayer
|
|||||||
var delta = current - lastElapsed;
|
var delta = current - lastElapsed;
|
||||||
lastElapsed = current;
|
lastElapsed = current;
|
||||||
audioFPS = 1d / delta.TotalSeconds;
|
audioFPS = 1d / delta.TotalSeconds;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < samples_a; i++)
|
||||||
|
{
|
||||||
|
short left = BitConverter.ToInt16(buffer, i * 2 * 2);
|
||||||
|
//short right = BitConverter.ToInt16(buffer, i * 2 * 2 + 2);
|
||||||
|
_buffer.Write(left / 32767.0f);
|
||||||
|
//_buffer.Write(right / 32767.0f);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
float[] floatdata = ConvertByteArrayToFloatArray(buffer, samples_a, 2);
|
float[] floatdata = ConvertByteArrayToFloatArray(buffer, samples_a, 2);
|
||||||
for (int i = 0; i < samples_a; i++)
|
for (int i = 0; i < samples_a; i++)
|
||||||
{
|
{
|
||||||
@ -69,20 +80,23 @@ public class UniSoundPlayer : MonoBehaviour, ISoundPlayer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float[] floatArray = new float[960];
|
||||||
public float[] ConvertByteArrayToFloatArray(byte[] bytes, int sampleRate, int channels)
|
public float[] ConvertByteArrayToFloatArray(byte[] buffer, int samples_a, int channels)
|
||||||
{
|
{
|
||||||
int sampleCount = bytes.Length / (channels * 2); // 16位,所以每个样本2字节
|
//int sampleCount = buffer.Length / (channels * 2); // 16位,所以每个样本2字节
|
||||||
float[] floatArray = new float[sampleCount * channels];
|
|
||||||
|
|
||||||
for (int i = 0; i < sampleCount; i++)
|
|
||||||
|
for (int i = 0; i < samples_a; i++)
|
||||||
{
|
{
|
||||||
// 读取左右声道
|
// 读取左右声道
|
||||||
short left = BitConverter.ToInt16(bytes, i * channels * 2);
|
//short left = BitConverter.ToInt16(buffer, i * channels * 2);
|
||||||
short right = BitConverter.ToInt16(bytes, i * channels * 2 + 2);
|
//short right = BitConverter.ToInt16(buffer, i * channels * 2 + 2);
|
||||||
// 转换为-1.0到1.0的浮点数
|
// 转换为-1.0到1.0的浮点数
|
||||||
floatArray[i] = left / 32767.0f; // 32767是16位整数的最大值
|
//floatArray[i] = left / 32767.0f; // 32767是16位整数的最大值
|
||||||
floatArray[i + 1] = right / 32767.0f;
|
//floatArray[i + 1] = right / 32767.0f;
|
||||||
|
|
||||||
|
short onedata = BitConverter.ToInt16(buffer, i * channels * 2);
|
||||||
|
floatArray[i] = onedata / 32767.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return floatArray;
|
return floatArray;
|
||||||
|
Loading…
Reference in New Issue
Block a user