axWindowsMediaPlaye
r コントロールを持つ Windows フォーム アプリケーションを作成しました。プレイリストは作成していませんが、.mp4ファイルを特定の場所に保存しています。Media Ended状態で次のビデオへのパスを渡します。初めて、プレイヤーは正しいパスを受け取り、プレイします。しかし、2 番目のビデオでは、プレイヤーが再生するための正しいパスを受信しているにもかかわらず、黒い画面しか表示されません。
メディア終了状態のコードは次のとおりです。
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
(Ready 状態) の後に正しいパスを取得することがわかりました。私は何を間違っていますか?
編集 1:現在のビデオが Media Ended 状態になった後、プレーヤーの再生が停止することがわかりました。と書いてもaxWindowsMediaPlayer.ctlControls.play();
メディアプレイヤーには影響ありません。これは axWindowsMediaPlayer のバグですか?