|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#31
|
|||
|
|||
Будет отлично, если вы напишите по русски.
Перевел. Что именно вам надо? Программу кидать не буду, т.к. это корпоративная этика. Лучше скажите, я расскажу. Я нашел решение проблемы с помощью того, что я связался с разработчиком и он мне все рассказал и объяснил. Жизнь - игра: сюжет фигня... Зато какая графика!!! Последний раз редактировалось DSL88, 19.12.2010 в 00:28. |
#32
|
|||
|
|||
moo2k moo2k вне форума
Местный Регистрация: 05.12.2006 Адрес: где-то там... Сообщения: 320 Репутация: 25 По умолчанию Вот подправил ошибки, которые нашел. У меня работает. Компилил на D2007. Вложения Тип файла: zip Camera.zip (5.8 Кбайт, 1069 просмотров) __________________ Программирование - это искусство и наш смысл жизни. Ответить с цитированием -------------------------------------------------- будь ласка,відправте архів ізвсією прогою якщо є......мені дуже потрібно...я запутався і не можу нічогго виправить....будь-ласка,буду дуже вдячний! |
#33
|
|||
|
|||
будь ласка скачайте мені на емейл 4erep1993@ukr.net......це треба срочно(питання життя і смерті........в мене залишилось 2 дні.....щоб шось показать)......БУДЬ ЛАСКА!!!!!!!!!!
|
#34
|
|||
|
|||
Блин а как DSPack добавить в 9 делфи???... он скотина выкоблучивается))) не хочет... или я вася)!
|
#35
|
||||
|
||||
Все нормально устанавливается.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#36
|
||||
|
||||
Когда я пытался поставить DSPack в свою Delphi10, он мне выдал около десятка ошибок. Пришлось их править: сидеть и вникать, что же хотел написать автор. В итоге запустил...
Но мое личное ИМХО - игра не стоит свеч. Для работы с веб-камерой пользую AVICAP32.DLL (стандартная библа винды) и счастлив Правда не знаю, можно ли им сохранить видео. jmp $ ; Happy End! The Cake Is A Lie. |
#37
|
|||
|
|||
Пасибо большое... использую эту библиотеку, работает... но вверх ногами)))) как-бы пытаюсь найти косяк но чето нихрена вот код:
Код:
SaveDialog1: TSaveDialog; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } hWndC: THandle; CapturingAVI: bool; public { Public declarations } end; var Form1: TForm1; implementation const WM_CAP_START = WM_USER; const WM_CAP_STOP = WM_CAP_START + 68; const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; const WM_CAP_SAVEDIB = WM_CAP_START + 25; const WM_CAP_GRAB_FRAME = WM_CAP_START + 60; const WM_CAP_SEQUENCE = WM_CAP_START + 62; const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20; {$R *.dfm} function capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle: longint; x: integer; y: integer; nWidth: integer; nHeight: integer; ParentWin: HWND; nId: integer): HWND; stdcall external'AVICAP32.DLL'; procedure TForm1.Button1Click(Sender: TObject); begin hWndC := capCreateCaptureWindowA('My Own Capture Window', WS_CHILD or WS_VISIBLE, Panel1.Left, Panel1.Top, Panel1.Width, Panel1.Height, Form1.Handle, 0); if hWndC <> 0 then SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if hWndC <> 0 then SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0); тут это типо картинку каждый раз обнавляет... end; Последний раз редактировалось Admin, 13.01.2011 в 09:53. |
#38
|
||||
|
||||
А дрова для камеры точно есть?
Обычно они проводят всю работу перед тем, как вывести изображение на экран. Вообще есть такая штука: Код:
const AVICAPDLL = 'AVICAP32.DLL'; WM_CAP_START = WM_USER; WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5; WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41; WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44; WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45; WM_CAP_GET_STATUS = WM_CAP_START + 54; WM_CAP_GRAB_FRAME = WM_CAP_START + 60; WM_CAP_STOP = WM_CAP_START + 68; WM_CAP_SET_PREVIEW = WM_CAP_START + 50; WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52; WM_CAP_SET_SCALE = WM_CAP_START + 53; WM_CAP_EDIT_COPY = WM_CAP_START + 30; WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4; WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6; WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43; ... // Устанавливаем параметры предпросмотра SendMessage(h_cam, WM_CAP_SET_SCALE, 1, 0); SendMessage(h_cam, WM_CAP_SET_PREVIEWRATE, 40, 0); SendMessage(h_cam, WM_CAP_SET_PREVIEW, 1, 0); SendMessage(h_cam, WM_CAP_SET_CALLBACK_FRAME, 0, Integer(@FrameCallback)); Последнее для простого рисования изображения на форме не нужно. После этого не понадобится даже таймер, а изображение будет автоматически рисоваться в окне камеры через каждые 40 миллисекунд (только далеко не все камеры поддерживают 25 кадров/сек, у моей например максимум 15) jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 12.01.2011 в 23:34. |
#39
|
|||
|
|||
Кто нить работал с сетевыми web камерами? Как получить видео поток или картинку с сетевой камеры? Видео, конечно можно получить и в браузере, но тогда вопрос, как вытащить его из браузера. Как снять хотя бы картинку с того места браузера, где производится вывод видео, и даже в том случае, когда браузер свернут? Это реально сделать?
|
#40
|
|||
|
|||
с верх ногами разобрался... пасибо теперь возникает еще куча вопросов
1) когда говорю ему записывай то он записывает но записывает до тех пор пока самому не надоест. 2) в savedialog указываю имя файла под которым надо сохранить видеозапись но сохранение происходит под другим именем в основном под именем "D" и еще и без расширения... вот код... помогите люди добрые))))) Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; Button2: TButton; Button4: TButton; Button5: TButton; Button6: TButton; SaveDialog1: TSaveDialog; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } hwndc: THandle; Capturingavi: bool; public { Public declarations } end; var Form1: TForm1; implementation const WM_CAP_START = WM_USER; const WM_CAP_STOP = WM_CAP_START + 68; const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; const WM_CAP_SAVEDIB = WM_CAP_START + 25; const WM_CAP_GRAB_FRAME = WM_CAP_START + 60; const WM_CAP_SEQUENCE = WM_CAP_START + 62; const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20; {$R *.dfm} function capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle: longint; x: integer; y: integer; nWidth: integer; nHeight: integer; ParentWin: HWND; nId: integer): HWND; stdcall external 'AVICAP32.DLL'; procedure TForm1.Button1Click(Sender: TObject); begin hWndC := capCreateCaptureWindowA('Записывающее Окно', WS_CHILD or WS_VISIBLE, Panel1.Left, Panel1.Top, Panel1.Width, Panel1.Height, Form1.Handle, 0); if hWndC <> 0 then SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); timer1.Enabled:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin if hWndC <> 0 then begin SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0); hWndC := 0; end; end; procedure TForm1.Button4Click(Sender: TObject); begin if hWndC <> 0 then begin SaveDialog1.DefaultExt := 'bmp'; SaveDialog1.Filter := 'Bitmap files (*.bmp)|*.bmp'; if SaveDialog1.Execute then SendMessage(hWndC, WM_CAP_SAVEDIB, 0, longint(pchar(SaveDialog1.FileName))); end; end; procedure TForm1.Button5Click(Sender: TObject); begin if hWndC <> 0 then begin SaveDialog1.DefaultExt := 'avi'; SaveDialog1.Filter := 'AVI files (*.avi)|*.avi'; if SaveDialog1.Execute then begin CapturingAVI := true; SendMessage(hWndC, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, Longint(pchar(SaveDialog1.FileName))); SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0); end; end; end; procedure TForm1.Button6Click(Sender: TObject); begin if hWndC <> 0 then begin SendMessage(hWndC, WM_CAP_STOP, 0, 0); CapturingAVI := false; end; end; procedure TForm1.FormCreate(Sender: TObject); begin CapturingAVI := false; hWndC := 0; SaveDialog1.Options :=[ofHideReadOnly, ofNoChangeDir, ofPathMustExist] end; procedure TForm1.Timer1Timer(Sender: TObject); begin if hWndC <> 0 then SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0); end; end. Последний раз редактировалось Admin, 18.01.2011 в 22:55. |
#41
|
|||
|
|||
Баг
Мне надо обрабатывать кадры с камеры несколько раз в секунду... если выставить в таймере (прога котурую выложыл moo2k) значение <100 то тут начинаютса баги:
1) Постепенное выделение оперативной памяти 2) Если потрясти окном программы то оно или зависнит, или выскочит ошибка Впринцыпе я думаю что ето баг самого DSPack, потому что если взять его родной пример PlayVideoCap и также бешено потрясти окном , то память также будет выделятса... Подскажыте что мне делать плиз, прога нужна срочно ЗЫ: Если что, извините за плохой руский |
#42
|
||||
|
||||
м да, я оказивается полный лаамер(
Последний раз редактировалось neostile1990, 31.08.2011 в 16:15. |
#43
|
|||
|
|||
Скачайте GraphEdit и попробуйте поработать в нем. Пока не поймете основы - дальше разговаривать бессмысленно.
В меню есть пункт InsertFilters и там куча фильтров. Нас интересуют фильтры DirectShow. Выберите фильтр "File source (Async)" и нажмите кнопку добавить. В открывшемся окне выберите какой-нибудь файл с фильмом. Теперь вызовите контекстное меню, щелкнув правой кнопкой мыши справа от надписи Output, и выберите пункт Renrer Pin. После некоторого раздумья появится схема. Теперь можно запустить фильм (кнопка с треугольником). А теперь то что хотели разделение потока (для просмотра и записи). Остановите проигрывание. Удалите связь до или после компрессора (как нравится). Добавьте фильтр "Infinite Pin Tee Filter" (это такой универсальный разветвитель). Восстановите удаленную ранее связь, пустив ее через фильтр "Infinite Pin Tee Filter". Сначала надо подключить вход этого фильтра, выходы - потом. Когда подключите выход, увидите что число выходов увеличилось на единицу. Выберите следующий выход и выполните команду "Render Pin...". Появится еще одна цепочка. Теперь, если запустить проигрывание, должно получиться примерно следующая картина: Вот с выхода такого разветвителя и нужно писать в файл. Поставив нужную цепочку, можно выбрать компрессию, формат файла, перевернуть изображение и многое другое. Еще обратите внимание, что у каждого фильтра, а также у его входов и выходов есть свойства. Такие свойства скорее всего есть и у веб-камеры (определяется драйвером камеры, поэтом заранее не скажу). И вот в этих свойствах тоже может быть заложена возможность поворачивать изображение. P.S. AVICap32 - давно устаревшая библиотека, пережиток 16-битных версий. Со всеми вытекающими. Она давно уже не поддерживается и жива лишь потому что сама работает через DirectShow. Используйте DirectShow и будет вам счастье. Все современные видеоплеееры работают именнно через DirectShow и ничего. Пакет DSPack вполне работоспособен (насчет новых версий не скажу, но года 3 назад все было хорошо). Если хотите получить прямой регулярный доступ к данным видеопотока, лучше не выцеплять их через Grab-фильтры, а написать свой фильтр и вставить его в нужное место цепочки. DSPack это позволяет, и не так уж это сложно в конце концов. Последний раз редактировалось Lucky192, 05.10.2011 в 06:08. |
#44
|
|||
|
|||
Цитата:
Насчет проблемы с появлением ошибки external exception c0000008 при работе с web камерой (если вдруг кому потребуется). Решается так: Tools -> Options -> Borland Debuggers -> Native OS Exceptions -> Ищите там свою ошибку Invalid Handle ($C0000008) и ставите в атрибутах On resume - Run handled. Компилируете и наслаждаетесь картинкой с камеры. |
#45
|
||||
|
||||
Цитата:
|