【问题标题】:Stalling WMP with 4 or more streams使用 4 个或更多流停止 WMP
【发布时间】:2020-05-04 13:21:44
【问题描述】:

我用 C 语言开发了一个应用程序,可以在后台显示 4 个视频和 1 个声音文件。

视频使用了微软在 WMP SDK 中提供的 C++ 类中的 WMP 对象。音频使用 Windows 的 MCI(媒体控制接口)发送命令字符串。

为了能够播放许多不同的格式,我安装了 windows.7.codec.pack

我遇到一个问题,当播放超过 3 个媒体文件(视频或音频)时,媒体停止。要开始的视频不断地从状态 3(正在播放)循环到状态 9(准备新媒体)再到状态 10(准备开始播放 - 没有任何事情发生),依此类推。这被视为视频闪烁(状态 3),然后是几秒钟的无内容(黑色或桌面背景,状态 9)。视频开始播放后,它会一直播放到结束。

将要播放的媒体文件数量减少到 2 个视频和 1 个音频可以让它正常播放;增加到 3 个或更多视频和 1 个音频,就会发生这种情况。任务管理器显示 CPU 负载低于 25%,因此 CPU 不是问题。

似乎 MCI 和 WMP 在后台共享内容,因为不仅视频停顿,而且音频停止但不报告错误(查询 MCI 返回它正在播放,但没有声音)。

我升级到windows.7.codec.pack.v4.2.6。这表现很糟糕

我回复到windows.7.codec.pack.v4.1.6。这具有更好的性能,但仍然不完美。

我的问题:

  • 有什么方法可以配置 Windows 或编解码器包以无缝处理 5 个流?

  • 如何向开发人员报告此问题?

  • 还有其他没有这个问题的编解码器包吗?

  • 还有其他建议吗?

系统信息:Intel i7-3520M X64 双核,2.9Ghz,8GB 物理内存和 NVIDIA Quatro K1000M 显示适配器。

【问题讨论】:

    标签: windows-7 codec windows-media-player mci


    【解决方案1】:

    我想我找到了解决办法。

    播放视频后,我调用了 Player 的 Close() 方法。文档说:

    close 方法释放 Windows Media Player 资源。

    备注
    此方法关闭当前数字媒体文件,而不是播放器本身。

    确实我想释放媒体文件,这样文件系统就不会再忙了。但是,似乎释放的资源不仅仅是媒体文件。结果,为了播放下一个媒体文件,播放器不得不再次分配资源。看来这是一个瓶颈。

    不再调用Close(),而只是将下一个要播放的媒体文件的 URL(文件名)提供给它现在解决了这个问题。 (有时我仍然需要重试,但总体性能现在可以接受。)

    当下一个媒体文件开始播放时,媒体文件被释放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2022-01-09
      相关资源
      最近更新 更多