Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995

Пауза в DirectShow

12.03.2010, 18:36. Показов 2385. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Встал вопрос как сделать паузу во время воспроизведения видео,вроде бы хочется написать функцию
C++
1
pControl->Pause();
,но пока работает функция
C++
1
pEvent->WaitForCompletion(INFINITE, &evCode);
ничего сделать нельзя
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2010, 18:36
Ответы с готовыми решениями:

DirectShow из C++ в C#
Пишу программу на C# (там в WPF интерфейсы красивые получаются). Нужен захват камеры. Делаю на C++ и DirectShow. Но вот проблема: в C#,...

Visual c++ и directshow
Посоветуйте статьи по directshow в visual c++, а заодно где скачать и как прикрутить, спасибо.

фильтры DirectShow
Всем привет. Какие фильтры нужно использовать для передачи сжатого видео по сети (типа как прога Радмин)

3
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
12.03.2010, 19:08
pEvent->WaitForCompletion(INFINITE, &evCode); //я это не использую
В консоли WaitForCompletion я не нашел применения,
кроме как если окно видео закроется и программа завершится.
В консоли её можно не использовать.
Переходи на GUI основу. Кстати в GUI приложении INFINITE лучше не ставить, иначе будет блокировка
приложения.



Вот что я использую, этот фрагмент:
Вызывается в обработчике WM_TIMER, и позволяет определить, конец воспроизведения.
//--------------------------------------------------------------------------------------
C++
1
2
3
4
5
6
7
long Event; 
hr=pEvent->WaitForCompletion(1,&Event);
//Если конец воспроизведения...
if(Event == EC_COMPLETE){   
//Что то делаем: допустим запускаем заново .трек, или останавливаем.
 
}
//--------------------------------------
//Вот тебе ещё пища для размышления, функция позволяющая отчищать граф от фильтров.
/*Эта функция необходимая если ты хочешь открывать файлы, а не проигрывать один файл до посинения.
*/

//Напиши свою функцию Open в которой будет вызываться DeleteFilters(), а потом pGraph->RenderFile,
//таким образом ты сможешь полноценно проигрывать файлы: выбирать и проигрывать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Отчищает граф от фильтров.
void DeleteFilters(){
// Stop the graph.
HRESULT hr2=pControl->Stop();
  if(FAILED(hr2))AfxMessageBox("Error pControl");
  
IEnumFilters *pEnum = NULL;
HRESULT hr = pGraph->EnumFilters(&pEnum);
 
if (SUCCEEDED(hr))
{
    IBaseFilter *pFilter = NULL;
    while (S_OK == pEnum->Next(1, &pFilter, NULL))
     {
         
         // Remove the filter.
         pGraph->RemoveFilter(pFilter);
         // Reset the enumerator.
         pEnum->Reset();
         pFilter->Release();
    }
    pEnum->Release();
}
 
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
//Вот тебе небольшой отрывок, это тебе пригодится.
long Open(const char *path){
DeleteFilters();                //Отчищаем граф от dll фильтров.
 
WCHAR Nname{MAX_PATH];
// преобразование в UNICODE
MultiByteToWideChar(CP_ACP,0,path ,strlen(path)+1,(LPWSTR)Nname,sizeof(Nname)/sizeof(Nname[0]));
hrGraph=pGraph->RenderFile(Nname,NULL);       //строим граф.
if (SUCCEEDED(hrGraph)) return 0;                  //открыли файл.
else return 1;                                              //иначе ошибка формата.
 
}
Надеюсь хоть что то полезного я тебе рассказал.

Добавлено через 10 минут
C++
1
2
3
4
5
6
А кстати pControl->Stop();   //не ставит на начало,
 
//надо делать так:
pControl->Stop();
pPosition->put_CurrentPosition(0.0);  // Интерфейс: IMediaPosition.
//---------------------------------------------------------------
1
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
12.03.2010, 19:15  [ТС]
Genius Ignat, можно еще вопросик не по теме ... а то еще не видел знающих DS,где можно найти более или менее полную информацию по DirectShow желательно с примерами(гугл не дает более или менее полной информации).А так ты мне выдал информации еще на неделю обдумывания

Добавлено через 2 минуты
Переходи на GUI основу. Кстати в GUI приложении INFINITE лучше не ставить, иначе будет блокировка приложения.
и так на гуи .... блокировка и напрягает(совершенствую по гуглу пример из вики)
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
12.03.2010, 19:20
http://directshow.wonderu.com/
Там конечно маловато.

http://directshow.wonderu.com/samples
Там есть manual на английском по DShow там написано про всё, я не расстроился что на английском, не так там и сложно.
А manual огромный я таких ещё не видел, DShow это мощная библиотека.
Без этого мануала я как без рук, хорошая штука.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2010, 19:20
Помогаю со студенческими работами здесь

Подскажите литературу по DirectShow на VC++
Здравствуйте, милые программисты.:) Будьте добры - подскажите, что можно почитать про технологию DirectShow на VC++, чтобы уверенно...

DirectShow Visual C++ видеоплеер
Доброго времени суток. Хочу написать видеоплеер (проигрываем .avi) с использованием DirectShow в VisualStudio. Собственно просто как...

DirectShow не открывает файл на воспроизведение
Здравствуйте! В программе graphedt набросал такую схему для воспроизведения mp3 файла: Всё работает отлично - файл воспроизводится. В...

Воспроизведение avi с помощью directshow
привет! Есть такая проблема. Создал приложение (слизал из инета по большей части). Короче форма winapi и хочу чтобы в ней проигрывался avi...

Перенос кода С++ из GraphEditPlus (DirectShow)
Всем привет. У меня возникла следующая проблема: 1.В GraphEditPlus собрал схему с фильтрами DirectShow и запросил сгенерировать код на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru