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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 18:55   #1
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
Сообщение Использование DSPack в консольном приложении

Вновь здравствуйте уважаемые участники форума, "Клуба Программистов"!
Хочу обратиться с вопросом вызванным проблемой в работе консольного приложения. Пожалуйста ознакомитесь с программным кодом приведённым ниже:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, Classes, DSPack, DSUtil, DirectShow9;

var
  FilterGraph: TFilterGraph;
  Filter: TFilter;
  SampleGrabber: TSampleGrabber;
  Integral: Integer;
  StringList: TStringList;
  SysDevEnum: TSysDevEnum;

begin
  //Создание объектов
  FilterGraph := TFilterGraph.Create(nil);
  Filter := TFilter.Create(nil);
  SampleGrabber := TSampleGrabber.Create(nil);
  StringList := TStringList.Create;
  //Поиск устройств видео захвата
  WriteLn('Find');
  SysDevEnum := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
  if SysDevEnum.CountFilters > 0 then
  begin
    for Integral := 0 to SysDevEnum.CountFilters - 1 do
    begin
      StringList.Append(SysDevEnum.Filters[Integral].FriendlyName);
    end;
  end;
  //Запуск первого найденного устройства
  WriteLn('Run');
  FilterGraph.ClearGraph;
  FilterGraph.Active := False;
  FilterGraph.Mode := gmCapture;
  Filter.BaseFilter.Moniker := SysDevEnum.GetMoniker(SysDevEnum.FilterIndexOfFriendlyName(StringList.Strings[0]));
  FilterGraph.Active := True;
  with FilterGraph as ICaptureGraphBuilder2 do
  begin
    Filter.FilterGraph := FilterGraph;
    SampleGrabber.FilterGraph := FilterGraph;
    RenderStream(@PIN_CATEGORY_CAPTURE, nil, Filter as IBaseFilter, nil, SampleGrabber as IBaseFilter);
  end;
  FilterGraph.Play;
  WriteLn('Play');
  Readln;
  //Завершение работы программы
  WriteLn('Stop');
  FilterGraph.Stop;
  FilterGraph.ClearGraph;
  FilterGraph.Active := False;
  WriteLn('Exit');
  Exit;
end.
Как вы можете видеть это исходный код консольного приложения работающего с библиотекой, "DSPack" и последующими... И у меня вопрос касательно той самой проблемы из-за которой программа работает не стабильно. Собственно, что тут сделано не правильно?
Если быть более точным, при запуске приложения вылетает ошибка в модуле, "DSPack" на строке, "3245"! Вроде бы всё делал уже и не один раз... Но, сейчас что-то не то...
По сути данный код работает без всяких проблем в обыкновенном приложении! Но, при попытке запустить его из под консоли или динамической подключаемой библиотеки возникают проблемы...
Всё не то чем кажется...
Jacobson вне форума Ответить с цитированием
Старый 16.06.2010, 19:47   #2
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

попробуй заюзать модуль Forms
alexprey вне форума Ответить с цитированием
Старый 18.06.2010, 01:41   #3
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

строку с ошибкой в студию)))))
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 18.06.2010, 22:58   #4
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
По умолчанию

Заранее извиняюсь что не сразу ответил на все сообщения! Но, между тем давайте по порядку... Отвечаю на предложение, "alexprey", модуль для использования форм я уже подключал, безрезультатно! Ну и от меня сцециально для, "notHaker", строка ошибки в студию,
Код:
assert(CheckFilter, 'The SampleGrabber Filter is not available on this system.');
Указанное выше это строка из модуля, "DSPack" а вот ниже сам текст сообщения об ошибке,
Код:
Project Project1.exe raised exception class EAssertionFailed with message 'The SampleGrabber Filter is not available on this system. (c:program\borland\Projects\Bpl\DSPack.pas, line 3244)'. Process stopped. Use Step or Run to continue.
Лично я пока не разобрался почему программа отказывается стабильно работать...
Всё не то чем кажется...

Последний раз редактировалось Jacobson; 18.06.2010 в 23:02.
Jacobson вне форума Ответить с цитированием
Старый 19.06.2010, 00:48   #5
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Где то не соблюлось какое-то условие... ошибка - исключение, которое генерирует сам DSPack и надо выяснить причину, почему он так делает...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 21.06.2010, 05:21   #6
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
По умолчанию

Я с вами полностью согласен! Сам ещё тогда обратил внимание и думал над этим. Но, для большей пользы решил спросить совета у единомышленников! Кстати, спасибо всем кто откликнулся! А, что касается данной проблемы я думаю стоит пересмотреть версии данной библиотеки, может что-то получится нарыть... Хм... А, у вас этот код работает нормально?
Всё не то чем кажется...
Jacobson вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение экрана в консольном приложении FelixKoT Общие вопросы Delphi 1 19.02.2010 21:22
Борьба с крякозябрами в консольном приложении fs444 C++ Builder 16 15.12.2009 19:04
Русский язык в консольном приложении С++ на VS2008 Munch Помощь студентам 3 17.10.2009 17:33
Цвет текста в консольном приложении Linux a10nan Общие вопросы C/C++ 14 21.08.2009 23:41