Медленно устанавливается положение встроенного проигрывателя Windows Media

#c# #winforms #axwindowsmediaplayer

#c# #winforms #axwindowsmediaplayer

Вопрос:

Итак, у меня есть элемент управления AxWindowsMediaPlayer в моей форме, и я хочу во время его воспроизведения изменить положение воспроизведения на другую точку. Я нашел:

     mediaplayer.Ctlcontrols.currentPosition = <position in seconds>
  

Но если я вызываю это во время воспроизведения, оно переходит в правильное положение и утверждает, что продолжает воспроизведение, но на самом деле воспроизведение видео прекращается.

Я пытался приостановить / остановить, прежде чем менять положение, и воспроизводить после этого, но безуспешно.

Как я могу обойти это?

Обновить

Итак, если я подожду достаточно долго, воспроизведение снова возобновится, но это будет через несколько секунд после точки, в которую я сказал ему перейти.

Например, если я скажу ему перейти на 15 секунд во время воспроизведения, он перейдет на 15, Ctlcontrols.currentPosition продолжит увеличиваться, но видео фактически не начнет воспроизводиться снова примерно через пять секунд.

Итак … почему при загрузке файла нет пятисекундной задержки? Он воспроизводится мгновенно, когда я его загружаю… И как мне избавиться от задержки после перехода?

Комментарии:

1. Я бы не стал жаловаться на задержку, имеет смысл ускорить воспроизведение с самого начала, чем с произвольной точки. Но я также ненавижу, когда вещи начинают «воспроизводиться» до того, как они будут готовы. Возможно, есть способ проверить, действительно ли он готов, а затем запустить его…

2. Найдите свой видеофайл и изучите его свойства / метаданные. Вполне возможно, что ваш видеофайл содержит очень редкие ключевые кадры (например, один за 5-7 секунд). После перехода WMP (или, скорее, КОДЕК) не может воспроизводить видео, пока не будет передан ключевой кадр. Это совершенно нормально для некоторых кодеков / профилей.