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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 01:26   #1
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию наложения текста на видео с вебкамер

почему выдает ошибку на этом коде , почему не получается наложить текст на видео

Код:
unit Unit1;

interface

uses
...directshow9, ActiveX

var
  Form1: TForm1;
  FileName:string;
  RecMode: Boolean = False; 
  DeviceName:OleVariant; 
  PropertyName:IPropertyBag; //
  pDevEnum:ICreateDEvEnum;
  pEnum:IEnumMoniker; 
  pMoniker:IMoniker;

  MArray1,MArray2: array of IMoniker; 
      osb: tbitmap;
  w,h: integer;
      pBitmap      : IVMRMixerBitmap;
  VMRBitmap    : VMRALPHABITMAP;

    FGraphBuilder:        IGraphBuilder;
    FCaptureGraphBuilder: ICaptureGraphBuilder2;
    FMux:                 IBaseFilter;
    FSink:                IFileSinkFilter;
    FMediaControl:        IMediaControl;
    FVideoWindow:         IVideoWindow;

    FVideoCaptureFilter:  IBaseFilter;
    FAudioCaptureFilter:  IBaseFilter;
    FVideoRect:           TRect;

implementation

{$R *.dfm}

 procedure dsmp_logo(s: string; alpha: single);
begin
if Assigned(FVideoWindow)then begin
  osb.Width := length(s)*w;
  osb.Height:= h;
  osb.Canvas.TextOut(0,0,s);

  ZeroMemory(@VMRBitmap, sizeof(VMRBitmap));
  VMRBitmap.dwFlags  := VMRBITMAP_HDC or VMRBITMAP_SRCCOLORKEY;
  VMRBitmap.clrSrcKey:= clBLACK;
  VMRBitmap.hdc      := osb.Canvas.Handle;
  VMRBitmap.rSrc     := osb.Canvas.ClipRect;

  VMRBitmap.rDest.left  := 0.20;
  VMRBitmap.rDest.right := 1.50;
  VMRBitmap.rDest.top   := 0.85;
  VMRBitmap.rDest.bottom:= 0.9;
  VMRBitmap.fAlpha      := alpha;
  pBitmap.SetAlphaBitmap(VMRBitmap);
 end ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   osb:= tbitmap.Create;
  osb.Canvas.Brush.Color:= $0;
  osb.Canvas.Font.Name:= 'System';
  osb.Canvas.Font.Size:= 70;
  osb.Canvas.Font.Style:= [fsBold];
  osb.Canvas.Font.Color:= 65100;// 65280
  w:= osb.Canvas.TextWidth('w');
  h:= osb.Canvas.TextHeight('w');
CoInitialize(nil);
if FAILED(Initializ) then
    Begin
      ShowMessage('Внимание! Произошла ошибка при инициализации');
      Exit;
    End;
if Listbox1.Count>0 then
    Begin
        if FAILED(CreateGraph) then
            Begin
              ShowMessage('Внимание! Произошла ошибка при построении графа фильтров');
              Exit;
            End;
        Panel2.Caption:='Режим просмотра';
    end else
            Begin
              ShowMessage('Внимание! Камера не обнаружена.');
            End;
end;

function TForm1.Initializ: HResult;
begin
Result:=CoCreateInstance(CLSID_SystemDeviceEnum, NIL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, pDevEnum);
if Result<>S_OK then EXIT;
Result:=pDevEnum.CreateClassEnumerator(CLSID_VideoInputDeviceCategory, pEnum, 0);
if Result<>S_OK then EXIT;
setlength(MArray1,0);
while (S_OK=pEnum.Next(1,pMoniker,Nil)) do
begin
setlength(MArray1,length(MArray1)+1); 
MArray1[length(MArray1)-1]:=pMoniker; 
Result:=pMoniker.BindToStorage(NIL, NIL, IPropertyBag, PropertyName);
if FAILED(Result) then Continue;
Result:=PropertyName.Read('FriendlyName', DeviceName, NIL); //Получаем имя устройства
if FAILED(Result) then Continue;
Listbox1.Items.Add(DeviceName);
end;
Result:=pDevEnum.CreateClassEnumerator(CLSID_AudioInputDeviceCategory, pEnum, 0);
if Result<>S_OK  then EXIT;
setlength(MArray2,0);

while (S_OK=pEnum.Next(1,pMoniker,Nil)) do
begin
setlength(MArray2,length(MArray2)+1); //Увеличиваем массив на единицу
MArray2[length(MArray2)-1]:=pMoniker; //Запоминаем моникер в масиве
Result:=pMoniker.BindToStorage(NIL, NIL, IPropertyBag, PropertyName);
if FAILED(Result) then Continue;
Result:=PropertyName.Read('FriendlyName', DeviceName, NIL); //Получаем имя устройства
if FAILED(Result) then Continue;
Listbox2.Items.Add(DeviceName);
end;
if ListBox1.Count=0 then
   begin
      ShowMessage('Камера не обнаружена');
      Result:=E_FAIL;;
      Exit;
   end;
Listbox1.ItemIndex:=0;
if ListBox2.Count=0 then
    begin
      ShowMessage('Микрофон не обнаружен');
    end
                    else  Listbox2.ItemIndex:=0;
Result:=S_OK;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 dsmp_logo('syenta )))' +
           ' [ '+
           formatdatetime('hh:nn:ss.zzz',time)+
           ' ]',
           0.5);
end;

Последний раз редактировалось Вадим Мошев; 30.10.2016 в 21:26.
alman12 вне форума Ответить с цитированием
Старый 29.10.2016, 09:18   #2
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Ошибку Вашу озвучьте.
Код:
    if FAILED(CreateGraph) then
    Begin
      ShowMessage('Внимание! Произошла ошибка при построении графа фильтров');
      Exit;
    End;
Мельком пробежался по коду, не вижу откуда берется CreateGraph?
Replicant вне форума Ответить с цитированием
Старый 29.10.2016, 10:44   #3
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

http://www.programmersforum.ru/showt...=298284&page=2

Оригинал https://www.google.com/search?q=+pro...FITIsQGwsb3YCA
kutani вне форума Ответить с цитированием
Старый 29.10.2016, 21:47   #4
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Цитата:
Сообщение от Replicant Посмотреть сообщение
Ошибку Вашу озвучьте.
Код:
    if FAILED(CreateGraph) then
    Begin
      ShowMessage('Внимание! Произошла ошибка при построении графа фильтров');
      Exit;
    End;
Мельком пробежался по коду, не вижу откуда берется CreateGraph?
ошибку выдает таймер при наложения текста а так нет не каких проблем с изображением , видео отображается
alman12 вне форума Ответить с цитированием
Старый 29.10.2016, 21:53   #5
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

ошибку выдает таймер при наложения текста а так нет не каких проблем с изображением , видео отображается
alman12 вне форума Ответить с цитированием
Старый 29.10.2016, 21:57   #6
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

alman12
Какую ошибку выдаёт?
Приведите код целиком.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 29.10.2016, 22:09   #7
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

вот картинка ошибки ,после открытие приложения видео появляется
но потом таймер выдает такою ошибку

Изображения
Тип файла: png hy.PNG (15.0 Кб, 152 просмотров)
alman12 вне форума Ответить с цитированием
Старый 30.10.2016, 07:58   #8
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Код взят у raxp-а (автора), полный код ошибок не выдает. Ссылка на тему и более ранние упоминания приведены выше (также этот код есть и на этом форуме несколькими годами ранее и опубликован в издании белорусского журнала в виде ресурсов на сайте издания).

Безымянный.jpg
kutani вне форума Ответить с цитированием
Старый 30.10.2016, 21:13   #9
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

этот код есть у многих исходниках в интернете
alman12 вне форума Ответить с цитированием
Старый 30.10.2016, 21:28   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

ОФФТОП:
alman12, вы уже не первый день на форуме. Оформляйте ваш под по правилам.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наложения текстур (OpenGl C++) MHZ-MHZ Общие вопросы C/C++ 0 08.02.2016 23:06
как кинуть потоковое видео с вебкамер deniscatch Свободное общение 4 07.12.2013 12:55
Пробелма наложения background NidHelp HTML и CSS 8 24.09.2011 21:25
Наложения объектов в C++ fmx999 Общие вопросы C/C++ 3 01.04.2010 17:39
''Слои'' наложения изображений. Alex Cones Мультимедиа в Delphi 3 11.04.2009 17:03