Создайте аудиопоток http с VLC в C# из записываемого аудио WAV

Я использую NAudio библиотека для записи систем микрофонного ввода - постоянно.

private void RecordStart() {
        try {
            _sourceStream = new WaveIn {
                DeviceNumber = _recordingInstance.InputDeviceIndex,
                WaveFormat =
                    new WaveFormat(
                    44100,
                    WaveIn.GetCapabilities(_recordingInstance.InputDeviceIndex).Channels)
            };
            _sourceStream.DataAvailable += SourceStreamDataAvailable;
            _sourceStream.StartRecording();
        } catch (Exception exception) {
            Log.Error("Recording failes", exception);
        }
}

есть обработчик событий, который будет получать данные из потока записи, когда данные доступны.

Мне удалось создать потоковую передачу аудио (mp3) HTTP с установленным в моей системе проигрывателем VLC - с существующим аудиофайлом.

        const int portNumber = 8089;
        const string streamName = "fstream_1789846";
        const string audio = "C:\\Recording\\Audio\\1789846.wav";
        const string windowQuiet = "-I dummy --dummy-quiet";
        const string tanscode = ":sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}";
        var stream = String.Format(@":http{{mux=mp3,dst=:{0}/{1}}}", portNumber, streamName);
        const string keep = ":sout-keep";

        var vlcStreamParamList = new List<string> {windowQuiet, audio, tanscode+stream, keep};

        var process = new Process
        {
            StartInfo =
            {
                FileName = @"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe",
                RedirectStandardOutput = true,
                UseShellExecute = false,
                CreateNoWindow = true                    
            }
        };

        var vlcParamString = String.Join(" ", vlcStreamParamList);
        process.StartInfo.Arguments = vlcParamString;
        process.Start();

В приведенном выше коде у меня есть запись завершенного окончательного аудио файла в исходном каталоге - C:\Recording\Audio\1789846.wav

Я попытался создать поток с активным файлом, который постоянно обновляется устройством записи. (SourceStreamDataAvailable функция записи байтов в этот файл). Я использовал тот же код выше.

Прекращение потоковой передачи через несколько секунд / минут. (Я думаю, что он создает поток только из первоначально доступных данных и не использует обновленный файл / контент.)

  1. Есть ли способ решить эту проблему??
  2. Можно ли создать аудиопоток HTTP с байтами, которые я записал с микрофона, используя NAudio записывающее устройство .? без создания файла.

В пределах SourceStreamDataAvailable функция, отправка любого содержимого, доступного для потока, и постоянно обновлять его.

private void SourceStreamDataAvailable(object sender, WaveInEventArgs e) {

        //create an http stream with Vlc/LibVlc/BASS.Net or any library
        //and stream the bytes received from recording.
        //e.BytesRecorded);  
}

Я сделал достаточно Google, чтобы реализовать это решение, но не повезло. Я в порядке с LibVlc или любыми библиотеками с открытым исходным кодом VLC для C#.

0 ответов

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