Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по DirectShow, А именно по построению графа 
:(
    Опции темы
AndreySol
Дата 30.1.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: нет
Всего: 1



ОС - WinMe.
Компилятор - MSVC++ 6.0
Строю граф стандартным способом, т.е. автоматически:
Код

// инициализируем COM - библиотеку
hResult = CoInitialize(NULL);
if(hResult == S_OK || hResult == S_FALSE)
{
hResult = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,
(void **)&piGraphBuilder);
if(hResult == S_OK)
{
 hResult = piGraphBuilder->QueryInterface(IID_IMediaControl, (void **)&piMediaControl);
 if(hResult == S_OK)
 { // если инициализация интерфейса успешна
  piMediaControl->Release(); // освобождаем интерфейс
 }

 //подготавливаем путь к файлу
 TCHAR* wcFile = NULL;
 char* szFileName = "Какой-то видео-файл.AVI";
 USES_CONVERSION;
 wcFile = A2W(szFileName);

 // строим граф
 piGraphBuilder->RenderFile(wcFile, NULL);
 if(hResult == S_OK)
 {
  // воспроизводим
  hResult = piMediaControl->Run();
 }

}
// закрываем COM - библиотеку
CoUninitialize();
}

Непонятки в следующем:
если пытаюсь загрузить таким образом AVI-файл, то прога виснет на "piGraphBuilder->RenderFile(wcFile, NULL)",
и если по Ctrl+Alt+Del ее убить, а затем сразу же запустить вновь с тем же AVI-файлом - все запускается нормально и прекрасно воспроизводится. И самое интересное - такое дерьмо происходит только с AVI - файлами, все остальные видео форматы (MPG, MPEG, DAT, WMV) загружаются с первого раза.
И еще - я проверил на плеерах установленных у меня: XingDVD Player ведет себя так же, а Windows Media Player воспроизводит все нормально с первого раза.
Подскажите, кто занет, что делать ? Может надо какую проверку или инициализацию кодеков делать при запуске проги (или конкретного файла)?
PM MAIL   Вверх
GoodBoy
Дата 31.1.2005, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Перенесено из Работы с видео


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
knave
Дата 7.2.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



Граф руками сторить зело гмеоройновато. Хотя етсь пример в MSDN - там есть такая програмулина в исходниках GraphBuilder.
Вообще мои рекоменлации как чела погемороевшегося с видео под виндой некоторое время.

Есоли хочеш напистаь свой плеер который будет просто указаный вайл вопроизводить, хоть с диска, хоть с локалки хоть с URL. Юзай MCI - это тоже самое что DirectX только все идет через обертки от майкрасофта. Нет бпроблем с графами и прочим. На выоде ты получиш окно просимотра(со звуком) от виндовс медиа поелера. Просто окно без всего и внем будет идти твое видео. Оно будет понимать все команды что есть в медиаплеере. Запихиваеш это окно в свое приложение вот тебе и плеер. Сомтри функции на MCIxxxx либо просто MCI набери, там фунцкий немного.

Если тебе надо что то специфическое сделать при передачи изображения или пи воспроизведении то тут два пути.
1 - использоать апифункции AVIxxx - я пошел по этом пути, все получается трабл толко звук и видео синхронизировать. Все делается через апи функции финдовс, рспакова отображение и прочее, только надо знать апи на сотв. тематику.

2 - замрочивать с DirectX. Тут можно написать самому фильтр, подсунуть его в граф ну и граф самому собрать. Я сначала хотел так, но фильтры геморновато показалос делать, даи с графами париться(все есть в примерах от DirectX). Сделал все по пути 1. Да еще тут завязка на версию DirectX.

Это сообщение отредактировал(а) knave - 7.2.2005, 11:54


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
AndreySol
Дата 8.2.2005, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: нет
Всего: 1



Это все конечно интересно, НО КАК насчет сути проблемы (ну т.е. вопроса) ?
PM MAIL   Вверх
knave
Дата 8.2.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



Скорее всего путаница с кодеками. Попробуй проверку сделать на исключения. Если оно вывалит, то запусти потсрение заново. У тебя первым берется неправильный кмперссор-декомпрессор или еще какой из фильтров и вешается все. Еси ты их сам подбираеш то попробуй руками брать следующий еслип ервый не прокатил.

Подобная проблема существуети елси открыватьи через AVIxxxx - при автоматическом открытии иногда с первого раза несрабатывает, а со второго все открывается.


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
AndreySol
Дата 18.2.2005, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: нет
Всего: 1



А какие есть ф-ции DirectShow для проверки "правильности" кодека или фильтра ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.