2014-08-27 2 views
0

Я использую WMPLib в C#, и я хочу получить время видео в миллисекундах. Я буду настраивать другую программу, используя эти значения в миллисекундах. Есть ли способ получить данные VMP за миллисекунды ? Также я попробовал:Как получить время видео в миллисекундах

double temp = axWindowsMediaPlayer1.Ctlcontrols.currentPosition; 

ответ

0

Я думаю, что ближе всего, что вы можете получить это currentPositionTimecode свойства, наряду с текущим положением во время дает вам номер кадра. Зная частоту кадров позволит вам приблизиться к позиции в миллисекундах:

var frameRateMs = frameRate/1000; 

var positionMs = currentFrameNumber/frameRateMs 
+0

Я попытался написать axWindowsMediaPlayer1.Controls.CurrentPositionTimeCode, но компилятор не нравится. У вас есть идея? – dodotu

+0

@dodotu - это нижний регистр «c» в «Timecode» и в «current». Компилятор должен был предоставить вам сообщение об ошибке, а не сообщение «Мне не нравится». – BartoszKP

+0

Я знаю, но когда я нажал ctrl + space после Controls, currentPositionTimecode не отображается. Фактически моя проблема была в этом. – dodotu

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; 
Смежные вопросы