C # axWindowsMediaPlayer Изменить положение видео с помощью пользовательского трекбара - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть axWindowsMediaPlayer на WinForm с uiMode=none.Я использую свои пользовательские элементы управления для воспроизведения.Я использую этот метод , чтобы связать trackBar с axWindowsMediaPlayer.

Я хочу изменить позицию видео (перейти к определенному времени), когда пользователь прокручивает trackBar,так же, как Windows Media Player.

private void trackBar_Scroll(object sender, EventArgs e)
{
    if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
    {
        axWindowsMediaPlayer.Ctlcontrols.currentPosition = trackBar.Value;
    }
}

Это не работает.Я проверил много ответов Stackoverflow, включая это , это и документация Microsoft , но ни один из них не работает.

У меня две цели:

  1. При воспроизведении мультимедиа trackBar должно показывать текущую позицию воспроизводимого медиафайла.Это работает нормально.
  2. Когда пользователь прокручивает trackBar, медиаплеер должен изменить текущую позицию видео на основе значения trackBar.Это не работает.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 05 октября 2018

Я решил проблему.Проблема была не в мультимедийном проигрывателе, проблема была в том, что мультимедийные файлы, воспроизводимые с помощью axWindowsMediaPlayer.

axWindowsMediaPlayer, воспроизводят такие файлы, как MKV, но если надлежащие кодеки не установлены,Ctlcontrols в основном трекбар не работает из кода или пользовательского интерфейса.С исходно поддерживаемыми форматами этот код работает отлично.

private void trackBar_Scroll(object sender, EventArgs e)
{
    if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
        axWindowsMediaPlayer.Ctlcontrols.currentPosition = trackBar.Value;      
}

Для медиафайлов, не поддерживаемых изначально, необходимо установить их кодеки.Подробнее о поддерживаемых форматах файлов см. В этой статье базы знаний Типы файлов, поддерживаемые проигрывателем Windows Media

...