Запись Microsoft.Skype.Bots.Media AudioMediaBuffer в волновой файл - PullRequest
2 голосов
/ 24 января 2020

Я пытаюсь записать входящие данные буфера на Microsoft.Skype.Bots.Media audioSocket.AudioMediaReceived.

Согласно полученным до сих пор сведениям, это может быть похоже на сохранение входящих буферных данных на диск и использование таких инструментов, как ffmpeg, для преобразования этих буферных данных в требуемый файл аудиоформата.

Некоторые фрагменты кода :

this.audioSocket.AudioMediaReceived += this.OnAudioMediaReceived;

private void OnAudioMediaReceived(object sender, AudioMediaReceivedEventArgs e)
        {
            this.GraphLogger.Info($"Received Audio: [VideoMediaReceivedEventArgs(Data= 
            <{e.Buffer.Data.ToString()}>, Length={e.Buffer.Length}, Timestamp={e.Buffer.Timestamp})]");

            // To Do Recording i.e saving each incoming buffer data and create a audio file after the record ends. 
           e.Buffer.Dispose();
        }

Примечание : Выше приведен фрагмент из git концентратора выборки бота записи соответствия.

Один из возможных способов, который я выяснил, это:

 private void OnAudioMediaReceived(object sender, AudioMediaReceivedEventArgs e)
        {
            this.GraphLogger.Info($"Received Audio: 
            [VideoMediaReceivedEventArgs(Data=<{e.Buffer.Data.ToString()}>, 
            Length={e.Buffer.Length}, Timestamp={e.Buffer.Timestamp})]");
            byte[] managedArray = new byte[e.Buffer.Length];
            var handler = e.Buffer.Data;
            int start = 0;
            int length = (int)e.Buffer.Length;
            Marshal.Copy(handler, managedArray, start, length);
            var path = @"D:\files";
            var filePath = Path.Combine(path, "test.wav");
            File.WriteAllBytes(filePath, managedArray);

            // TBD: Compliance Recording bots can record the Audio here
            e.Buffer.Dispose();
        }

Но проблема в том, что данные буфера аудио-носителя продолжают поступать (поток), пока продолжается вызов / запись, и это решение не не работает.

Любая помощь будет оценена.

...