Как воспроизвести массив байтов в Xamarin android

Я настроил на сервер Веб Сокеты , через них я передаю обычные текстовые сообщения в реальном времени ,все проходит отлично , теперь я пытаюсь в реальном времени отправить голос , не аудио сообщение, это важно !!!, а например как в Discord при нажатии на клавишу говорить меня сразу же слышит другой человек. Вот мой код в котором я пытаюсь отдать голос в сокет, но когда я получаю его обратно я не понимаю как его воспроизвести

 static string addressWS = "ws://192.168.0.105:6001"; 
        //Сокет 
        WebSocketSharp.WebSocket ws = new WebSocketSharp.WebSocket(addressWS);
        private AudioRecord audiorecord;
        private static int SAMPLER = 44100; //Sample Audio Rate    
        int minBufSize = AudioRecord.GetMinBufferSize(SAMPLER, ChannelIn.Mono, Android.Media.Encoding.Pcm16bit);
        int rec_id = 0;
            int userid = 0;
        public void Init(int receiverId, int sender_id)
        {
              userid = sender_id;
           rec_id = receiverId;
            ws.OnMessage += WsOnMEssage;
            ws.OnOpen += WsOnOpen;
           
            
          
            ws.Connect();
          
            audiorecord = new AudioRecord(AudioSource.Mic, SAMPLER, ChannelIn.Mono, Android.Media.Encoding.Pcm16bit, minBufSize);
            Start();
        }


        public void Start()
        {
           

            ws.OnMessage += WsOnMEssage;
           
          
            byte[] buffer = new byte[minBufSize];
            audiorecord.StartRecording();
            while (true)
            {
                int number = audiorecord.Read(buffer, 0, minBufSize);
                for (int i = 0; i < number; i++)
                {
                    var new_message = new MyAudio {type = "call", audio = buffer };
                    var message = JsonConvert.SerializeObject(new_message);
                    ws.Send(message);
                    
                }
            }
        } 

Сообщение а точнее голос попадает в сокет в виде массива байтов , как мне его обработать ? принимаю я его здесь

public void WsOnMEssage(object sender, MessageEventArgs e)
    {
      
        var myAudio = JsonConvert.DeserializeObject<MyAudio>(e.Data);
        byte[] audio_message = myAudio.audio;
           
  
    }

где e.data это то что мне приходит из сокета

код класса MyAudio

class MyAudio
    {
        [JsonProperty("voice_audio")]
        public byte[] audio { get; set; }
        [JsonProperty("type")]
        public string type { get; set; }
        [JsonProperty("sender_id")]
        public int sendr_id { get; set; }

    }

сообщение из сокета

voice_audio: "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"
type: "call"
sender_id:0;

из всего это я могу вытащить voice_audio это не проблема, но как его воспроизвести в реальном времени ?


Ответы (0 шт):