【问题标题】:What could make Phonon/DirectShow miss a standard codec?是什么让 Phonon/DirectShow 错过了标准编解码器?
【发布时间】:2012-09-17 01:52:00
【问题描述】:

我们正在开发一个基于 Qt 的应用程序,其中包括使用 Phonon 播放视频。我们使用具有 MJPEG 压缩的 .avi 文件(因为我们需要快速查找特定帧)。

在开发机器(运行 Windows 7)上一切正常 - Phonon 使用 DirectShow 后端,DirectShow 使用来自quartz.dll 的标准 MJPEG 编解码器加载和播放我们的视频文件。

但是 Windows 7 上的一些测试人员报告说视频播放中断,我在其中一台机器上进行了快速操作,并没有发现任何特别之处,但是:

  • InstalledCodecs 实用程序报告 MJPEG 编解码器存在并启用
  • Windows Media Player 可以正常播放文件(但我认为它使用不同的后端,而不是 DirectShow)。
  • Media Player Classic 配置为使用 DirectShow 并且标准 MJPEG 插件抱怨没有可用的编解码器。
  • 我们的软件确实坏了,显然是出于同样的原因,不管它是什么。

phonon 后端安装在插件目录中,该目录已添加到我在日志中看到的搜索路径中,因此应该加载它。我在开发机器上重命名了 QtSDK,以确保只有已安装的 qt 插件可用于应用程序并且它继续在那里工作。

如果您有任何关于下一步看哪里的建议,我将不胜感激。

我最终想知道的是:

  • 可能是什么问题
  • 安装程序或应用程序本身如何检测到问题
  • 如何解决问题 - 自动解决,或通过指示用户

【问题讨论】:

  • 另一个编解码器可以接管JPEG 解码(或MJPG - 无论您使用什么)。您最好在发生错误时拥有过滤器图形拓扑,以及由于某些 API 方法而应该注册的错误代码。
  • 我们不介意其他编解码器是否接管解码,只要它会产生帧 :-) 我会考虑编写一个简单的测试应用程序来尝试构建过滤图表并测试任何错误情况以及其他情况。感谢您的支持;)

标签: qt directshow phonon


【解决方案1】:

我最近遇到了类似的问题,但它与各种视频文件格式有关,不一定只是 MPEG 压缩。

我找到的解决方案是安装一个整体编解码器包。这对少数计算机上的设置做得很好。如果您要部署给大量用户,您可能希望找到您需要的确切编解码器并确保 phonon 可以找到它们。

K-Lite Codec Pack Download

【讨论】:

  • 在开发机器上,我们没有安装 k-lite 编解码器(或任何非标准)并且视频播放。作为一个实验,我实际上在测试者的机器上安装了 k-lite full pack,但它没有帮助。所以我猜问题是他们机器上的一些错误配置,只是我不知道如何调查它。
  • Qt 有时会在运行时寻找一些额外的 dll。使用dependency walker,让你的程序很难找到Qt的安装文件夹,看看它缺少什么Dll。
  • qt-project.org/doc/qt-5.0/qcoreapplication.html#libraryPaths 这里提到 Qt 中的库路径会在您的开发人员机器上搜索 Qt 的安装目录,因此有时模块在开发中工作正常,但在部署时会丢失其他 dll。 .. 我还在某处读到 Phonon 有时依赖于 QtOpenGL4.dll。
  • 在开发机器上,我在 QtSDK 中只有 Qt,在测试时我重命名了它的目录并制作了应用程序日志 libraryPaths - 当 QtSDK 重命名时,它甚至不会出现在 libraryPaths ,但视频仍在播放。因此,我怀疑该应用程序会在安装它们的位置(.exe 旁边)找到 qt 插件。 QtOpenGL4 业务我必须仔细检查...
  • OSX 有没有等价物? Perian 似乎不适用于通过 Phonon 的 MP4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2020-04-18
  • 1970-01-01
相关资源
最近更新 更多