将Microsoft.Skype.Bots.Media AudioMediaBuffer记录到wave文件中

问题描述 投票:2回答:1

我正在尝试在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();
        }

Note:以上摘录来自Compliance Recording Bot的git hub sample

我想出的一种可能的方法是:

 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();
        }

但是问题是,只要继续进行通话/录音,音频媒体缓冲区数据就会继续流(流),并且此解决方案将不起作用。

任何帮助将不胜感激。

c# botframework voip microsoft-teams microsoft-skype-bot
1个回答
0
投票

您能否在https://github.com/microsoftgraph/microsoft-graph-docs/issues下发布您的问题以提高知名度?谢谢

© www.soinside.com 2019 - 2024. All rights reserved.