如何判断计算机中是否存在可以播放给定文件格式的播放器?

时间:2011-12-04 07:30:33

标签: c# video media-player

1.有一些文件格式(假设一个真实的音频文件?(。ra)),VLC可以播放,但Windows Media Player(默认)不能。如何判断系统中是否有可以播放我想要的文件格式的播放器?

2.另外,有没有办法以通用的方式在我的(C#)应用程序中嵌入这样的播放器?

1 个答案:

答案 0 :(得分:2)

这有点复杂,但我可以给你一个起点(现在代码写的时间太长了),所以这就是我的想法。

你只需去搜索

HKEY_CLASSES_ROOT 

hive扩展文件(在你的情况下,它将是.ra)。如果您找到这样的密钥,您将拥有一个子密钥,可帮助您确定用于打开它们的软件或使用“内容类型”字符串值,您在HKEY_CLASSES_ROOT中执行另一次搜索,您将再次拥有密钥说什么软件打开这种内容。

所以你需要使用处理Registry的类(假设你想以编程方式这样做)。

关于您的第二个问题:我认为没有一种通用方法可以在您的应用程序中嵌入任何播放器。这是因为不是每个玩家都会提供一些API来附加,你将没有合同可以依赖和许多其他问题。您可能在Windows API上取得了一些成功,但我怀疑它将涵盖您最终必须支持的所有场景。

你在这里几乎没有选择:

  1. 使用Media Player执行所有操作,如果文件格式为 不支持 - 允许用户使用默认播放器打开它 (用System简单调用System.Diagnostics.Process.Start 文件名应足以让Windows启动相应的 程序)(最简单的方法)。
  2. 编写自己的播放器,可以从各种读取/转换 格式。您应该能够找到许多支持的格式 由互联网上的不同图书馆或至少找到他们的RFC( 你可以做的最艰难的事情)。
  3. 使用某些库或软件转换您无法在后台播放的文件类型并使用媒体播放器运行它们,就像它们受到支持一样(可能是以最小的努力获得最大结果的好方法),您可以再次点火一些使用System.Diagnostics.Process.Start在后台进行处理,将它们隐藏起来并在转换后加载媒体。像YouTube这样的视频网站在上传文件时会做这样的事情 - 他们把它放在另一个进程上,这样它就可以转换,然后视频以普通格式提供(在大多数情况下,它是flash视频 - 我认为是flv)。 / LI>