Захват аудио с помощью naudio и воспроизведение с использованием JavaScript

У меня есть клиент с письменным C# и сервер с письменным Java. Я записываю аудио и отправляю через сокет на сервер, а сервер отправляю через веб-сокет в браузер и хочу играть через браузер Но когда я пытаюсь браузер говорит Uncaught (в обещании) DOMException: Не удалось загрузить, потому что не найден поддерживаемый источник. Не могли бы вы помочь мне?

private static void Recordwav()
    {
        waveInEvent = new WaveInEvent();
        int devicenum = 0;
        for (int i = 0; i < WaveIn.DeviceCount; i++)
        {
            if (WaveIn.GetCapabilities(i).ProductName.Contains("icrophone"))
                devicenum = i;
        }

        waveInEvent.DeviceNumber = devicenum;
        waveInEvent.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(devicenum).Channels);
        waveInEvent.DataAvailable += new EventHandler<WaveInEventArgs>(VoiceDataAvailable);

        waveInEvent.StartRecording();
    }

private static void VoiceDataAvailable(object sender, WaveInEventArgs e)
    {
        JObject jObject = new JObject();
        jObject["voice"] = Convert.ToBase64String(e.Buffer);

        byte[] messageByte = Encoding.ASCII.GetBytes(jObject.ToString().Replace("\r\n", "") + "\n");
        socket.Send(messageByte);
    }

$scope.socket.onmessage = function (response) 
{ 
    var data = JSON.parse(response.data);
    if(data.id == $scope.id) {
        if(data.voice) {
            var voice = data.voice;
            var sound = new Audio("data:audio/wav;base64," + voice);
            sound.play();
        }
    }
};

1 ответ

Вы просто отправляете сырые сэмплы, а не правильно отформатированный WAV-файл. Вам нужно использовать WaveFileWriter написать в MemoryStream (завернутый в IgnoreDisposeStream) распоряжаться WaveFileWriter а затем получить доступ к MemoryStream базовый байтовый массив. Также вы не принимаете во внимание BytesRecorded,

Даже если вы работаете, я подозреваю, что вы получите очень прерывистый звук, поскольку каждый WAV-файл будет длиться несколько сотен мс, и они не обязательно будут воспроизводиться идеально один за другим.

Другие вопросы по тегам