我在C#中使用WMPLib,我想以毫秒爲單位獲取視頻時間。我將使用這些毫秒值配置另一個程序。是否有任何方法可以以毫秒爲單位獲取VMP數據? 另外我想:我怎樣才能獲得視頻時間爲毫秒
double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
我在C#中使用WMPLib,我想以毫秒爲單位獲取視頻時間。我將使用這些毫秒值配置另一個程序。是否有任何方法可以以毫秒爲單位獲取VMP數據? 另外我想:我怎樣才能獲得視頻時間爲毫秒
double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
我認爲最接近你可以得到的是currentPositionTimecode
屬性,它在時間的當前位置沿給你一個幀數。瞭解幀速率可以讓你接近毫秒的位置:
var frameRateMs = frameRate/1000;
var positionMs = currentFrameNumber/frameRateMs
你知道,很抱歉,但是這太明顯了,我不能有一個印象,無論你在一個錯誤的方式指出你的問題幫助,或你錯過了一些巨大的東西。
像基本的數學。
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;
我試圖寫axWindowsMediaPlayer1.Controls.CurrentPositionTimeCode但編譯器不喜歡這個。你有什麼想法嗎? – dodotu 2014-08-27 13:18:01
@dodotu「時間碼」和「當前」中的小寫字母「c」。編譯器應該已經向您顯示了一條明確的錯誤消息,而不是「我不喜歡這條消息」。 – BartoszKP 2014-08-27 13:19:13
我知道,但當按Ctrl +空格後控件,currentPositionTimecode不顯示。其實我的問題是這樣的。 – dodotu 2014-08-27 13:23:31