Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NAudio Universal:等待事件超时_C#_Wpf_.net 4.0_Windows 10 Universal_Naudio - Fatal编程技术网

C# NAudio Universal:等待事件超时

C# NAudio Universal:等待事件超时,c#,wpf,.net-4.0,windows-10-universal,naudio,C#,Wpf,.net 4.0,Windows 10 Universal,Naudio,我无法使用Windows Universal的Naudio播放解码的opus数据包。声音播放一瞬间,然后停止,出现异常。我收到的异常是无效操作-等待事件时超时 这是我的密码: public void ForStackOverFlow() { var waveOut = new WasapiOutRT(AudioClientShareMode.Shared, 200); waveOut.PlaybackStopped += WaveOut_PlaybackStopped;

我无法使用Windows Universal的
Naudio
播放解码的opus数据包。声音播放一瞬间,然后停止,出现异常。我收到的异常是
无效操作-等待事件时超时

这是我的密码:

public void ForStackOverFlow()
{
    var waveOut = new WasapiOutRT(AudioClientShareMode.Shared, 200);
    waveOut.PlaybackStopped += WaveOut_PlaybackStopped;
    var opusDecoder = OpusDecoder.Create(48000, 1);
    var ms = new MemoryStream();

    var voiceData1 = "3OxQRhb / datLhcmWgOhYPrYGwxyciCulHDwJl8RmJHkdWVcENoAYvgLtcFn0LBLbLJ2jHRPv8Wb / oZSsTp3oJbllORxffNIyZO1TCCf2L + dkN5AMKRmiIyYaJQrh5Bt4ucLfNskhwKwz / CfLV7RRTZrBJM + 0AqBXS9dt3 + yeBofItCGUm / GCT94pW5fl9U7Zez + RodOAzyEemdCS + Zfpquw0XctnM0L / b1llt3oHZOpot1BUY + tDyXmSNbcfxPjYmVvPT2y4aQ ==";
    var sample = Convert.FromBase64String(voiceData1);

    int frameSize = 1920;  

    short[] outputBuffer = new short[frameSize];
    var decodedLen = opusDecoder.Decode(sample, 0, sample.Length, outputBuffer, 0, frameSize, false);

    short[] finalOutput = new short[frameSize];
    Array.Copy(outputBuffer, finalOutput, finalOutput.Length); 

    var audioBytes = AudioMath.ShortsToBytes(finalOutput, 0, finalOutput.Length); 

    System.Diagnostics.Debug.WriteLine("AUDIOBYTES:" + Convert.ToBase64String(audioBytes));

    ms.Write(audioBytes, 0, audioBytes.Length);

    ms.Flush();
    ms.Seek(0, SeekOrigin.Begin);
    IWaveProvider provider = new RawSourceWaveStream(ms, new WaveFormat(48000, 16, 1));
    waveOut.Init(provider);
    waveOut.Play();
}

private void WaveOut_PlaybackStopped(object sender, StoppedEventArgs e)
{
    //event fires with exception.
}

如果有任何帮助,我们将不胜感激。

我说得对吗,您得到了结果的长度:

var decodedLen = opusDecoder.Decode
如果是,为什么不使用该变量创建
finalOutput
数组,并使用
framesize
常量

short[] finalOutput = new short[frameSize];
这句话不应该是这样的吗:

short[] finalOutput = new short[decodedLen];

我说的对吗,这里你得到了结果的长度:

var decodedLen = opusDecoder.Decode
如果是,为什么不使用该变量创建
finalOutput
数组,并使用
framesize
常量

short[] finalOutput = new short[frameSize];
这句话不应该是这样的吗:

short[] finalOutput = new short[decodedLen];

您用于
OpusDecoder
AudioMath
的库是什么?您用于
OpusDecoder
AudioMath
的库是什么?