DirectShow воспроизведение видео через IMediaControl
От: Testus  
Дата: 26.05.05 06:36
Оценка:
Такой вопросик есть: как сделать так, чтобы после того как видео проигралось (IMediaControl::Run()) оно могло еще раз поиграться, без перерендования видео файла?
Glück auf
Re: DirectShow воспроизведение видео через IMediaControl
От: Niswn  
Дата: 26.05.05 07:02
Оценка:
Здравствуйте, Testus, Вы писали:

T>Такой вопросик есть: как сделать так, чтобы после того как видео проигралось (IMediaControl::Run()) оно могло еще раз поиграться, без перерендования видео файла?


Останавливаешь граф (IMediaControl::Stop()), устанавливаешь позицию файла в ноль (IMediaPosition::put_CurrentPosition()) и играешь заново (IMediaControl::Run()).
ICQ: 326084932
Re[2]: DirectShow воспроизведение видео через IMediaControl
От: Testus  
Дата: 26.05.05 08:40
Оценка:
спасибо! про IMediaPosition интерфейс не знал!

а можно как нибуть сделать так чтобы видео проигрывалсь постояно по кругу или это надо самому отслеживать?
Glück auf
Re[3]: DirectShow воспроизведение видео через IMediaControl
От: Niswn  
Дата: 26.05.05 10:06
Оценка:
Здравствуйте, Testus, Вы писали:

T>спасибо! про IMediaPosition интерфейс не знал!


T>а можно как нибуть сделать так чтобы видео проигрывалсь постояно по кругу или это надо самому отслеживать?


Можно свое приложение подписать на событие изменения состояния графа, а в нем вызывать метод IMediaEvent::GetEvent. Есть событие имеет код EC_COMPLETE, то значит проигрывание файла завершено, надо установить позицию файла в ноль и затем снова запустить граф.
Вроде где-то в SDK я видел пример.
А вообще посмотри в SDK тему:
"Responding to Events"
Там это подробно описывается.
ICQ: 326084932
Re[2]: DirectShow воспроизведение видео через IMediaControl
От: Saruman Россия none
Дата: 27.05.05 03:13
Оценка:
Здравствуйте, Niswn, Вы писали:

N>Здравствуйте, Testus, Вы писали:


T>>Такой вопросик есть: как сделать так, чтобы после того как видео проигралось (IMediaControl::Run()) оно могло еще раз поиграться, без перерендования видео файла?


N>Останавливаешь граф (IMediaControl::Stop()), устанавливаешь позицию файла в ноль (IMediaPosition::put_CurrentPosition()) и играешь заново (IMediaControl::Run()).


Можно и не останавливать граф, просто в ноль установить позицию.
Типа того что как бы...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.