Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Multimedia

k23:k23.9:k23.9.3:start

23.9.3 MediaControl (gb.media)

Diese Klasse ist das Äquivalent zu einem GStreamer-Element, das eines der GStreamer-Plugins repräsentiert.

Unter dem Link https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c finden Sie eine Liste der aktuellen GStreamer-Plugins - von 3gppmux bis zebrastripe - mit den ausführlichen Beschreibungen (Stand: Dezember 2023).

Die Klasse ist erzeugbar. So erzeugen Sie ein neues MediaControl:

Dim hMediaControl As MediaControl
hMediaControl = New MediaControl ( [ Parent As MediaContainer, Type As String ] ) [ As "EventName" ] 
  • Parent ist ein optionaler Container für das neue Steuerelement.
  • Type ist der Typ des von diesem MediaControl implementierten GStreamer-Plugins.

Die Klasse funktioniert wie ein Lese-/Schreib-Array.

Lesen: Gibt den Wert einer MediaControl-Eigenschaft anhand ihres Namens zurück. Die vom Steuerelement unterstützten Eigenschaften hängen von seinem Typ ab.

Dim hMediaControl As MediaControl
Dim vValue As Variant

vValue = hMediaControl [ Property As String ]

Schreiben: Definiert den Wert einer MediaControl-Eigenschaft anhand ihres Namens. Die von dem Steuerelement unterstützten Eigenschaften hängen von seinem Typ ab.

Dim hMediaControl As MediaControl
Dim vValue As Variant

hMediaControl [ Property As String ] = vValue

23.9.3.1 Eigenschaften

Die Klasse MediaControl verfügt über diese Eigenschaften:

EigenschaftDatentypBeschreibung
Inputs String[ ]Gibt die Namen aller Eingänge/Inputs zurück.
Name StringGibt den Namen des MediaControls zurück oder setzt ihn.
Outputs String[ ]Gibt die Namen aller Ausgänge/Outputs zurück.
Parent MediaContainerGibt das übergeordnete Element des Steuerelements zurück.
StateIntegerGibt den Zustand eines MediaControls zurück oder definiert ihn. Es kann eine der folgenden Konstanten sein: Media.Null (1), Media.Ready (2), Media.Paused (3) oder Media.Playing (4).
TypeStringLiefert den Typ des MediaControls zurück.

Tabelle 23.9.3.1.1 : Eigenschaften der Klasse MediaControl

23.9.3.2 Methoden

Die Klasse MediaControl verfügt über diese Methoden:

MethodeRückgabetypBeschreibung
GetLastImage ( )ImageGibt das zuletzt von einem Videoausgang-Steuerelement angezeigte Bild zurück.
GetLink ( Name As String ) MediaLinkLiefert die Beschreibung eines Eingangs oder Ausgangs anhand ihres Namens.
LinkLaterTo ( Target As MediaControl )-Verknüpft das aktuelle Steuerelement mit dem Zielsteuerelement, sobald eine neue Ausgabe darauf erscheint. Einige Steuerelemente haben Ausgaben, die spontan erscheinen können, d.h. wenn die Daten eintreffen. In diesem Fall schlägt die LinkTo-Methode fehl, da die Ausgabe zum Zeitpunkt des Aufrufs noch nicht vorhanden ist. Sie müssen also LinkLaterTo verwenden. Achtung: Diese Methode funktioniert bis zu Gambas 3.18 nicht zuverlässig. Dies wurde in Gambas 3.18.2 behoben. Jetzt kann diese Methode mehrfach aufgerufen werden: Sobald ein Kontrollausgang verfügbar ist, werden alle Ziele gegen den neuen Ausgang geprüft, wobei die Reihenfolge der LinkLaterTo()-Aufrufe eingehalten wird. Erst wenn ein Ziel mit dem Ausgang verknüpft werden kann, wird das nächste Ziel ausgewählt.
LinkTo ( Target As MediaControl [ , Output As String, Input As String ] )-Verknüpft einen Ausgang des aktuellen MediaControls mit dem Eingang des Ziel-MediaControls. `Target` ist das Ziel-Steuerelement, `Output` ist der Name des Ausgangs des aktuellen Steuerelementes und `Input` ist der Name des Inputs des Ziel-Steuerelementes. Wenn Output und Input nicht angegeben werden, versucht GStreamer, den besten Output und Input zu finden, der zu der Link-Anforderung passt, entsprechend dem Typ der Quellsteuerung und dem Typ der Zielsteuerung. Einige Steuerelemente haben Ausgaben, die „on the fly“ erscheinen können, d.h. wenn die Daten ankommen. In diesem Fall schlägt die LinkTo-Methode fehl, da die Ausgabe zum Zeitpunkt des Aufrufs nicht vorhanden ist. Sie müssen stattdessen LinkLaterTo verwenden.
SetWindow ( Control As Control [ , X As Integer, Y As Integer, Width As Integer, Height As Integer ] )-Diese Methode weist das MediaControl an, seine Ausgabe innerhalb eines bestimmten GUI-Controls zu zeichnen. `Control` ist das Steuerelement, in das gezeichnet werden soll. `X, Y, Width, Height` bestimmen ein Zielrechteck innerhalb des Steuerelements. Wenn es nicht angegeben, so wird die gesamte Oberfläche des Steuerelements verwendet. Nur Steuerelemente, welche das GStreamer-X-OVERLAY-Interface implementieren, unterstützen diese Methode. Das Ziel-Steuerelement muss ein eigenes Fenster haben. Um dies zu gewährleisten, verwenden Sie eine DrawingArea mit der Eigenschaft Cached.

Tabelle 23.9.3.2.1 : Methoden der Klasse MediaControl

23.9.3.3 Ereignisse

Die Klasse MediaControl verfügt nur über ein Ereignis:

EreignisBeschreibung
State ( )Dieses Ereignis wird ausgelöst, wenn sich der Zustand des Steuerelements geändert hat.

Tabelle 23.9.3.3.1 : Ereignisse der Klasse MediaControl

23.9.3.4 Beispiel

Für das u.a. Beispiel wird zuerst die Terminal-Befehlszeile für GStreamer angegeben:

gst-launch-1.0 \
uridecodebin uri="http://icecast.ndr.de/ndr/ndr1wellenord/kiel/mp3/128/stream.mp3" \
! audioconvert \
! autoaudiosink

BILD

Abbildung 23.9.3.4.1: MediaPipeline mit MediaControls

Hier folgt die Umsetzung mit Gambas. Quelltext-Abschnitt:

    [1] Public Sub CreatePipeline()
    [2]
    [3]     mpPipeline = New MediaPipeline As "PipeEvents"
    [4]
    [5]     mcSource = New MediaControl(mpPipeline, "uridecodebin")
    [6] '-- ["uri"] is a property of the MediaControl 'mcSource'
    [7]     mcSource["uri"] = "http://icecast.ndr.de/ndr/ndr1wellenord/kiel/mp3/128/stream.mp3"
    [8]     mcConvert = New MediaControl(mpPipeline, "audioconvert")
    [9]     mcSink = New MediaControl(mpPipeline, "autoaudiosink")
    [10]
    [11]     mcSource.LinkLaterTo(mcConvert)
    [12]     mcConvert.LinkTo(mcSink)
    [13]
    [14] End
    [15] Public Sub btnPlay_Click()
    [16]     CreatePipeline()
    [17]     mpPipeline.Play()
    [18] End

Kommentar

  • In den Zeilen 5, 8 und 9 werden neue MediaControl-Objekte erzeugt.
  • Die URL der Audio-Quelle wird in der Zeile 7 hinzugefügt.
  • Die Verlinkung der MediaControls erfolgt in den Zeilen 5, 8 und 9.
  • In der Zeile 17 wird die erzeugte MediaPipeline abgespielt.

Im Download-Bereich finden Sie das Projekt-Archiv für den kompletten Quelltext.

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k23/k23.9/k23.9.3/start.txt · Zuletzt geändert: 13.01.2024 von honsek

Seiten-Werkzeuge