Есть ли способ остановить видео в определенной позиции с помощью Windows Media Player SDK? Я использую C# для встраивания плеера и пытаюсь выяснить, есть ли у интерфейса IWMPControls3 какая-либо возможность остановки в определенной точке с точки зрения положения или времени. Если это можно сделать, то как это сделать?
Остановить видео в определенной позиции с помощью SDK проигрывателя Windows Media
comment
Почему бы не использовать паузу, а затем put_currentPosition?
- person Kirill V. Lyadvinsky   schedule 16.07.2009
comment
Предположим, что вы сделали паузу и установили currentposition, и видео начало воспроизводиться с этой позиции. Теперь, как остановить видео в другом месте?
- person Arvind   schedule 16.07.2009
comment
Можно и с позиции читать. Установите таймер, чтобы прочитать положение, а затем остановите проигрыватель, когда он достигнет интересующей вас позиции.
- person John Fisher   schedule 16.07.2009
Ответы (2)
Это, конечно, можно сделать, хотя я уже не помню техники. Существуют способы, которыми вы можете получить доступ к данным в потоке достаточно хорошо, чтобы реконструировать звук и отдельные кадры видео. Люди написали системы, в которых пользователь может ввести точное время и номер кадра, а видеоплеер перейдет к этому месту.
Поскольку ваш вопрос был «есть ли способ», ответ «да». Однако я не могу вспомнить достаточно подробностей, чтобы рассказать вам, как это сделать.
person
John Fisher
schedule
16.07.2009
Как я объяснил в тот же вопрос здесь, вы можете использовать таймер для управления CurrentPosition:
private Timer tmrWmpPlayerPosition;
private TimeSpan StopPosition;
private void btn_Click(object sender, EventArgs e)
{
wmpPlayer.Ctlcontrols.currentPosition = 4;
StopPosition=TimeSpan.Parse("00:20:20");
StopWmpPlayerTimer();
StartWmpPlayerTimer();
}
private void tmrWmpPlayerPosition_Tick(object sender, EventArgs e)
{
if ((Convert.ToInt32(StopPosition.TotalSeconds) != Convert.ToInt32(wmpPlayer.Ctlcontrols.currentPosition))) return;
wmpPlayer.Ctlcontrols.pause();
StopWmpPlayerTimer();
}
private void StartWmpPlayerTimer()
{
tmrWmpPlayerPosition = new Timer();
tmrWmpPlayerPosition.Tick += new EventHandler(tmrWmpPlayerPosition_Tick);
tmrWmpPlayerPosition.Enabled = true;
tmrWmpPlayerPosition.Interval = 1000;
tmrWmpPlayerPosition.Start();
}
private void StopWmpPlayerTimer()
{
if (tmrWmpPlayerPosition != null)
tmrWmpPlayerPosition.Dispose();
tmrWmpPlayerPosition = null;
}
person
Alex Jolig
schedule
24.09.2014