gpt4 book ai didi

c# - axWindowsMediaPlayer:循环播放时出现黑屏

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:39 24 4
gpt4 key购买 nike

我创建了一个具有 axWindowsMediaPlayer 控件的 Windows 窗体应用程序。我没有在上面创建播放列表,但我已将我的 .mp4 文件存储在特定位置。我在 Media Ended 状态下将路径传递到我的下一个视频。玩家第一次收到正确的路径并开始游戏。但是对于第二个视频,尽管播放器收到了正确的播放路径,但我只能看到黑屏

这是我的媒体结束状态代码:

private void axWindowsMediaPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if(e.newState == 8)
{
//Getting jumpTo of selected page
var selectedElementJumpToValue = MainContentAreaBl.GetSelectedElementValue(_currentId, "jumpTo");
if (selectedElementJumpToValue != null)
{
_currentId = selectedElementJumpToValue;
if (_currentId != "menu")
{
pagination.Text = MainContentAreaBl.GetPaginationText(_currentId);
LaunchPlayer(selectedElementJumpToValue);
}
else
{
this.Hide();
this.SendToBack();
menu.BringToFront();
}
}
}
}

private void LaunchPlayer(string id)
{
string selectedElementPageTypeValue = MainContentAreaBl.GetSelectedElementPageTypeValue(id);
var playerFile = Path.Combine(Common.ContentFolderPath, MainContentAreaBl.GetSelectedElementDataPathValue(id));
if (selectedElementPageTypeValue == "video")
{
InitialiseMediaPlayer();
axShockwaveFlash.Stop();
axShockwaveFlash.Visible = false;
if (File.Exists(playerFile))
{
axWindowsMediaPlayer.URL = playerFile;
}
}
else if (selectedElementPageTypeValue == "flash")
{
InitialiseShockwaveFlash();
axWindowsMediaPlayer.close();
axWindowsMediaPlayer.Visible = false;
if (File.Exists(playerFile))
{
axShockwaveFlash.Movie = playerFile;
axShockwaveFlash.Play();
}
}
}

private void InitialiseMediaPlayer()
{
axWindowsMediaPlayer.Visible = true;
axWindowsMediaPlayer.enableContextMenu = false
axWindowsMediaPlayer.uiMode = "none";
axWindowsMediaPlayer.Dock = DockStyle.Fill;
}

当我调试我的应用程序时,我看到 Media Player 在 e.newState == 10(就绪状态)之后获得了正确的路径。我做错了什么?

编辑 1: 我发现在我当前的视频进入 Media Ended 状态后,播放器停止播放。即使我写 axWindowsMediaPlayer.ctlControls.play();,它也不会影响媒体播放器。这是 axWindowsMediaPlayer 中的错误吗?

最佳答案

我也遇到过这个问题。最可能的原因是您在播放状态仍在变化时发出命令 axWindowsMediaPlayer.ctlControls.play();(在 Media Ended 之后,它将变为 < strong>Ready 状态)。如果在播放状态正在更改时向播放器发送命令,则它不会执行任何操作。导致错误的另一个可能原因是,有时媒体状态 9(转换)需要包含在 if(e.newState == 8) 中,这样您就有 if(e.newState == 8 | e.newState==9)。我遇到过在状态 8(媒体结束)上没有出现的情况,可能是因为它发生得非常快并且跳转到过渡 - 不完全确定这个原因但我有一个没有移动到下一个视频的播放器因为这件事发生在播放列表中。为了解决这个问题,我做了类似的事情:

  if (e.newState == 8 | e.newState== 9 | e.newState== 10)
{
if (e.newState == 8)
{ //Insert your code here
}

这会根据您要实现的目标而略有不同。另一件需要注意的事情是使用 PlayStateChange 事件来设置视频 URL,这会由于 WMP 的重新输入问题而导致问题 - 有关我最后评论的进一步解释,请参阅其他帖子: here is a good oneanother here .希望这对您有所帮助!

关于c# - axWindowsMediaPlayer:循环播放时出现黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com