C# 如何将Unity音频剪辑转换为适合Firebase存储上传的字节数组

C# 如何将Unity音频剪辑转换为适合Firebase存储上传的字节数组,c#,unity3d,byte,firebase-storage,audioclip,C#,Unity3d,Byte,Firebase Storage,Audioclip,我使用Unity3D上的Firebase存储来存储用户的麦克风录音。如何将音频剪辑转换为可以上载到Firebase存储的字节流 当项目在适当的时间上传声音文件时,在Firebase中找到的文件不会被任何播放器读取 我已确保: 我实际上得到了我想要上传的正确的未损坏的录音 我的上传音频剪辑方法用于使用PutFileAsync()而不是PutByteAsync()将文件从我的计算机硬盘上传到Firebase(包括我打算上传的录音) 我的项目也上传图像到同一个Firebase,这些图像上传没有问题

我使用Unity3D上的Firebase存储来存储用户的麦克风录音。如何将音频剪辑转换为可以上载到Firebase存储的字节流

当项目在适当的时间上传声音文件时,在Firebase中找到的文件不会被任何播放器读取

我已确保:

  • 我实际上得到了我想要上传的正确的未损坏的录音
  • 我的上传音频剪辑方法用于使用PutFileAsync()而不是PutByteAsync()将文件从我的计算机硬盘上传到Firebase(包括我打算上传的录音)
  • 我的项目也上传图像到同一个Firebase,这些图像上传没有问题
这使我得出结论,我的字节流格式不正确

我的当前方法是将当前录制转换为字节数组以进行上载。这段代码基本上是从()复制的,但它没有将bytesData写入文件,而是发送并返回要上载到Firebase的bytesData

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。但是,任何媒体播放器都无法读取使用此方法上载的声音文件

一如既往,感谢您抽出时间