forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на PureBasic (http://forum.boolean.name/forumdisplay.php?f=91)
-   -   Сервис, работающий с вебками. (http://forum.boolean.name/showthread.php?t=12130)

Slepetc 06.03.2010 17:20

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


Вложение 9420 запустите Server потом Client, нужны только любые логин и пароль.



Проблема в том, что время от времени пропадает кусок передаваемого файла(передача ведётся покадрово через sendnetworkfile) и торможение на несколько секунд. Может кто сталкивался с подобным и может предложить решение?

falcon 07.03.2010 14:17

Ответ: Сервис, работающий с вебками.
 
не смотрелся с утра в зеркало, и когда увидел свою рожу в маниторе, чуть с стула не упал :)
молоток!
слуш, не подскажешь, какими средствами захватывать изображение с вебки?
доки какие что ли почитать дай )))
а то есть у меня тут одна дикая идея... займусь как нибудь на досуге)

Slepetc 07.03.2010 23:35

Ответ: Сервис, работающий с вебками.
 
Это самый простенький код для снятия картинки с вебки:
Код:

If OpenLibrary(0, "avicap32.dll")
 *capAddress = GetFunction(0, "capCreateCaptureWindowA")
  hWndC = CallFunctionFast(*capAddress, "", #WS_CHILD, 10, 10, 6, 4, WindowID(0),1)
  SendMessage_(hWndC, #WM_CAP_DRIVER_CONNECT, 0, 0)
  SendMessage_(hWndC, #WM_CAP_DLG_VIDEOSOURCE, 0, 0)
  SendMessage_(hWndC, #WM_CAP_DLG_VIDEOFORMAT, 0, 0)

  SendMessage_(hWndC, #WM_CAP_GRAB_FRAME, 0, 0)
  SendMessage_(hWndC, #WM_CAP_FILE_SAVEDIB, 0, *куда сохранить файл с вебки*)

  SendMessage_(hWndC, #WM_CAP_STOP, 0, 0)
  SendMessage_(hWndC, #WM_CAP_DRIVER_DISCONNECT, 0, 0)
  DestroyWindow_(hWndC)
  СloseLibrary(0)
Endif

А это более увесистый(не мой):

Код:

; PB IRC Chat
; Author: DarkDragon (updated for PB 4.00 by Andre)
; Date: 22. May 2005
; OS: Windows
; Demo: No

#WM_CAP_START = #WM_USER

#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_DRIVER_CONNECT        =  #WM_USER + 10
#WM_CAP_DRIVER_DISCONNECT    =  #WM_USER + 11
#WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14

#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_SET_PREVIEW = #WM_CAP_START + 50
#WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
#WM_CAP_GET_STATUS = #WM_CAP_START + 54

#WM_CAP_FILE_SAVEDIB          =  #WM_USER + 25
#WM_CAP_SET_SCALE            =  #WM_USER + 53

#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85

Structure VIDEOHDR
  lpData.l
  dwBufferLength.l
  dwBytesUsed.l
  dwTimeCaptured.l
  dwUser.l
  dwFlags.l
  dwReserved.l[3]
EndStructure

Procedure FrameCallback(lwnd.l, *lpVHdr.VIDEOHDR)
  For k=0 To *lpVHdr\dwBufferLength-1
    Color = PeekB(*lpVHdr\lpData+k)
    PokeB(*lpVHdr\lpData+k, RGB(Blue(Color), Green(Color), Red(Color)))
  Next
EndProcedure

hWnd = OpenWindow(0, 0, 0, 400, 500, "WebCamTest", #PB_Window_SystemMenu)

CreateGadgetList(WindowID(0))

If OpenLibrary(0, "AVICAP32.DLL")

  hWebcam = CallFunction(0, "capCreateCaptureWindowA", "BLUBBER", #WS_VISIBLE + #WS_CHILD, 10, 10, 380, 380, hWnd, 0)

  CallFunction(0, "capSetCallbackOnFrame", hWebcam, @FrameCallback())

  SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT          , 0 , 0)
  SendMessage_(hWebcam, #WM_CAP_SET_SCALE              , 1 , 0)
  SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE        , 50, 0)
  SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW            , 1 , 0)

  SendMessage_(hWebcam, #WM_CAP_SET_CALLBACK_FRAME      , 0 , @FrameCallback())

  Repeat
    Event = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        Quit = 1
    EndSelect
  Until Quit = 1
  SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW      , 0, 0)
  SendMessage_(hWebcam, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
  CloseWindow(0)
  CloseLibrary(0)
EndIf
;End


Оч интересно, как у тебя шло, по теме лагов и глюков картинок.

falcon 08.03.2010 01:41

Ответ: Сервис, работающий с вебками.
 
лагало с периодичностью, подвисало на долго
но в среднем впринцыпе нормально

Slepetc 08.03.2010 01:43

Ответ: Сервис, работающий с вебками.
 
А серые куски были?

falcon 08.03.2010 01:52

Ответ: Сервис, работающий с вебками.
 
не заметил вроде.. внизу справа ток какие то 4 точки..

Slepetc 08.03.2010 02:27

Ответ: Сервис, работающий с вебками.
 
Ясно. Спс.

Slepetc 11.03.2010 21:07

Ответ: Сервис, работающий с вебками.
 
Короче, несколько переработал проект, теперь привилегированн веб интерфейс.

Сайт: Top-ca

Выложенные исходники я удалил, т.к. они не комплектовались с нынешним сервером.

falcon 12.03.2010 14:14

Ответ: Сервис, работающий с вебками.
 
ну ваще те исходники которые были, можно было и не выкладывать)
без обид но пока что оценивать нечего)))
у меня в планах было, сделать софтину, разбирающую движение)
по идее должен получиться большой тормаз... но вдруг получиться нечто приемлимое))
просто чисто по фану... махнул рукой - фключился медиаплеер ))
щёлкнул пальцами (хотя для моей вебки слишком быстрое движение чтоб получить четкую картинку) - включился браузер ^^

Slepetc 12.03.2010 15:08

Ответ: Сервис, работающий с вебками.
 
Вообще, без обид, но это такой боян.

Если интересно, то я видел оченьблизкую нароботку

тут или тут, точно не помню.

falcon 12.03.2010 22:28

Ответ: Сервис, работающий с вебками.
 
пфф.. скажешь тоже
почти всё что делают в целях самообразования - баян.
и "это" в данном случае не исключение.

Slepetc 13.03.2010 00:19

Ответ: Сервис, работающий с вебками.
 
Прости, если я тя обидел, просто почти все дорываясь до работы с вебками думают именно об этом. А так идея интересная, но непрактичная.)))

falcon 13.03.2010 14:36

Ответ: Сервис, работающий с вебками.
 
Расслабься, обидеть меня ну очень сложно))
идея бестолковая, непрактичная, согласен.. по факту такое управление вообще не нужно..
но вот то что это интересно - меня и прильщает :)
при чем сама работа с вебкой тут минимальна.
наверняка можно получить изображение через DirectShow.. и дальше обрабатывать с помощью ГАПИ..
вот сама обработка интересная.
эт надо научить прогу разбирать разные движения...
ну эт ладн, эт в долгий ящик)))

Maxus 12.11.2011 01:36

Ответ: Сервис, работающий с вебками.
 
На самом деле этот сервис очень удобно было бы написать с опорой на DxShow.


Часовой пояс GMT +4, время: 10:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot