C++ 媒体基础:WavSink假脱机音频的速度快于实时消耗率-假脱机可以限制实时吗? 标题,我在媒体基础WavSink示例中工作,它将音频流解码为PCM和转储到文件。
我的应用程序是将此流定向到FMOD音频引擎,该引擎以实时速率使用PCM音频-正如所听到的那样 WavSink对解码音频的假脱机速度快于其播放速度,从而在内存中不必要地积累解码音频。我想限制这一点,这样我们就不会提前太久解码,以避免浪费内存和计算资源,从而高效运行 我尝试过各种方法,但无论我做什么都会导致视频流出现故障 我想知道是否有人能提供一些洞察,使解码门没有故障的视频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事件,使您能
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);
}