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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#axWindowsMediaPlayer使用自定义轨道栏更改视频位置相关的知识,希望对你有一定的参考价值。

我有一个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值更改视频当前位置。这不起作用。

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

答案

我解决了这个问题。问题不在于媒体播放器,问题在于使用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

以上是关于C#axWindowsMediaPlayer使用自定义轨道栏更改视频位置的主要内容,如果未能解决你的问题,请参考以下文章

axWindowsMediaPlayer 控件怎么实现连续播放多个

使用 System.Media.SoundPlayer.PlaySync() 和 AxWindowsMediaPlayer 并行播放声音

C#中添加AxWindowsMediaPlayer控件后如何使用 谢谢好心人帮帮忙

如何处理 Windows 媒体播放器控件(即 axWindowsMediaPlayer)然后再次使用它?

求助:关于C#中使用axwindowsmediaplayer 播放wav文件的问题

求助:C#中使用axwindowsmediaplayer 播放wav文件的问题