从VB6中的WMP(10+;)控件访问视频帧率

从VB6中的WMP(10+;)控件访问视频帧率,vb6,wmp,Vb6,Wmp,我必须使用著名的工具组合,因此相当于“不要那样做”的建议没有帮助(-: 我找不到可靠的方法来确定加载到WMP控件中的视频的帧速率。有没有已知的方法来获取此值?这是一条如此基本的信息,我简直不敢相信我没有遗漏什么 理论上,我可以举例说明IWMPMedia3并将其设置为[player]。currentmedia然后请求.GetAttributeByType(“framerate”,“0”),但显然,播放器/媒体必须处于某种状态才能工作,我无法确定该状态何时存在 在IDE中,当我尝试获取属性时,它总是

我必须使用著名的工具组合,因此相当于“不要那样做”的建议没有帮助(-:

我找不到可靠的方法来确定加载到WMP控件中的视频的帧速率。有没有已知的方法来获取此值?这是一条如此基本的信息,我简直不敢相信我没有遗漏什么

理论上,我可以举例说明
IWMPMedia3
并将其设置为
[player]。currentmedia
然后请求
.GetAttributeByType(“framerate”,“0”)
,但显然,播放器/媒体必须处于某种状态才能工作,我无法确定该状态何时存在

在IDE中,当我尝试获取属性时,它总是失败,因为
过程调用或参数无效。
。我打开调试窗口,测试是否实例化了正确的对象——它们是。然后我可以继续,并获得正确的帧速率。显然,这在生产环境中不起作用。(-:


不仅仅是等待才起作用——我必须实际调试对象上的测试以使其继续进行。

在将源视频设置到控件后,帧速率项似乎不会立即初始化。我试图等待并调用DoEvents,但起初发现没有可靠的方法使其工作。显示消息e盒和等待30秒有时能做到这一点,但并不总是如此

然后,我决定通过代码检查属性,令我惊讶的是,使用getAttributeCountByType()简单地检查似乎可以在不等待一毫秒的情况下初始化该项

在以下代码中,如果启用了该复选框(调用getAttributeCountByType()),则该函数始终成功。我尝试了AVI、MPEG和MP4文件,它在Windows 7上运行。如果未选中该复选框,则所有类型的视频文件都会失败:

WindowsMediaPlayer1.URL = Text1.Text
Dim media As IWMPMedia3
Set media = WindowsMediaPlayer1.currentMedia
If Check1.Value = vbChecked Then
   Label1.Caption = "media.getAttributeCountByType " & media.getAttributeCountByType("framerate", "")
End If
MsgBox "Frame Rate = " & media.getItemInfoByType("framerate", "", 0)

非常好的信息,谢谢。我从来没有得到过。顺便说一句,我认为使用IWMPEDIA3的步骤可能是多余的。currentmedia项默认情况下似乎支持该接口。将进行测试。这并不明显,但是。currentmedia确实支持IWPMedia3,至少在WMP的较新版本中是如此。就我而言,获取帧速率对.FLV不起作用可以看出(显然它没有将其存储为元数据),但这是到目前为止唯一的问题。再次感谢!我的大部分多媒体体验都不是使用WMP,所以我只是按照您的指导介绍了IWMP Media3。您对FLV的看法是对的,因为我在这里使用了一个文件进行了测试,但帧速率不起作用。还有一个解决方案适用于所有4种格式(和其他人)。这是我工作的公司提供的,但我上次没有建议,因为你明确提到了WMP控件。如果你愿意,可以尝试从网站上进行免费评估。如果你必须坚持,它可以与VB6一起使用。