Я работаю над приложением, разработанным для Unity 3D, в котором используются голосовые библиотеки Photon Network и Photn. Я хотел бы получить аудиопоток, сохранить его в потоке, а затем сохранить его в файле WAV. Из поддержки Голосовых форумов Photon мне сказали использовать:
PhotonVoiceNetwork.Client.OnAudioFrameAction += (playerId, voiceId, frame) => Debug.LogFormat("***** {0} {1} {2}", playerId, voiceId, frame[0]);
Я могу видеть значения полученных кадров с плавающей запятой, напечатанные в журналах, но я не знаю, как я могу использовать это действие, на которое они указали, для доступа к значениям кадров с плавающей запятой. Это оригинальная декларация действия:
public Action<int, byte, float[]> OnAudioFrameAction { get; set; }
и я думаю о том, чтобы сохранить аудио кадры примерно так:
float[] samples;
PhotonVoiceNetwork.Client.OnAudioFrameAction += (playerId, voiceId, frame) => samples = frame;
MemoryStream stream = new MemoryStream();
BinaryWriter bw = new BinaryWriter(stream);
bw.Write(samples);
bw.Flush();
byte[] floatBytes = stream.ToArray();
Приведенный выше код не работает, так как в строке bw.Write(samples);
компилятор говорит, что переменная не была инициализирована, что означает, что PhotonVoiceNetwork.Client.OnAudioFrameAction += (playerId, voiceId, frame) => samples = frame;
не присваивает полученное значение с плавающей точкой переменной.
Любая помощь будет высоко ценится.