C++ 媒体基础:WavSink假脱机音频的速度快于实时消耗率-假脱机可以限制实时吗? 标题,我在媒体基础WavSink示例中工作,它将音频流解码为PCM和转储到文件。

C++ 媒体基础:WavSink假脱机音频的速度快于实时消耗率-假脱机可以限制实时吗? 标题,我在媒体基础WavSink示例中工作,它将音频流解码为PCM和转储到文件。,c++,windows,audio,real-time,ms-media-foundation,C++,Windows,Audio,Real Time,Ms Media Foundation,我的应用程序是将此流定向到FMOD音频引擎,该引擎以实时速率使用PCM音频-正如所听到的那样 WavSink对解码音频的假脱机速度快于其播放速度,从而在内存中不必要地积累解码音频。我想限制这一点,这样我们就不会提前太久解码,以避免浪费内存和计算资源,从而高效运行 我尝试过各种方法,但无论我做什么都会导致视频流出现故障 我想知道是否有人能提供一些洞察,使解码门没有故障的视频 MSDN论坛上的关联支持查询:< P>使媒体基础媒体管道通过排队“ MeStaseSnCurrestStase事件,使您能

我的应用程序是将此流定向到FMOD音频引擎,该引擎以实时速率使用PCM音频-正如所听到的那样

WavSink对解码音频的假脱机速度快于其播放速度,从而在内存中不必要地积累解码音频。我想限制这一点,这样我们就不会提前太久解码,以避免浪费内存和计算资源,从而高效运行

我尝试过各种方法,但无论我做什么都会导致视频流出现故障

我想知道是否有人能提供一些洞察,使解码门没有故障的视频


MSDN论坛上的关联支持查询:

< P>使媒体基础媒体管道通过排队“<代码> MeStaseSnCurrestStase事件,

使您能够将新数据发送到汇中

避免这样做,直到你真的需要新的数据。

< P>你让媒体基础媒体管道通过排队一个<代码> MeStaseSnCurrestStase事件,将新的数据发送到汇中,:


除非你真的需要新数据,否则不要这样做。

差不多了,罗曼,谢谢。。比我想象的好多了,但还是不太对劲。当我以这种方式拉动音频时,你可以在视频中看到效果,它也会爆发——这不是我想要的。也许我需要将时钟或其他东西解耦,因为音频滴答声也会导致视频滴答声,或者类似的东西。你能提供进一步的见解吗?不过谢谢,这几乎是正确的方法,只需要稍加改进。
MEStreamSinkRequestSample
是控制音频流和防止过度缓冲的方法。您可以灵活地对事件进行排队,它不必与我引用的代码片段完全相同,一次两个,您只需要知道它是
MEStreamSinkRequestSample
,其余的由您决定。它不应该干扰视频,也许你还有另外一个问题。不应该,但确实如此。我可以通过不突然提出要求来解决问题。也许改天再玩一下钟,看看是不是真的。现在就可以了,干杯。差不多了,罗曼,谢谢。。比我想象的好多了,但还是不太对劲。当我以这种方式拉动音频时,你可以在视频中看到效果,它也会爆发——这不是我想要的。也许我需要将时钟或其他东西解耦,因为音频滴答声也会导致视频滴答声,或者类似的东西。你能提供进一步的见解吗?不过谢谢,这几乎是正确的方法,只需要稍加改进。
MEStreamSinkRequestSample
是控制音频流和防止过度缓冲的方法。您可以灵活地对事件进行排队,它不必与我引用的代码片段完全相同,一次两个,您只需要知道它是
MEStreamSinkRequestSample
,其余的由您决定。它不应该干扰视频,也许你还有另外一个问题。不应该,但确实如此。我可以通过不突然提出要求来解决问题。也许改天再玩一下钟,看看是不是真的。现在就可以了,干杯。
        // Kick things off by requesting two samples...
        if (SUCCEEDED(hr))
        {
            hr = QueueEvent(MEStreamSinkRequestSample, GUID_NULL, hr, NULL);
        }
        if (SUCCEEDED(hr))
        {
            hr = QueueEvent(MEStreamSinkRequestSample, GUID_NULL, hr, NULL);
        }