Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2017, 10:46   #1
shvedoff
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 18
По умолчанию DirectShow - как узнать когда видео закончилось?!

DirectShow - как узнать когда видео закончилось?!
И запустить его заново?
shvedoff вне форума Ответить с цитированием
Старый 17.04.2017, 12:23   #2
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

...вообще есть два варианта:
1- при создании интерфейсов и построении графа фильтров назначить окно для отправки ему событий воспроизведения через SetNotifyWindow(), т.е. окну своего приложения. Перехватывая сообщения окна отследить наступление EC_COMPLETE и через метод put_CurrentPosition интерфейса IMediaPosition, который вы подключили в графе задавать 0. Либо нужную позицию.
2- в потоке (того же таймера) через метод GetCurrentPosition() интерфейса IMediaSeeking, который опять же вы подключили в графе, выковыривать текущую позицию и сравнивать с полученной длиной медиа из GetDuration() того же интерфейса при построении графа. При достижении через метод SetPositions() интерфейса IMediaSeeking пулять на начало.

Все просто )))
kutani вне форума Ответить с цитированием
Старый 17.04.2017, 14:50   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Код:
WM_DS_MESSAGE:
      begin
        while pMediaEvent.GetEvent(n, L1, l2, 1) = S_OK do
        begin
          if n = EC_COMPLETE then
          begin
               pMediaPosition.put_CurrentPosition(0);

          end;

          pMediaEvent.FreeEventParams(n, l1, l2);
        end;
      end;

Последний раз редактировалось BLACK_RAIN; 17.04.2017 в 14:55.
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать когда Edit прокручивается? mak15 Общие вопросы C/C++ 5 16.12.2015 23:12
Как в TMemo узнать, когда курсор над выделением? planetoxod Компоненты Delphi 0 29.10.2015 17:33
как узнать, когда остановится playsound TUberwer Мультимедиа в Delphi 5 15.08.2013 22:36
Как рисовать поверх видео DirectShow ???? FarStar Visual C++ 7 17.06.2011 12:57
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16