C#axWindowsMediaPlayer使用自定义轨迹栏更改视频位置

时间:2018-09-26 15:52:15

标签: c# winforms playback trackbar axwindowsmediaplayer

我在WinForm上有一个axWindowsMediaPlayer的{​​{1}}。我正在使用自定义控件来处理播放。我正在使用this methoduiMode=nonetrackBar关联。

我想在用户滚动axWindowsMediaPlayer时更改视频位置(跳至特定时间),就像Windows Media Player一样。

trackBar

这不起作用。我检查了许多Stackoverflow答案,包括thisthisMicrosoft documentation,但没有一个起作用。

我有两个目标:

  1. 播放媒体时,private void trackBar_Scroll(object sender, EventArgs e) { if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer.Ctlcontrols.currentPosition = trackBar.Value; } } 应该显示正在播放的媒体文件的当前位置。一切正常。
  2. 当用户滚动trackBar时,媒体播放器应基于trackBar值更改视频当前位置。这不起作用。

我们将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。问题不在于媒体播放器,而是与axWindowsMediaPlayer一起播放的媒体文件有关。

axWindowsMediaPlayer可以很好地播放MKV之类的文件,但是如果未安装正确的编解码器,则Ctlcontrols主要是跟踪栏不能在代码或UI中运行。使用本机支持的格式,此代码可以很好地工作。

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

对于本机不支持的媒体文件,需要安装其编解码器。有关受支持的文件格式的详细信息,请参见此知识库文章File types supported by Windows Media Player