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

问题描述 投票:0回答:1

我有一个axWindowsMediaPlayer在WinForm与uiMode=none。我正在使用自定义控件来处理播放。我正在使用this methodtrackBaraxWindowsMediaPlayer联系起来。

当用户滚动trackBar时,我想改变视频位置(跳转到特定时间),就像windows media player一样。

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

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

我有两个目标:

  1. 播放媒体时,trackBar应显示正在播放的媒体文件的当前位置。这工作正常。
  2. 当用户滚动trackBar时,媒体播放器应根据trackBar值更改视频当前位置。这不起作用。

任何帮助将受到高度赞赏。

c# winforms playback trackbar axwindowsmediaplayer
1个回答
0
投票

我解决了这个问题。问题不在于媒体播放器,问题在于使用axWindowsMediaPlayer播放的媒体文件。

axWindowsMediaPlayer播放MKV这样的文件很好,但是如果没有安装正确的编解码器,那么Ctlcontrols主要是Trackbar无法通过代码或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

© www.soinside.com 2019 - 2024. All rights reserved.