Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 217 из 329 ПерваяПервая ... 117167207214215216217218219220227267317 ... ПоследняяПоследняя
Показано с 2,161 по 2,170 из 3290

Тема: Виртуальная "шарманка"

  1. #2161

    Регистрация
    26.02.2004
    Адрес
    Николаев
    Сообщений
    13,753
    Позывной
    UR5ZQV
    В версии за 15 июля появилась возможность изменять некоторые режимы WEB камеры. Вызвать повторно источник видео, определить размеры, сжатие. Возможно, манипулируя режимами, можно будет добиться более или менее лучшей работы видео.
    Василий Михайлович, может я что то пропустил. Как это делать (хотя бы первый раз) с источниками видео? Остальное все понятно.


  2. #2162
    Цитата Сообщение от UR5ZQV Посмотреть сообщение
    Остальное все понятно.
    Если есть какая либо камера, или несколько камер, то шарманка должна что либо открыть. Она перебирает все возможные варианты. Если открыла, то в меню Режимы->Режимы Web Camera ->источник можно выбрать ту камеру, которая нужна.

  3. Спасибо от UR5ZQV

  4. #2163

    Регистрация
    26.02.2004
    Адрес
    Николаев
    Сообщений
    13,753
    Позывной
    UR5ZQV
    Василий Михайлович, извините за запоздалый ответ на Ваше ЛС (руки не дошли, или глаза недоувидели).
    Код:
    unit hiWebCam;
    interface
    uses Windows,Kol,Share,Debug;
    const
      WM_USER = $00000400;
      WM_CAP_START                    = WM_USER; //ñòàðò äëÿ ñîîáùåíèé
      WM_CAP_GET_CAPSTREAMPTR         = WM_CAP_START + 1;
      //îïèñàíèå callback îøèáîê
      WM_CAP_SET_CALLBACK_ERROR       = WM_CAP_START + 2;
      WM_CAP_SET_CALLBACK_STATUS      = WM_CAP_START + 3;
      WM_CAP_SET_CALLBACK_YIELD       = WM_CAP_START + 4;
      WM_CAP_SET_CALLBACK_FRAME       = WM_CAP_START + 5;
      WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6;
      WM_CAP_SET_CALLBACK_WAVESTREAM  = WM_CAP_START + 7;
      WM_CAP_GET_USER_DATA            = WM_CAP_START + 8;
      WM_CAP_SET_USER_DATA            = WM_CAP_START + 9;
      WM_CAP_DRIVER_CONNECT           = WM_CAP_START + 10;
      WM_CAP_DRIVER_DISCONNECT        = WM_CAP_START + 11;
      WM_CAP_DRIVER_GET_NAME          = WM_CAP_START + 12;
      WM_CAP_DRIVER_GET_VERSION       = WM_CAP_START + 13;
      WM_CAP_DRIVER_GET_CAPS          = WM_CAP_START + 14;
      WM_CAP_FILE_SET_CAPTURE_FILE    = WM_CAP_START + 20;
      WM_CAP_FILE_GET_CAPTURE_FILE    = WM_CAP_START + 21;
      WM_CAP_FILE_SAVEAS              = WM_CAP_START + 23;
      WM_CAP_FILE_SAVEDIB             = WM_CAP_START + 25;
      WM_CAP_FILE_ALLOCATE            = WM_CAP_START + 22;
      WM_CAP_FILE_SET_INFOCHUNK       = WM_CAP_START + 24;
      WM_CAP_EDIT_COPY                = WM_CAP_START + 30;
      WM_CAP_SET_AUDIOFORMAT          = WM_CAP_START + 35;
      WM_CAP_GET_AUDIOFORMAT          = WM_CAP_START + 36;
      WM_CAP_DLG_VIDEOFORMAT          = WM_CAP_START + 41;
      WM_CAP_DLG_VIDEOSOURCE          = WM_CAP_START + 42;
      WM_CAP_DLG_VIDEODISPLAY         = WM_CAP_START + 43;
      WM_CAP_GET_VIDEOFORMAT          = WM_CAP_START + 44;
      WM_CAP_SET_VIDEOFORMAT          = WM_CAP_START + 45;
      WM_CAP_DLG_VIDEOCOMPRESSION     = WM_CAP_START + 46;
      WM_CAP_SET_PREVIEW              = WM_CAP_START + 50;
      WM_CAP_SET_OVERLAY              = WM_CAP_START + 51;
      WM_CAP_SET_PREVIEWRATE          = WM_CAP_START + 52;
      WM_CAP_SET_SCALE                = WM_CAP_START + 53;
      WM_CAP_GET_STATUS               = WM_CAP_START + 54;
      WM_CAP_SET_SCROLL               = WM_CAP_START + 55;
      WM_CAP_GRAB_FRAME               = WM_CAP_START + 60;
      WM_CAP_GRAB_FRAME_NOSTOP        = WM_CAP_START + 61;
      WM_CAP_SEQUENCE                 = WM_CAP_START + 62;
      WM_CAP_SEQUENCE_NOFILE          = WM_CAP_START + 63;
      WM_CAP_SET_SEQUENCE_SETUP       = WM_CAP_START + 64;
      WM_CAP_GET_SEQUENCE_SETUP       = WM_CAP_START + 65;
      WM_CAP_SET_MCI_DEVICE           = WM_CAP_START + 66;
      WM_CAP_GET_MCI_DEVICE           = WM_CAP_START + 67;
      WM_CAP_STOP                     = WM_CAP_START + 68;
      WM_CAP_ABORT                    = WM_CAP_START + 69;
      WM_CAP_SINGLE_FRAME_OPEN        = WM_CAP_START + 70;
      WM_CAP_SINGLE_FRAME_CLOSE       = WM_CAP_START + 71;
      WM_CAP_SINGLE_FRAME             = WM_CAP_START + 72;
      WM_CAP_PAL_OPEN                 = WM_CAP_START + 80;
      WM_CAP_PAL_SAVE                 = WM_CAP_START + 81;
      WM_CAP_PAL_PASTE                = WM_CAP_START + 82;
      WM_CAP_PAL_AUTOCREATE           = WM_CAP_START + 83;
      WM_CAP_PAL_MANUALCREATE         = WM_CAP_START + 84;
      // Following added post VFW 1.1
      WM_CAP_SET_CALLBACK_CAPCONTROL  = WM_CAP_START + 85;
      CONTROLCALLBACK_PREROLL         = 1 ; //* Waiting to start capture */ 
      CONTROLCALLBACK_CAPTURING       = 2 ; //* Now capturing */
    type
       THIWebCam = class(TDebug)
       private
          hCamCapture:integer;
          hHandle:HWND;
          fRefreshRate: integer;
          fViewStyle: integer;
          procedure Connect;
          procedure DisConnect;
       public
          _prop_FileDIB     : string;
          _prop_FileVideo   : string;    
          _data_Scale       : THI_Event;
          _data_RefreshRate : THI_Event;
          _data_ViewStyle   : THI_Event; 
          _data_WinHandle   : THI_Event;
          _data_FileDIB     : THI_Event;
          _data_FileVideo   : THI_Event;
          _event_onConnect  : THI_Event;
          _event_onProgress : THI_Event;
          _event_onErr : THI_Event;
        property _prop_RefreshRate:integer write fRefreshRate;
        property _prop_ViewStyle:integer write fViewStyle;
        destructor Destroy; override;
        procedure _work_doConnect(var _Data:TData; Index:word);
        procedure _work_doDisConnect(var _Data:TData; Index:word);
        procedure _work_doEditCopy(var _Data:TData; Index:word);
        procedure _work_doSaveDIB(var _Data:TData; Index:word);
        procedure _work_doVideoSource(var _Data:TData; Index:word);
        procedure _work_doVideoFormat(var _Data:TData; Index:word);
        procedure _work_doVideoCompression(var _Data:TData; Index:word);    
        procedure _work_doStartSequence(var _Data:TData; Index:word);
        procedure _work_doStopSequence(var _Data:TData; Index:word);
        procedure _work_doRefreshRate(var _Data:TData; Index:word);
        procedure _work_doViewStyle(var _Data:TData; Index:word);
        procedure _var_Handle(var _Data:TData; Index:word);
            
      end;
    implementation
    function capCreateCaptureWindow (lpszWindowName : PChar; dwStyle : Integer; x : Integer; y : Integer;
                nWidth : Integer; nHeight : Integer; hWndParent : Integer; nID : Integer) : Integer; stdcall; external 'avicap32' name 'capCreateCaptureWindowA';
    function CapControlCallback (Hwnd, nState:dword): dword; stdcall; 
    var   pCls: THIWebCam; 
    begin 
       pCls := THIWebCam(GetProp(hwnd, PChar('OwnerObject')));
       Result := nState;
       _hi_onEvent(pCls._event_onProgress);
    end;
    destructor THIWebCam.Destroy;
    begin
       if hCamCapture <> 0 then DestroyWindow(hCamCapture);
       inherited;
    end;
    procedure THIWebCam.Connect;
    var   r:TRect;
          er:integer;
    begin
       GetWindowRect(hHandle,r);
       hCamCapture := capCreateCaptureWindow(PChar('WebCam'), WS_VISIBLE OR WS_CHILD, 0, 0, r.right-r.left, r.bottom-r.top, hHandle, 0);
       if hCamCapture = 0 then exit;
       SetProp(hCamCapture,PChar('OwnerObject'), integer(pointer(self)));
       SendMessage(hCamCapture, WM_CAP_DRIVER_CONNECT, 0, 0);
       SendMessage(hCamCapture, WM_CAP_SET_OVERLAY, 0, 0);
       SendMessage(hCamCapture, WM_CAP_SET_PREVIEW, 1, 0); 
       SendMessage(hCamCapture, WM_CAP_SET_SCALE, fViewStyle, 0);
       SendMessage(hCamCapture, WM_CAP_SET_PREVIEWRATE, fRefreshRate, 0);
       SendMessage(hCamCapture, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, longint(@CapControlCallback));
       //SendMessage(hCamCapture, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); 
       _hi_onEvent(_event_onErr,er);//hCamCapture);  
    end;
    procedure THIWebCam.DisConnect;
    begin
       SendMessage(hCamCapture, WM_CAP_DRIVER_DISCONNECT, 0, 0);   
       DestroyWindow(hCamCapture);
       hCamCapture := 0;
    end;
    procedure THIWebCam._work_doConnect;
    begin
       hHandle := ReadInteger(_Data,_data_WinHandle,0);
       Connect;
       dtInteger(_Data, hCamCapture);
       _hi_CreateEvent(_Data, @_event_onConnect);
    end;
    procedure THIWebCam._work_doDisConnect;
    begin
       if hCamCapture = 0 then exit;
       DisConnect;
    end;
    procedure THIWebCam._work_doEditCopy;
    begin
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_EDIT_COPY, 0, 0);
       //SendMessage(hCamCapture, WM_CAP_GRAB_FRAME, 0, 0);
    end;
    procedure THIWebCam._work_doSaveDIB;
    var   Fn: string;
    begin
       if hCamCapture = 0 then exit;
       Fn := ReadString(_Data, _data_FileDIB, _prop_FileDIB);
       SendMessage(hCamCapture, WM_CAP_FILE_SAVEDIB, 0, Longint(PChar(Fn)));
    end;
    procedure THIWebCam._work_doVideoSource;
    begin
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_DLG_VIDEOSOURCE, 0, 0);
       hHandle := ReadInteger(_Data,_data_WinHandle,0);
       DisConnect;
       Connect;  
    end;
    procedure THIWebCam._work_doVideoFormat;
    begin
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_DLG_VIDEOFORMAT, 0, 0);
    end;
    procedure THIWebCam._work_doVideoCompression;
    begin
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); 
    end;
    procedure THIWebCam._work_doStartSequence;
    var   Fn: string;  
    begin
       if hCamCapture = 0 then exit;
       Fn := ReadString(_Data, _data_FileVideo, _prop_FileVideo);
       SendMessage(hCamCapture, WM_CAP_FILE_SET_CAPTURE_FILE, 0, Longint(PChar(Fn)));
       SendMessage(hCamCapture, WM_CAP_SEQUENCE, 0, 0);
    end;
    procedure THIWebCam._work_doStopSequence;
    begin
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture,  WM_CAP_STOP, 0, 0); 
    end;
    procedure THIWebCam._work_doRefreshRate;
    begin
       fRefreshRate := ReadInteger(_Data, _data_RefreshRate);
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_SET_PREVIEWRATE, fRefreshRate, 0);
    end;
    procedure THIWebCam._work_doViewStyle;
    begin
       fViewStyle := ReadInteger(_Data, _data_ViewStyle);
       if hCamCapture = 0 then exit;
       SendMessage(hCamCapture, WM_CAP_SET_SCALE, fViewStyle, 0);
    end;
    procedure THIWebCam._var_Handle;
    begin
      dtInteger(_Data, hCamCapture);
    end;
    end.
    Извините на Паскале, но думаю будет понятно, поскольку 90% там АПИшные вещи. Но не гарантирую, что перецислены все константы для захвата видео.
    Насчет сжатия, я попробывал косвенно (скажем зазиповал картинку БМП) особого интузазизма не вызвало, процентов 10-20 экономиться. Методы сжатия видео заточены под быстрые скорости (скажем 50 - 100 кадров в сек), когда кадр от кадра отличается небольшими участками пикселей, под наши условия маловато подходит.
    По VFW, да есть кроме него пакет из под системной для Виндовс DirectX - DirectShow, только он заточен на качественное воспроизведение для захвата видео он обращается все равно к VFW (столкнулся с этим при обработке звука в разделе этого же пакета DirectSound).
    Пока самое неприятное заключается в передачи инфы в окно предпросмотра (не у всех получается, и у меня в том числе), которое есть буфером захвата видео.
    Ну я то другим путем пока решил, захватив сей буфер и отсылая туда инфу из внешней проги. Но хотелось бы сделать по честному .
    Учу мат часть и проверяю на себе.

  5. #2164
    Цитата Сообщение от UR5ZQV Посмотреть сообщение
    Пока самое неприятное заключается в передачи инфы в окно предпросмотра (не у всех получается, и у меня в том числе)
    Предусмотреть все варианты реакции шарманки (а вернее VFW) на работу с камерой не предоставляется возможной. Сегодня положил в копилку еще один неожиданный вариант. После запуска видео на шарманке на ноуте своего кума получил черный квадрат. Когда в меню шарманки Режимы -> Режимы WEB Camera -> Формат, выбрал YUY2, то картинка появилась. Что там происходит, даже догадаться не могу.

    На Си работа с видео у меня в шарманке занимает еще меньше исходного кода.

    Я уже сообщал, что шарманка работает только с разрешением 160 на 120 пиксель. Но с недавнего обновления этот экран еще разбит на квадратики 4 на 4 пиксель, и обновление этих участков происходит только в том случае, если изображение в них действительно значительно изменилось. При начале передачи происходит передача полной картинки, а затем в одном сеансе передаются только те участки 4х4, где есть изменения. Это неплохо экономит трафик. Но правда доставляет неудобство для тех корреспондентов, которые начали прием с середины передачи. Не имея начальной полной картинки, они видят только те участки видео, где происходят изменения.

  6. #2165
    Кто может подсказать в чем проблема? В общем скачал шарманку с официального сайта, распаковал архив, запустил ее, но звука нет, на какую бы частоту не перешел. Никого не слышно.

  7. #2166
    Ангел, произведите настройки для шарманки. Укажите устройства входа и выхода звука. Подробнее на странице http://tiparadio.ru/index.php?p=tools ( пункт "Выбор звуковых устройств" )

  8. #2167

    Регистрация
    26.02.2004
    Адрес
    Николаев
    Сообщений
    13,753
    Позывной
    UR5ZQV
    RN6LIQ,
    После запуска видео на шарманке на ноуте своего кума получил черный квадрат. Когда в меню шарманки Режимы -> Режимы WEB Camera -> Формат, выбрал YUY2, то картинка появилась. Что там происходит, даже догадаться не могу.
    Вашему Куму повезло . Я эти форматы вижу (и в ШАРМАНКЕ, и у себя по через ...DLG_VIDEOFORMAT.. ., только у меня развернуться особо некуда, в моей камере только один формат (YUY2, как у Вашего Кума), и игра с кодеками компрессии (которые включают отработку этого формата) не дала пока результата. А вот другой источник видео - встроенный телевизор заработал (поигравшись с компрессией). Но кой смысл крутить по ШАРМАНКЕ телевизор? Я его и сам давно не смотрю в лучшем качестве. Насчет 160х120 понял, вернее догадался, по качеству и скорости кадров, лично мне больше и не надо ну и статики достаточно - набросал эскизик на бумажку или сделал кадр и показывай, поэтому экономию на обновление кадров понял и приветствую.
    Что касается "малевичей", буду пока читать мировой опыт и пробывать.

  9. #2168
    Это все у меня настроено, но звука все равно нет.

  10. #2169
    У меня тоже ничего не слыхать уже который месяц, фиг знает как там определять на какой частоте кто работает? Может я мало выпил чтобы разобраться с этим, обычно у меня не возникало проблем с освоением какой-либо программы, ну а тут голяк полный. Ещё какой визуальный отзвук в центре экрана периодический моргает, даже когда программа свернута. Видать не судьба мне с ней подружиться.


  11. #2170
    Цитата Сообщение от UА6JDM Посмотреть сообщение
    Видать не судьба мне с ней подружиться.
    Для этой программы нужен скоростной интернет. У меня на даче, где слабый (свисток) интернет, эта прогрвмма тоже не работает. Особых настроек она не требует, нужно лишь правильно указать вход и выход звука звуковой карты. Обычно это по умолчанию , если нет второй зв.карты или виртуального кабеля. У меня пошло с первого пинка
    Простите вашх недругов, но запомните их имена. (Мерфи)

Страница 217 из 329 ПерваяПервая ... 117167207214215216217218219220227267317 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Синтезаторы "Колибри" и "Воробей" AD9951/AD9834/Si570
    от Genadi Zawidowski в разделе Трансиверы, приемники КВ/УКВ
    Ответов: 675
    Последнее сообщение: 07.02.2024, 17:09
  2. Трансивер "Шарманка" на MOSFET
    от Сергей01 в разделе Темы не вошедшие в другие разделы форума
    Ответов: 52
    Последнее сообщение: 16.11.2014, 17:14
  3. Трансматч в точке питания
    от LEONID2 в разделе Согласующие устройства
    Ответов: 13
    Последнее сообщение: 29.12.2013, 19:50
  4. "Емкостное реле" журн. " Радио" 2010/5 (датчик приближения человека)
    от СВП в разделе Темы не вошедшие в другие разделы форума
    Ответов: 48
    Последнее сообщение: 18.04.2011, 13:47

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •