2014-08-27 210 views
0

我在C#中使用WMPLib,我想以毫秒爲單位獲取視頻時間。我將使用這些毫秒值配置另一個程序。是否有任何方法可以以毫秒爲單位獲取VMP數據? 另外我想:我怎樣才能獲得視頻時間爲毫秒

double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition; 

回答

0

我認爲最接近你可以得到的是currentPositionTimecode屬性,它在時間的當前位置沿給你一個幀數。瞭解幀速率可以讓你接近毫秒的位置:

var frameRateMs = frameRate/1000; 

var positionMs = currentFrameNumber/frameRateMs 
+0

我試圖寫axWindowsMediaPlayer1.Controls.CurrentPositionTimeCode但編譯器不喜歡這個。你有什麼想法嗎? – dodotu 2014-08-27 13:18:01

+0

@dodotu「時間碼」和「當前」中的小寫字母「c」。編譯器應該已經向您顯示了一條明確的錯誤消息,而不是「我不喜歡這條消息」。 – BartoszKP 2014-08-27 13:19:13

+0

我知道,但當按Ctrl +空格後控件,currentPositionTimecode不顯示。其實我的問題是這樣的。 – dodotu 2014-08-27 13:23:31

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):

string text = ((IWMPControls2)player1.Ctlcontrols).currentPositionString; 
string text2 = ((IWMPControls2)player1.Ctlcontrols).currentPositionTimecode; 
相關問題