我在C#中使用WMPLib,我希望以毫秒为单位获得视频时间。我将使用这些毫秒值配置另一个程序。有没有办法以毫秒为单位获取VMP数据? 我也试过了:
double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
答案 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;