Я пытаюсь записать входящие данные буфера на 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();
}
Но проблема в том, что данные буфера аудио-носителя продолжают поступать (поток), пока продолжается вызов / запись, и это решение не не работает.
Любая помощь будет оценена.