Seite 1 von 2

Webcam Video LiveStream über Lan übertragen?

Verfasst: 19.09.2006 19:50
von Rothammel
Hallo
also ich habe jetzt diesen Code hier verwendet:

Code: Alles auswählen

#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

Structure CAPSTATUS
  uiImageWidth.l
  uiImageHeight.l
  fLiveWindow.l
  fOverlayWindow.l
  fScale.l
  ptScroll.Point
  fUsingDefaultPalette.l
  fAudioHardware.l
  fCapFileExists.l
  dwCurrentVideoFrame.l
  dwCurrentVideoFramesDropped.l
  dwCurrentWaveSamples.l
  dwCurrentTimeElapsedMS.l
  hPalCurrent.l
  fCapturingNow.l
  dwReturn.l
  wNumVideoAllocated.l
  wNumAudioAllocated.l
EndStructure

hWnd = OpenWindow(0, 0, 0, 800, 600, #PB_Window_SystemMenu, "WebCamTest")

CreateGadgetList(WindowID())

If OpenLibrary(0, "AVICAP32.DLL")

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

SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT          , 0 , 0) ;<- da halt auf den entsprechenden treiber(0-9) ändern
SendMessage_(hWebcam, #WM_CAP_SET_SCALE               , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE         , 10, 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW             , 1 , 0)

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
der funzt gut. ich sehe das Webcambild.
Aber wie kann ich das jetzt über Lan mit 24 Bildern/Sekunden übertragen?
Man müsste ja wohl das Bild ordentlich kompriemieren! bei 50kbyte pro Bild sind das ja schon 1,2Mbyte/sekunde! ! ! :shock:

Ich hoffe jemand hat eine gute Idee.
MfG Rothammel

Verfasst: 19.09.2006 20:05
von Kaeru Gaman
...hattest du zu dem thema nicht schon woanders geschrieben?

Ja klar

Verfasst: 19.09.2006 20:18
von Rothammel
na klar, aber da wurden keine positiven Antworten gegeben! Und das war auch offtopic
Und die Webcam Problematik ist hier auch schon geklärt. Ich würde nur gerne wissen wie man am besten mit wenig Traffic die Bilder übertragen könnte! :o
MfG Rothammel

Verfasst: 19.09.2006 21:28
von winduff
ich denke mal - als DAU - durch kompression.... 8)

WOW, das ist es!

Verfasst: 20.09.2006 14:44
von Rothammel
Das ist die Idee, :o
aber das müsste wirklich eine sehr gute Kompression sein. Mehr als 350kbyte/s sollten schon nicht rauskommen!
MfG Rothammel

Verfasst: 20.09.2006 15:08
von Kaeru Gaman
die kompression müsste aber ebenfalls "life" ablaufen,
und je besser eine kompression ist, desto länger dauert sie.
das wird also auf jeden fall zu verzögerungen im Bild führen.

um die grunddatenmenge klein zu halten, egal ob du später komprimierst oder nicht,
solltest du dir überlegen, wiviele bilder pro sekunde in welcher größe du wirklich benötigst.

denk einfach dran, dass ein 640x480-truecolor-bild 16 mal so viel platz braucht wie ein 320x240-256-farb-bild,
das bedeutet, wenn du in 640x480-true 3 bilder pro sekunde versendest,
kannst du in 320x240-256farb schon 48 bilder versenden bei gleicher uploadrate.

achja, und noch was:
350kbyte/s kannst du als downloadrate gewiss haben, aber die uploadrate des rechners wo die Cam dranhängt muss auch fett genug sein...

GUT

Verfasst: 20.09.2006 15:29
von Rothammel
Die Webcam sitzt auf einem 1:6 Modell Humer mit einem Via MiniBoard und Wlan! Daher ist eine echte "life" Übertragung sehr wichtig :lol: .
Man will ja nicht lenken und in Wirklichkeit ist man schon angefahren. :(

Kann mir da jemand eine schnelle Webcam empfehlen.

Da mein WLAN ja nur 5Mbit an Daten über diese Entfernug schaufeln kann sind die 350kbyte/s doch recht gut gewählt!
MfG Rothammel

Verfasst: 20.09.2006 17:16
von RaVeN99
Reduzier die anzahl der Bilder / Sekunde, das dürfte die effektivste methode sein. Zumal - wenn ichs richitg im Kopf habe - die wenigsten webcams 24 Bilder/Sekunde bei einer 640er Auflösung schaffen, das iss meistens nur bei ner 320er drin. Die höhere Auflösung ist imho eh unnütz, da du ja nur erkennen musst wohin du navigieren willst, da reicht die 320er völlig aus. Reduzierst du zeitgleich die gesendeten bilder solltest du durchaus in nen bereich kommen der vertretbar ist.
Und wie gesagt, zum navigieren reichen die 12-14 Bilder durchaus aus, zumindest wenn du nicht gerade mit +50 km/h durch die gegend schüsselst ;) Ansonsten erkennste die hindernisse ja auch frühzeitig ^^


Mfg
RaVeN

Verfasst: 20.09.2006 18:54
von bluejoke
Cooles Projekt, da würd ich gern mehr dazu wissen!

Colles Projekt!

Verfasst: 20.09.2006 19:29
von Rothammel
http://gigaquarts.mine.nu/forum/viewtopic.php?p=49

das waren oder sind die Anfänge

und hier die Orginal Doku

http://217.20.120.126/wiki/index.php/Dokumentation

ganz interesant oder?

MfG Rothammel