TLCLVLCPlayer vs. BGRABitmap

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

Moin zusammen.

nach einigen Wochen und vielen Tutorials bin ich mit dem BGRABitmap sehr weit gekommen.
Auch mit dem TLCLVLCPlayer konnte ich meine Erfolge erziehlen.
Lediglich an einen Punkt komme ich leider in's schleudern.

Ich will/muß gewisse Eigenschaften (Transparenz, Antileasing) mit der TLCLVLCPlayer verbinden.
Dabei bin ich gerade am Überlegen, ob es sinnvoll wäre das "VIDEOLayer" auf den BGRABitmap zu verankern.
Warum ich mit TLCLVLCPlayer Arbeite?
Habe einige Videos, Gifs, welche in Verbindung mit anderen Bildern/Videos ein neues Gesamtwerk ergeben sollen.
und die mir bekannten Komponenten können keine MP4 und co verarbeiten und auf Snapshots & Copy2Layer hab ich bei bis zu 60 fps kein Bock.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Winni »

Hallo!

Hört sich spannend an, wobei ich mich mit TLCLVLCPlayer nicht auskenne - hab bisher den Sound mit BASS erledigt.

Was ist genau die Aufgabenstellung?

Zum einen gibt es ungeahnte Möglichkeiten mit BGRAbitmap.BlendImage bzw BlendImageOver.
Weiter gibt es die Möglichkeit den Alpha-Kanal ein bzw Auszublenden: procedure AlphaFill

Und unter der BGRA Komponenten gibt es mehrere, die als Basis gleich die TBGRAbitmap mitbringen.

Schreib mal Details.

Winni

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

Moin Winni.

Als VJ habe ich eine gewisse Sammlung an Videos, Gifs und Bilder, welche ich ich einem multidimensional Layer wiedergeben will/möchte/muß.

Leider werd ich bei TBGRABitmap im Bereich der Videos ausgebremst 🤔, was ja mehr oder weniger der Name schon vermuten lässt.

Außer VLC fällt mit spontan auch keine kombonente ein, welche Videos abspielt.
Wenn ich diese dann noch mit Alphablending, Comakey und Co in Einklang bekomme, hab ich alles was ich brauche

Unterm Strich soll es in die Richtung GLMixer gehen, nur das ich da meine externe Hardware verwenden kann und meine Layer hinten, vorne, Links, rechts, oben und unten mit max 10 Ebenen abdecken kann.

GLMixer kann nur 5 Ebenen und ohne externe Hardware.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von six1 »

MPlayer mit der Komponente von Matthias Gärtner.
Ist in OPM enthalten.
Ich hatte den damals etwas modifiziert, damit er unter WIN und LIN läuft. Änderungen sind in der aktuellen Version drin.
Gruß, Michael

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Winni »

Hi!

"Geheimtipp":

Es gibt eine Komponente, die den mplayer steuert. mplayer ist das Schweizermesser für Audio und Video und Standard unter Linux; inzwischen auch für Windows verfügbar.

Hier gibt genaueres über den TMPlayerControl:

https://wiki.freepascal.org/TMPlayerControl

Grüße
Winni

six1 war schneller .....

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von af0815 »

Grundlegend bei Videokomponenten muss man das selbst zeichnen oder dem System einen Canvas zur Verfügung stellen, auf welchen gezeichnet werden kann. Da sind zwischen xxxBitmap und Video zwei Welten zu verbinden, die nicht unbedingt was gemeinsam haben. Bei V4L bekomme ich zum Beispiel die Bilder als Rohdaten und darf die dann selbst in eine xxxBitmap einfüllen. Noch dazu darf man die noch selbst ins richtige Format kodieren.

Einfacher habe ich es be GSreamer gefundent, wo man auf einem fertigen Videostream statische Komponenten hineinrendern kann. So eine Art Superimpose.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

Winni hat geschrieben:
Do 10. Jun 2021, 09:36
Hi!

"Geheimtipp":

Es gibt eine Komponente, die den mplayer steuert. mplayer ist das Schweizermesser für Audio und Video und Standard unter Linux; inzwischen auch für Windows verfügbar.

Hier gibt genaueres über den TMPlayerControl:

https://wiki.freepascal.org/TMPlayerControl

Grüße
Winni

six1 war schneller .....
Und wie schaut es da mit Alpha-Blend und Co aus?
Da hab ich auch die schnelle noch gefunden 😵 und dies ist ein sehr wichtiger Aspekt bei meinem Vorhaben.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

af0815 hat geschrieben:
Do 10. Jun 2021, 11:35
Grundlegend bei Videokomponenten muss man das selbst zeichnen oder dem System einen Canvas zur Verfügung stellen, auf welchen gezeichnet werden kann. Da sind zwischen xxxBitmap und Video zwei Welten zu verbinden, die nicht unbedingt was gemeinsam haben. Bei V4L bekomme ich zum Beispiel die Bilder als Rohdaten und darf die dann selbst in eine xxxBitmap einfüllen. Noch dazu darf man die noch selbst ins richtige Format kodieren.


Das wird wohl das sein, wo ich nicht drumrum kommen werde.
Egal mit welchen Kombonenten ich arbeiten werde.
af0815 hat geschrieben:
Do 10. Jun 2021, 11:35


Einfacher habe ich es be GSreamer gefundent, wo man auf einem fertigen Videostream statische Komponenten hineinrendern kann. So eine Art Superimpose.
Habe ich auch schon Auge gehabt, verwende ich auch für 2-Demensionale Sachen, aber für das, was ich vor habe reicht es leider noch nicht.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Winni »

Hi!

Sieht so aus, als ob es das noch nicht gibt, was Du benötigst.

BGRAbitmap ist zwar schnell, aber ob das für Deine Bedürfnisse ausreicht, weiss ich nicht.

Tipp: Die ganzen Routinen von BGRA sind thread-sicher mit Ausnahme des Font-Renderings.
Musst Du halt jede Menge Threads losjagen - was die CPU so hergibt.

Winni

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

Winni hat geschrieben:
Do 10. Jun 2021, 21:01
Hi!

Sieht so aus, als ob es das noch nicht gibt, was Du benötigst.

BGRAbitmap ist zwar schnell, aber ob das für Deine Bedürfnisse ausreicht, weiss ich nicht.

Tipp: Die ganzen Routinen von BGRA sind thread-sicher mit Ausnahme des Font-Renderings.
Musst Du halt jede Menge Threads losjagen - was die CPU so hergibt.

Winni
und genau das ist meine Befürchtung, das ein Athlon64 4 x 2,3 GHz, 8GB Ram und 16GB swap nicht reichen bzw knapp werden.
Debian Studio 18.04 könnte damit fertig werden, aber wenn ich das mal auf einer Windoof-Maschiene laufen lassen will, werde ich sicher den ein oder anderen BlueScreen bekommen :D

Vom Zieleinsatzsystem, will ich erst garnicht reden...

Pi4

EDIT:

Ich gehe echt mal davon aus, das ich die FPS für die Videos in HG auslesen muß, und entsprechend auf den Timer gerechnet jedes Frame einzeln in als JPG speichern muß und dies dann durch das BGRA laden und Manuell wieder zsm fügen.

Bei max 6 Videos sollte ich mal locker 360 FPS ein planen...
Das beim Bau, im Video Monitor und ggf auf die Capture Card zum Streamen?
also bis zu 1000 fps wird böse...
Zum Glück alles OHNE Audiospur.
Die kommt von meinem DJ-Kollegen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Winni »

Hi!

Auf jeden Fall JPGs vermeiden. Erstens ist die Kompression nicht verlustfrei, zweitens gibt es keine Transparenz und drittens ist das Laden und Speichern wegen der komplexen Kompression/Dekompression zeitraubend.

PNG ist der erprobte und schnelle Standard.

Und sieh dir mal von den BGRAcomponents den TBGRAVirtualScreen und die TBGRAImageManipulation an. Die bieten als Komponente eine TBGRAbitmap als Basis - quasi als Ersatz für ein TImage.

Da kann man im Hintergrund auf einer zweiten BGRAbitmap schon jede Menge malen und wenn es Zeit ist, das auf die BGRAbitmap der Komponente kopieren.

So richtig ist mir allerdings immer noch nicht klar, was Du vor hast.

Winni

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von six1 »

Wenn ich so deine Anforderungen lese, denke ich unweigerlich daran, dass du mal bei PIXAR STUDIOS anrufen solltest... :lol:
Zuletzt geändert von six1 am Fr 11. Jun 2021, 09:06, insgesamt 1-mal geändert.
Gruß, Michael

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

six1 hat geschrieben:
Fr 11. Jun 2021, 06:13
Wenn ich so seine Anforderungen lese, denke ich unweigerlich daran, dass du mal bei PIXAR STUDIOS anrufen solltest... :lol:
Nee, danke... Daran hab ich kein Interesse, 🤣
Winni hat geschrieben:
Do 10. Jun 2021, 23:21
Hi!

Auf jeden Fall JPGs vermeiden. Erstens ist die Kompression nicht verlustfrei, zweitens gibt es keine Transparenz und drittens ist das Laden und Speichern wegen der komplexen Kompression/Dekompression zeitraubend.

PNG ist der erprobte und schnelle Standard.

Und sieh dir mal von den BGRAcomponents den TBGRAVirtualScreen und die TBGRAImageManipulation an. Die bieten als Komponente eine TBGRAbitmap als Basis - quasi als Ersatz für ein TImage.

Da kann man im Hintergrund auf einer zweiten BGRAbitmap schon jede Menge malen und wenn es Zeit ist, das auf die BGRAbitmap der Komponente kopieren.

So richtig ist mir allerdings immer noch nicht klar, was Du vor hast.

Winni
Joar, wie beschreibt man es, ohne ein klares Bsp...
So in etwa soll es aussehen

https://m.youtube.com/watch?v=SS2lAUWF6 ... e=youtu.be

Und das war unser erster Versuch ausschließlich mit OBS

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Winni »

Hallo!

Und wofür brauchst Du da Echtzeit?

Du kannst Dir doch das Video in aller Ruhe Bild für Bild zusammen rendern.

Oder meinetwegen in SlowMo.

Winni

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TLCLVLCPlayer vs. BGRABitmap

Beitrag von Maik81SE »

Winni hat geschrieben:
Fr 11. Jun 2021, 15:08
Hallo!

Und wofür brauchst Du da Echtzeit?

Du kannst Dir doch das Video in aller Ruhe Bild für Bild zusammen rendern.

Oder meinetwegen in SlowMo.

Winni
Macht man, wenn man diese Sachen Vorproduziert und da hab ich meine Programme, Aber live ist das ein anderer Schnack

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Antworten