webcam. gb.v4l ist tot es lebe gb.media..

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Sa 24. Jun 2017, 11:41

Hallo Leute,

ich mache mal einen neuen auf bezüglich Webcam.
Da gb.v4l im sterben liegt und stattdessen gb.media verwendet wird um die Signale einer Webcam auszulesen bin ich gambis Rat gefolgt und habe mir den Mediaplayer angesehen. Allerdings ist das Programm so umfangreich und ich bin noch nicht wirklich dahinter gestiegen was wie zusammengehört.

Ich habe eine Bitte an die Spezialisten von euch, was dann sicher auch anderen zugute kommt.
Könnte jemand der mehr Ahnung hat als ich, den Teil der die die Webcam benutzt selektieren und in einem eigenen Programm zusammen fassen?
Ich denke das wichtigste ist erstmal nur Bild in einem Fenster. Der Rest sollte sich dann einfacher zusammen setzen lassen.
Ich versuche jetzt seit Tagen das Ding zu verstehen, aber ich bin trotzdem noch ein Anfänger was das betrifft und irgendwie noch zu Blöd dahinter zu steigen.
Es muss nix kompliziertes sein, sondern nur ein kleines Programm was einfach gehalten ist und das Bild der Webcam anzeigt. Ich suche jetzt schon seit einigen Tagen aber alles was ich finde ist noch auf der gb.v4l und die kann ich nicht anwählen wenn ich ein neues Projekt anlege und andere einfache Beispiele kann ich nicht finden.

Hoffende Grüße

Thomas

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Sa 24. Jun 2017, 14:13


linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Sa 24. Jun 2017, 15:41

Super Vielen Dank.
Genau sowas habe ich gesucht :)

Gruß
Thomas

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Mi 28. Jun 2017, 09:50

Hello Vuott,

The first link you posted is great, thank you and it works perfect but
unfortunately, I do not understand the second link in relation to the first link. :oops:

My problem is the following.
I would like to save the video stream of my Toucam either as single pictures, or as .avi.
If I save it as avi-file then I can decompose it myself with ffmpeg into single images.

I know now that we can not store a drawingarea.
This one...
viewtopic.php?f=3&t=4577
... does not work with the webcam.

Do you have any idea how I can solve this with regard to your link with the webcam?
http://www.gambas-it.org/wiki/index.php ... e_gb.media

Many thanks
Thomas

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Mi 28. Jun 2017, 17:02

linuxer hat geschrieben:
Mi 28. Jun 2017, 09:50
I do not understand the second link in relation to the first link.
Hello linuxer,
second page link is not in relation to the first link.
In second link you have code to save video stream in a OGV-theora video file.... but it not is possible contemporally (...in "real time") watching video and saving it. :|

Bye

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Mi 28. Jun 2017, 17:26

Hello Vuott

I've seen there are the function ...

Function GetLastImage() as image
Return the last image displayed by a video output control.

My goal is to save single images of the webcam. I want to shoot with my program planets and later stack the single images.
For this reason, the saving of this images would be important.

Your first link works excellently. Thanks

Do you have an idea how I can implement the function GetLastImage in your example to save images?

greeting
Thomas

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Mi 28. Jun 2017, 19:01

linuxer hat geschrieben:
Mi 28. Jun 2017, 17:26
Function GetLastImage() as image
Return the last image displayed by a video output control.
...yes, but I obtain an error:
" Unsupported default image format "

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Mi 28. Jun 2017, 19:27

...but maybe we have a possibility... by using " .GetScreenshot( ) " method of DesktopWindow Class.

Here a practic little example: gambas code
Private dr As DrawingArea
Private pl As MediaPipeline
Private pc As New Picture[]


Public Sub Form_Open()
 
 Dim src, tim, snk As MediaControl
 Dim ftr As MediaFilter
  
  With dr = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 640
    .H = 480
' We need to assign any color to DrawingArea background:
    .Background = Color.Black
  End With
  
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "v4l2src")
  ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1")
' It shows in the video the time from start:
  tim = New MediaControl(pl, "timeoverlay")
  snk = New MediaControl(pl, "xvimagesink")
  
' We link "GStreamer" plug-in:
  src.LinkTo(tim)
  tim.LinkTo(ftr)
  ftr.LinkTo(snk)
  snk.SetWindow(dr)
 
End


Public Sub Button1_Click()

  Dim dw As DesktopWindow

' Start video:
  pl.State = Media.Playing
  pl.Play()

' Waiting for starting webcam:
  Wait 2
  
  dw = New DesktopWindow(dr.Handle)
  
  While pl.State = Media.Playing
' Take a Screenshot of DrawingArea:
    pc.Push(dw.GetScreenshot(True))
' Get a picture every 300 milliseconds:
    Wait 0.3
  Wend
    
End


Public Sub Button2_Click()   ' Stops video and saves pictures as file image png.

  Dim i As Integer
  Dim drc, s As String
 
   drc = "/tmp/imago"
 
   pl.Stop
  
   If Not Exist(drc) Then
     Mkdir drc
   Else
     For Each s In Dir(drc, "picture_*", gb.file)
       Kill drc &/ s
     Next
   Endif
  
  For i = 0 To pc.Max
    pc[ i].Save(drc &/ "picture_" & CStr(i) & ".png", 100)
  Next
  
End
Zuletzt geändert von vuott am Mi 28. Jun 2017, 20:26, insgesamt 2-mal geändert.

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Mi 28. Jun 2017, 20:23

...other possibilities could be offered by the external functions of libv4l2, or X11 and ImLib2 libraries .
Zuletzt geändert von vuott am Do 29. Jun 2017, 16:10, insgesamt 1-mal geändert.

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Do 29. Jun 2017, 08:20

Hello Vuott,
Thank you so I can work :)
You have helped me a lot.

Thank you very much :)
Thomas

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Do 29. Jun 2017, 23:48

vuott hat geschrieben:
Mi 28. Jun 2017, 19:01
linuxer hat geschrieben:
Mi 28. Jun 2017, 17:26
Function GetLastImage() as image
Return the last image displayed by a video output control.
...yes, but I obtain an error:
" Unsupported default image format "
Well, I returned on this strange error, and I noticed that the error raised only with gb.qt4 Component ! :?
I do not know why...
If I use other graphic Components (e.g. gb.gui), I do not obtain that error.

Linuxer, so try this following code by using gb.gui: gambas code
Private pl As MediaPipeline
Private snk As MediaControl


Public Sub Form_Open()
 
 Dim src As MediaControl
 Dim ftr As MediaFilter
 Dim dr As DrawingArea
 
  With dr = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 640
    .H = 480
    .Background = Color.Black
  End With
  
  pl = New MediaPipeline
 
  src = New MediaControl(pl, "v4l2src")
  
  ftr = New MediaFilter(pl)
  ftr.Filter = "video/x-raw,width=640,height=480,framerate=30/1"
  
  snk = New MediaControl(pl, "xvimagesink")
    
  src.LinkTo(ftr)
  ftr.LinkTo(snk)
  
' Set DrawingArea as video display:
  snk.SetWindow(dr)
  
End


Public Sub Button1_Click()
 
 Dim i As Integer
 Dim drc, s As String
  
  drc = "/tmp/imagines"
  
  If Not Exist(drc) Then
    Mkdir drc
  Else
    For Each s In Dir(drc, "imago_*", gb.file)
      Kill drc &/ s
    Next
  Endif
  
  pl.Play()
  
  While pl.State = Media.Playing
    snk.GetLastImage().Save(drc &/ "imago_" & CStr(I) & ".png")
    Print "Screenshot saved in directory " & drc
' Screenshot saved every 500 milliseconds:
    Wait 0.5
    Inc i
  Wend
  
End


Public Sub Button2_Click()
  
  pl.Stop()
  pl.Close()
  
End

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Fr 30. Jun 2017, 09:08

Hello Vuott,

I get no error, but I will change the source as you have suggested. Thank you very much.

However, I have another problem.
I had your first program supplemented so I had also installed the balance function.

Mp.Balance [0] .Value = hell_sld.Value

But in the new part you renounce the mediaplayer and uses pipeline instead. That means I can not use the balance function.
How can I still use the balance function?

Apologize my bad english I use google translate :(
I would like to thank you for your support :)

Greetings
Thomas

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Fr 30. Jun 2017, 09:27

Hi Vuott

I get an error when i pressed button_1_click().

Unsupportet default image format in webcam .57

While pl.State = Media.Playing
snk.GetLastImage().Save(drc &/ "imago_" & CStr(I) & ".png")
Print "Screenshot saved in directory " & drc
' Screenshot saved every 500 milliseconds:

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von vuott » Fr 30. Jun 2017, 09:34

linuxer hat geschrieben:
Fr 30. Jun 2017, 09:08
That means I can not use the balance function.
How can I still use the balance function?
uhmmm... now I don't know: I never used this property of Mediaplayer Class. :|

linuxer hat geschrieben:
Fr 30. Jun 2017, 09:27
I get an error when i pressed button_1_click().

Unsupportet default image format in webcam .57
My same error !
What graphic Component are you using ? gb.qt4 ?

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Re: webcam. gb.v4l ist tot es lebe gb.media..

Beitrag von linuxer » Fr 30. Jun 2017, 11:28

yes, qt4

gb.gui: warning: 'gb.qt5' component not found, using 'gb.qt4' instead

Thomas

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast