У меня есть Windows Media Player COM в моем проекте Windows Form, который превосходно воспроизводит и открывает видео.Однако я хотел бы иметь возможность получить первый кадр загруженного видео, чтобы пользователи моей программы могли просматривать видео (и, в идеале, распознавать одно видео из другого).
Как обновить отображаемый кадробъектом проигрывателя Windows Media?
Я пытался использовать следующий код в конце моего ответа на событие openFileDialog:
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
Text = openFileDialog1.SafeFileName + " - MPlayer 2.0";
//mediaPlayer1.openPlayer(openFileDialog1.FileName);
mediaPlayer1.URL = openFileDialog1.FileName;
//hopefully, this will load the first frame.
mediaPlayer1.Ctlcontrols.play();
mediaPlayer1.Ctlcontrols.pause();
}
Однако, когда я запускаю это, команда паузы игнорируется(Авто-воспроизведение для загрузки видео отключено, поэтому видео не начнет воспроизводиться без вызова .play (), выше).Если бы мне пришлось угадывать, я бы сказал, что это из-за какой-то операции с потоками, которая вызывает воспроизведение, переходит к паузе вызова, вызывает паузу, а затем, наконец, воспроизведение разрешается, и начинается видео - но потому что .pauseразрешенный до .play, чистый эффект - это .pause, в конечном счете, не учитывается.
Во-первых, есть ли способ, отличный от .play ();.Пауза();получить изображение для предварительного просмотра видео для объекта AxWindowsMediaPlayer?Если нет, то как я могу убедиться, что мой .pause () не игнорируется?
(я знаю, что .play(); .pause();
работает в случае general , потому что я тестировал сотдельная кнопка, которая вызывала эти два метода после , когда видео закончило загрузку, и оно работало, как и ожидалось)