metadaten von videos bestimmen
metadaten von videos bestimmen
Hi,
ich versuche ein frontend für ffmpeg zu schreiben und suche nach einer Möglichkeit, Metadaten von Videos zu bestimmen (größe, codecs usw.). Mplayer kann ich nehmen (wird eh von der Anwendung vorausgesetzt), der Aufruf dauert aber zu lange, beim Öffnen von ~100 files ist die anwendung ewig lange blockiert.
Weiß einer eine Möglichkeit ?
ich versuche ein frontend für ffmpeg zu schreiben und suche nach einer Möglichkeit, Metadaten von Videos zu bestimmen (größe, codecs usw.). Mplayer kann ich nehmen (wird eh von der Anwendung vorausgesetzt), der Aufruf dauert aber zu lange, beim Öffnen von ~100 files ist die anwendung ewig lange blockiert.
Weiß einer eine Möglichkeit ?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Mir würde nur einfallen die Procedure die für das abfragen zuständig ist in einen Thread zu lagern. Ich meine mit XINE ist sowas auch direkt möglich.
Wie greifst du den auf ffmpeg zurück ? über eine LIB? oder über einen Aufruf von einem Externen Programm ?
Wenn letzteres zutrifft:
http://wiki.lazarus.freepascal.org/Exec ... rograms/de" onclick="window.open(this.href);return false;
Wie greifst du den auf ffmpeg zurück ? über eine LIB? oder über einen Aufruf von einem Externen Programm ?
Wenn letzteres zutrifft:
http://wiki.lazarus.freepascal.org/Exec ... rograms/de" onclick="window.open(this.href);return false;
MFG
Michael Springwald
Michael Springwald
Hi,
ich wollte möglichst keinen Fremdcode nehmen, der das Programm durch Lizenszwang belastet, deswegen rufe ich nur extern auf. Gibts denn überhaupt libs für videobearbeitung in irgendeiner Form ?
Sorry dass ich so doof frage, habe zwar gesucht, aber nur mittels google usw., Habe gar keine Ahnung von freepascal und wo man da gute Ressourcen findet. Habe auch noch nie was in Pascal gemacht. Das Programm habe ich gestern mal angefangen. So siehts im Moment aus: siehe Anhang
Wie man sieht, sollen einige der Infos als subitems in das Listview-Widget rein und da liegt das Problem. Für jedes Info-Item wird 'mplayer [...] -identify' einmal aufgerufen. Da die Daten zu den Videos in einem dynamischen Array gespeichert sind, würde ein eigener Thread wohl die Indizes völlig durcheinander bringen.
Wenn ich weniger als 20 Files gleichzeitig öffne, ist alles ok und die Verzögerung erträglich, bei 20-50 Files dauerts zu lange und bei >50 Files gibts nen segmentation fault
Kann auch den Code mal posten, wenn das hilft.
ich wollte möglichst keinen Fremdcode nehmen, der das Programm durch Lizenszwang belastet, deswegen rufe ich nur extern auf. Gibts denn überhaupt libs für videobearbeitung in irgendeiner Form ?
Sorry dass ich so doof frage, habe zwar gesucht, aber nur mittels google usw., Habe gar keine Ahnung von freepascal und wo man da gute Ressourcen findet. Habe auch noch nie was in Pascal gemacht. Das Programm habe ich gestern mal angefangen. So siehts im Moment aus: siehe Anhang
Wie man sieht, sollen einige der Infos als subitems in das Listview-Widget rein und da liegt das Problem. Für jedes Info-Item wird 'mplayer [...] -identify' einmal aufgerufen. Da die Daten zu den Videos in einem dynamischen Array gespeichert sind, würde ein eigener Thread wohl die Indizes völlig durcheinander bringen.
Wenn ich weniger als 20 Files gleichzeitig öffne, ist alles ok und die Verzögerung erträglich, bei 20-50 Files dauerts zu lange und bei >50 Files gibts nen segmentation fault

Kann auch den Code mal posten, wenn das hilft.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Sieht doch schon gut aus. Mir sind leider keine wirklichen libs bekannt für Lazarus die sich um Videos kümmern. Man müsste also auf eine vorhandene Lib aufsetzen und die umwandeln nach Pascal. Wenn das Projekt nur unter Linux laufen soll währe es relativ einfach, ich könnte dir mein XINE Header geben, die ich unter Lazarus zum Laufen bekommen habe.
Die müssten auch für das auslesen der "Meta Daten" was bereitstellen.
Für Windows sieht das ganze schon anders aus.
Bei Windows könntest versuchen auf der WINAPI aufzustehen, aber leicht wird es nicht.
Windows bietet ja die Möglichkeit an z.b. den Media Player einzubinden, ob das auch unter Lazarus geht weiß ich nicht.
Aber auch Winamp soll dies über seine API können.
Dein vorhaben ist nicht ganz einfach.
Letzte Möglichkeit: Selbst eine Lib zu erstellen die sich um das auslesen der Meta Daten kümmert. Dürfte aber nicht so einfach werden. Daher würde ich auch einfach auf FFMpeg aufsetzten.
statt ein dynamischen array würde ich evlt. eine TObjectList nehmen, aber schneller ist das dadurch nicht. Zum auslesen könntest du aber durchaus einen Thread nehmen, der es der reihe nach abarbeitet, so würde der User schonmal die ersten Daten sehen, die das Programm ausgelesen hat.
Außerdem könntest du noch zeit sparen in dem du in deiner ListBox(ist doch eine oder?
beim hinzufügen Folgnedes einbaust: UpdateBeging und UpdatetEnd.
müsste unter Listbox1.items zu finden sein.
Hast du dir mal mein Link angeschaut ? da gibt es ein bereich, der etwas für dein sein dürfte....
PS: Ich Wusste gar nicht das Lazarus ein OS ist(steht in deiner Signatur bzw. hast du angeben bei OS *G*
Die müssten auch für das auslesen der "Meta Daten" was bereitstellen.
Für Windows sieht das ganze schon anders aus.
Bei Windows könntest versuchen auf der WINAPI aufzustehen, aber leicht wird es nicht.
Windows bietet ja die Möglichkeit an z.b. den Media Player einzubinden, ob das auch unter Lazarus geht weiß ich nicht.
Aber auch Winamp soll dies über seine API können.
Dein vorhaben ist nicht ganz einfach.
Letzte Möglichkeit: Selbst eine Lib zu erstellen die sich um das auslesen der Meta Daten kümmert. Dürfte aber nicht so einfach werden. Daher würde ich auch einfach auf FFMpeg aufsetzten.
statt ein dynamischen array würde ich evlt. eine TObjectList nehmen, aber schneller ist das dadurch nicht. Zum auslesen könntest du aber durchaus einen Thread nehmen, der es der reihe nach abarbeitet, so würde der User schonmal die ersten Daten sehen, die das Programm ausgelesen hat.
Außerdem könntest du noch zeit sparen in dem du in deiner ListBox(ist doch eine oder?
beim hinzufügen Folgnedes einbaust: UpdateBeging und UpdatetEnd.
müsste unter Listbox1.items zu finden sein.
Hast du dir mal mein Link angeschaut ? da gibt es ein bereich, der etwas für dein sein dürfte....
PS: Ich Wusste gar nicht das Lazarus ein OS ist(steht in deiner Signatur bzw. hast du angeben bei OS *G*
MFG
Michael Springwald
Michael Springwald
das sind die Sachen, die man einfach wissen musspluto hat geschrieben: statt ein dynamischen array würde ich evlt. eine TObjectList nehmen, aber schneller ist das dadurch nicht.

ist ein TListView. Ganz vertraut bin ich mit dem Ding auch noch nicht, bspw. ist es mir nicht gelungen subitems nachträglich einzufügen, also wenn die Items schon alle drinstehen. Es geht nur gleichzeitig mit dem Einfügen der Items, also:Außerdem könntest du noch zeit sparen in dem du in deiner ListBox(ist doch eine oder?
beim hinzufügen Folgnedes einbaust: UpdateBeging und UpdatetEnd.
müsste unter Listbox1.items zu finden sein.
Item:=ListView1.Items.Add;
Item.Caption:=vitemlist.basename;
Item.SubItems.Add(vitemlist.vcodec);
Item.SubItems.Add(vitemlist.acodec);
aber wie bekomme ich subitems rein, wenn ich zum Beispiel schon 5 items drinstehen habe, und will subitems für item1 hinzufügen ?
Hast du dir mal mein Link angeschaut ? da gibt es ein bereich, der etwas für dein sein dürfte....
jetzt grade

PS: Ich Wusste gar nicht das Lazarus ein OS ist(steht in deiner Signatur bzw. hast du angeben bei OS *G*
ich hab nur die Standardvorgaben im Profil verändert, keine Ahnung, warum die Form jetzt versaut ist. Bei dir steht das übrigens auch so

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
schau dir mal wegen den Pascal Grundlagen diesen Link an:
http://www.delphi-treff.de/sprachen/object-pascal/" onclick="window.open(this.href);return false;
das ist zwar für Delphi. aber ein großen Teil kannst du auch unter Lazarus verwenden.
Wenn du schon einen Eintrag hast und möchtest SubItems hinzufügen ist das ganz einfach:
ListView1.items[0].subitems[0]:='test'
wobei 0 währe hier der Zweite Eintrag. Der erste währe Caption also:
Listview1.Items[0].Caption:='test';
das geht aber nur wenn es den Eintrag 0 auch gibt in der liste.
In deinen Fall also z.b.:
ListView1.items[0].subitems.add('test')
fügt Einträge Hinten in der liste ein.
Ich hoffe das hilft dir etwas weiter. Was verwendest du denn für ein Betriebssystem ?
Der ListView Header sieht mir zu fremd aus....
http://www.delphi-treff.de/sprachen/object-pascal/" onclick="window.open(this.href);return false;
das ist zwar für Delphi. aber ein großen Teil kannst du auch unter Lazarus verwenden.
Wenn du schon einen Eintrag hast und möchtest SubItems hinzufügen ist das ganz einfach:
ListView1.items[0].subitems[0]:='test'
wobei 0 währe hier der Zweite Eintrag. Der erste währe Caption also:
Listview1.Items[0].Caption:='test';
das geht aber nur wenn es den Eintrag 0 auch gibt in der liste.
In deinen Fall also z.b.:
ListView1.items[0].subitems.add('test')
fügt Einträge Hinten in der liste ein.
Ich hoffe das hilft dir etwas weiter. Was verwendest du denn für ein Betriebssystem ?
Der ListView Header sieht mir zu fremd aus....
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ach so. Weil das System habe ich auch.
Debian Lenny/ aber ein anders Theme.....
Ich finde es auch blöd das es im Video Bereich noch nix passendes gibt für Lazarus. Was wirklich Plattform unabhängig ist.
Wir müssten letztendlich auch nur eine Video Lib finden die auf verschiedene Betriebssystemen läuft. Und die wir für Lazarus anpassen können.
Leider hört es sich wieder einfacher an als es ist. Ob man auf die mplayer sachen aufbauen kann ? der ist ja recht gut unter Linux. oder auf VLC ?
Die sind beide OpenSoruce.
Debian Lenny/ aber ein anders Theme.....
Ich finde es auch blöd das es im Video Bereich noch nix passendes gibt für Lazarus. Was wirklich Plattform unabhängig ist.
Wir müssten letztendlich auch nur eine Video Lib finden die auf verschiedene Betriebssystemen läuft. Und die wir für Lazarus anpassen können.
Leider hört es sich wieder einfacher an als es ist. Ob man auf die mplayer sachen aufbauen kann ? der ist ja recht gut unter Linux. oder auf VLC ?
Die sind beide OpenSoruce.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Vielleicht hilft das ja ein wenig:
http://www.khronos.org/openml/" onclick="window.open(this.href);return false;
http://community.freepascal.org:10000/b ... _id=110921" onclick="window.open(this.href);return false;
http://community.freepascal.org:10000/l ... une/005385" onclick="window.open(this.href);return false;
http://www.cg.tuwien.ac.at/~knapp/graph ... frame.html" onclick="window.open(this.href);return false;
Ich weiß, die Ergebnisse sind nicht das "Gelbe vom Ei", aber ein Anhaltspunkt.
(geht es jetzt eigentlich NUR um die Metadaten, oder auch um das Abspielen?)
http://www.khronos.org/openml/" onclick="window.open(this.href);return false;
http://community.freepascal.org:10000/b ... _id=110921" onclick="window.open(this.href);return false;
http://community.freepascal.org:10000/l ... une/005385" onclick="window.open(this.href);return false;
http://www.cg.tuwien.ac.at/~knapp/graph ... frame.html" onclick="window.open(this.href);return false;
Ich weiß, die Ergebnisse sind nicht das "Gelbe vom Ei", aber ein Anhaltspunkt.
(geht es jetzt eigentlich NUR um die Metadaten, oder auch um das Abspielen?)
- af0815
- Lazarusforum e. V.
- Beiträge: 6856
- 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:
Klingt wie eine Drohung.pluto hat geschrieben:wir
BTW. wie wäre es mal good old google und die wiki zu bemühen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Das habe ich schon mal Tage lang versucht. Entweder bedine ich die Suche Falsch oder ich finde einfach nix. Das es nix gibt, das glaube ich auch nicht. Ich habe mir sogar auch schon Soruce-Codes vom Mplayer angeschaut. Aber geholfen hat das leider nicht viel.... 

Warum ? ist doch erst das zweite mal das ich sowas vorschlage. *G*Klingt wie eine Drohung.
MFG
Michael Springwald
Michael Springwald