如何让视频时间为毫秒

时间:2014-08-27 12:54:28

标签: c# axwindowsmediaplayer

我在C#中使用WMPLib,我希望以毫秒为单位获得视频时间。我将使用这些毫秒值配置另一个程序。有没有办法以毫秒为单位获取VMP数据? 我也试过了:

double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;

2 个答案:

答案 0 :(得分:0)

我认为最接近的是currentPositionTimecode属性,它与当前时间位置一起给出一个帧编号。知道帧速率可以让你以毫秒为单位估算位置:

var frameRateMs = frameRate/1000;

var positionMs = currentFrameNumber/frameRateMs

答案 1 :(得分:0)

你知道,对不起,但是这很明显,我无法给人的印象是你以错误的方式陈述了你的问题,或者你错过了那些大事。

喜欢,基础数学。

currentPosition中提供,它是double,因此包含分数。要在几毫秒内得到它,只需将其乘以1000

// get your player from UI
AxWindowsMediaPlayer player1 = .....;

// not even a cast is needed
double millis = player1.Ctlcontrols.currentPosition * 1000;

因此,要以毫秒为单位获取位置,除了基本的AxWMP接口之外不需要

如果你真的想把它作为文本或时间码,它们也可以被取出,但是需要使用强制转换来处理正确的接口(因为AxWindowsMediaPlayer默认使用IWMPControls,并且需要IWMPControls2 / 3):< / p>

string text = ((IWMPControls2)player1.Ctlcontrols).currentPositionString;
string text2 = ((IWMPControls2)player1.Ctlcontrols).currentPositionTimecode;