【问题标题】:Decoding GSM 6.10 parts in NAudio在 NAudio 中解码 GSM 6.10 部分
【发布时间】:2014-03-16 10:37:06
【问题描述】:

如何在 NAudio 中即时解码 GSM 6.10(全速率)编解码器音频字节数组?消息来源说波解码是一次处理的,我无法处理几个字节的波(如果我错了,请纠正我)。

我的情况是我从服务器接收到 GSM 6.10 音频的字节数组,可以指定数组大小,但如何解码并写入设备?

编辑:

我做错了什么? 根据 Mark 的解决方案,这应该可行,但我听到的只是声音失真:

        WaveOut waveO = new WaveOut();
        BufferedWaveProvider waveP = new BufferedWaveProvider(new WaveFormat(8000, 16, 1));
        waveO.Init(waveP);
        waveO.Play();

        INetworkChatCodec cod = new Gsm610ChatCodec();

        new Thread(delegate()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.nch.com.au/acm/8kgsm.wav");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (Stream resStream = response.GetResponseStream())
            {
                if (resStream.CanRead)
                {
                    byte[] buf = new byte[65];
                    int count = 0;
                    do
                    {
                        count = resStream.Read(buf, 0, buf.Length);
                        if (count != 0)
                        {
                            byte[] decoded = cod.Decode(buf, 0, count);
                            waveP.AddSamples(decoded, 0, decoded.Length);
                            Thread.Sleep(50);
                        }
                    }
                    while (count > 0);
                }
            }
        }).Start();

【问题讨论】:

    标签: c# audio gsm naudio decoding


    【解决方案1】:

    您可以使用 AcmStream 类执行此操作,传入 Gsm610WaveFormat 作为源格式和 8kHz 16 位单声道作为输出格式。 NAudio 源代码中的网络聊天演示显示了这一点,可以实时解码。

    【讨论】:

    • 网络聊天演示中的解码器与wave play示例中的解码器有什么不同吗?播放示例中的声音是正确的,但是在解码字节数组时,我听到的都是一团糟。例如这个文件:nch.com.au/acm/8kgsm.wav 我做错了什么?
    • 你必须得到完全正确的 WaveFormat。检查该 WAV 文件中实际包含的 WaveFormat 结构
    • WaveFormat 似乎完全一样。您能否在空闲时间提供一个播放(从磁盘)从字节数组解码的 GSM 6.10 波形文件(link)的工作示例?我想我错过了一些东西,我们将不胜感激。谢谢。
    • 请检查我的问题的编辑部分有什么问题。谢谢。
    • 您收到的是 WAV 文件,而不仅仅是原始的 GSM6.10。不应将整个 WAV 文件提供给编解码器,只提供文件的数据部分
    猜你喜欢
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多