C# 如何将Unity音频剪辑转换为适合Firebase存储上传的字节数组
我使用Unity3D上的Firebase存储来存储用户的麦克风录音。如何将音频剪辑转换为可以上载到Firebase存储的字节流 当项目在适当的时间上传声音文件时,在Firebase中找到的文件不会被任何播放器读取 我已确保:C# 如何将Unity音频剪辑转换为适合Firebase存储上传的字节数组,c#,unity3d,byte,firebase-storage,audioclip,C#,Unity3d,Byte,Firebase Storage,Audioclip,我使用Unity3D上的Firebase存储来存储用户的麦克风录音。如何将音频剪辑转换为可以上载到Firebase存储的字节流 当项目在适当的时间上传声音文件时,在Firebase中找到的文件不会被任何播放器读取 我已确保: 我实际上得到了我想要上传的正确的未损坏的录音 我的上传音频剪辑方法用于使用PutFileAsync()而不是PutByteAsync()将文件从我的计算机硬盘上传到Firebase(包括我打算上传的录音) 我的项目也上传图像到同一个Firebase,这些图像上传没有问题
- 我实际上得到了我想要上传的正确的未损坏的录音
- 我的上传音频剪辑方法用于使用PutFileAsync()而不是PutByteAsync()将文件从我的计算机硬盘上传到Firebase(包括我打算上传的录音)
- 我的项目也上传图像到同一个Firebase,这些图像上传没有问题
public byte[] returnByteArrayForCurrentRecording()
{
var samples = new float[audioClip.samples];
audioClip.GetData(samples, 0);
Int16[] intData = new Int16[samples.Length];
Byte[] bytesData = new Byte[samples.Length * 2];
int rescaleFactor = 32767;
for (int i = 0; i < samples.Length; i++)
{
intData[i] = (short)(samples[i] * rescaleFactor);
Byte[] byteArr = new Byte[2];
byteArr = BitConverter.GetBytes(intData[i]);
byteArr.CopyTo(bytesData, i * 2);
}
return bytesData;
}
string saveAudio(DatabaseReference objectReference)
{
microphoneRecorder.endAudioRecording();
byte[] audioStream = microphoneRecorder.returnByteArrayForCurrentRecording();
StorageReference objectAudioRef= audioRef.Child(objectReference.Key.ToString()+".mp3");
objectAudioRef.PutBytesAsync(audioStream);
return objectAudioRef.ToString();
}
我希望这能上传一个可播放的mp3到FirebaseStorage。但是,任何媒体播放器都无法读取使用此方法上载的声音文件
一如既往,感谢您抽出时间