Hallo.
Ich versuche die libvlc.dll aus dem VideoLAN-Client Projekt zu nutzen, um verschiedene WebCams unter Windows und Linux zu nutzen und die Ergebnisse in einer Qt-Oberfläche darzustellen. Um zu vermeiden, das ganze Projekt mit allen Abhängigkeiten übersetzen zu müssen, habe ich die DLL und das Plugins-Verzeichnis kopiert und mir nachträglich eine Link-Library dazu erstellt. Die Includes habe ich einfach aus dem Source-Baum kopiert.
Kompilieren klappt soweit, aber viele Funktionen sind nicht verfügbar. z.B. vermisse ich die libvlc_media* und libvlc_media_player* Funktionen. Konkret erhalte ich bei Verwendung ein "undefined reference" als Linkfehlermeldung. Nun herrscht im VideoLAN-Projekt etwas Verwirrung, einige Funktionen (VLC_*) sind als deprecated markiert, andere sollten genutzt werden, sind jedoch für mich aus o.g. Grund nicht nutzbar. Weiss jemand, warum nicht? Muss ich noch etwas anderes einlinken? Die Tutorials geben nicht allzuviel mehr her.
Auch würde mich interessieren, inwieweit Qt4-Unterstützung von TrollTech o.ä. geplant ist. Soweit ich das aus den Funktionen herauslesen kann, wäre das eine sehr einfach zu nutzende sehr mächtige Bibliothek und würde ja ideal zu Qt passen. Auf der VideoLAN Homepage wird auf Trolltechs-Seiten verweisen, aber ich finde da keine konkreten Aussagen. Es wäre jedenfalls schön, wenn in einer kommenden Qt-Version plötzlich vlc unterstützt werden würde.
MfG, E*
libvlc-Nutzung von Qt4 aus
Ich weiß zwar nicht was genau Du damit machen willst, aber hast Du Dir Phonon schon angeschaut? Das ist plattformübergreifend und verwendet unter Windows DirectShow als Basis. Damit musst Du zwar evtl. die Codecs wie ffmpeg selbst installieren aber es dürfte einfacher zu nutzen sein als VLC.
Die andere Möglichkeit ist die Verwendung von QLibrary statt selbst eine Linker Bibliothek zu erstellen.
Die andere Möglichkeit ist die Verwendung von QLibrary statt selbst eine Linker Bibliothek zu erstellen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ich sehe auch hier nicht wirklich ein Qt-Problem.
Ich kenn die Lib nicht aber
- ist sie C-only funktioniert das mit der nachträglichen Import-Lib Erstellung
- ist sie C++ kann es nicht funktionieren da Du das Name-Mangling nicht kennst und außerdem muss die DLL mit dem gleichen Compiler wie der rest erstellt worden sein (man kann msvc und mingw nicht mixen).
Ich kenn die Lib nicht aber
- ist sie C-only funktioniert das mit der nachträglichen Import-Lib Erstellung
- ist sie C++ kann es nicht funktionieren da Du das Name-Mangling nicht kennst und außerdem muss die DLL mit dem gleichen Compiler wie der rest erstellt worden sein (man kann msvc und mingw nicht mixen).
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Hallo. Habt erstmal alle vielen Dank für Eure Hinweise.
@Volker:
Phonon:
In der Tat ist Phonon genau das, was ich eigentlich benötigen würde. Leider ist mein Ziel die Auswertung (inkl. Laden/Speichern) von mehreren Webcam-Datenströmen und da ist (korrigiere mich bitte, wenn ich falsch liegen sollte) Phonon noch nicht soweit. Zumindest http://doc.trolltech.com/4.4/phonon-overview.html vertröstet auf eine Folgeversion.
QLibrary:
Das wäre eine mögliche Lösung, wenn ich jede Funktion einzeln auflösen und ansprechen wollte. Im Netz gibt es sogar Projekte (VLB/.NET), die auf diese Art und Weise herangehen. Aber das Ansprechen der vorhandenen Symbole klappt ja. Ich vermisse nur welche, die in der API-Doku aufgelistet werden. Ich habe mittlerweile so das Gefühl, dass der VideoLAN-Client eine spezielle DLL kompiliert bekommen hat, wo unnötige Routinen wegoptimiert worden sind. Wobei ich mich nicht so gut mit der Lib auskenne, dass ich das mit Sicherheit sagen könnte und ich noch nicht über derartige #ifdefs gestolpert bin.
Irgendwie hatte ich gehofft, dass der eine oder andere hier sich schonmal mit VLC beschäftigt hat.
@Sephral:
Danke für den Hinweis auf Quicktime, aber ich wollte eigentlich eine gute und dauerhaft freie Lösung haben. Inweiweit das damit möglich ist, weiss ich nicht, aber VLC ist da schon die ideale Lib (wenn erst mal alles funktioniert), da sie frei ist, alle möglichen Dekoder/Encoder bietet, laden und speichern kann, Zugriff auf die Webcams hat und wenige, sehr einfache und mächtige Routinen benutzt.
Ich hatte auch angedacht, die Logitech SDKs o.ä. zu nehmen, aber die sind uralt und ich glaube auch da gibt es lizenzrechtliche Einschränkungen. Einfach runterladen war jedenfalls nicht. Es wurde mir nur eine Bewerbung um SDK-Zugriff angeboten (falls ich von einem Spieleentwickler kommen würde). Aber da sind noch andere Probleme (Lizenz, NDA, ggf. fehlende Linux-Portabilität).
@Christian81:
Fehlende Qt-Thematik:
Du hast Recht, aber das ist tatsächlich im weitesten Sinne ein typisches Qt-Problem ("wie bekomme ich Webcam-Daten einfach in eine Qt-Anwendung"). Hätte Qt diese Funktionalität, dann gäbe es das Problem nicht
und die Frage kommt regelmässig in anderen Ausprägungen wieder ... Konkret habe ich vorher geschaut, wo die ganzen OpenCV-Leute ihre Webcam Fragen hinschieben und da blieben nur noch "Einfach Qt" und "Qt Programmierung". Also hoffe ich einfach mal, dass es ein Qt-Thema wird (da auf der VLC-Homepage auch Qt derzeit aktuelles Thema ist und der VLC als Standard eine Qt-GUI erhält). Ich werde einfach mal einen Wrapper basteln und den hier veröffentlichen und wenn der Weg erstmal für Qt-Nutzer dokumentiert ist (was muss wohin kopiert werden, ...), dann finden sich vielleicht auch ein paar Nutzer, die die Klassen nutzen werden. Aber erstmal sollte mein Code laufen... Nächste Schritte: Ich werde mir mal den phonon-vlc-mplayer und qvlc etwas näher ansehen.
Danke,
E*
@Volker:
Phonon:
In der Tat ist Phonon genau das, was ich eigentlich benötigen würde. Leider ist mein Ziel die Auswertung (inkl. Laden/Speichern) von mehreren Webcam-Datenströmen und da ist (korrigiere mich bitte, wenn ich falsch liegen sollte) Phonon noch nicht soweit. Zumindest http://doc.trolltech.com/4.4/phonon-overview.html vertröstet auf eine Folgeversion.
QLibrary:
Das wäre eine mögliche Lösung, wenn ich jede Funktion einzeln auflösen und ansprechen wollte. Im Netz gibt es sogar Projekte (VLB/.NET), die auf diese Art und Weise herangehen. Aber das Ansprechen der vorhandenen Symbole klappt ja. Ich vermisse nur welche, die in der API-Doku aufgelistet werden. Ich habe mittlerweile so das Gefühl, dass der VideoLAN-Client eine spezielle DLL kompiliert bekommen hat, wo unnötige Routinen wegoptimiert worden sind. Wobei ich mich nicht so gut mit der Lib auskenne, dass ich das mit Sicherheit sagen könnte und ich noch nicht über derartige #ifdefs gestolpert bin.
Irgendwie hatte ich gehofft, dass der eine oder andere hier sich schonmal mit VLC beschäftigt hat.
@Sephral:
Danke für den Hinweis auf Quicktime, aber ich wollte eigentlich eine gute und dauerhaft freie Lösung haben. Inweiweit das damit möglich ist, weiss ich nicht, aber VLC ist da schon die ideale Lib (wenn erst mal alles funktioniert), da sie frei ist, alle möglichen Dekoder/Encoder bietet, laden und speichern kann, Zugriff auf die Webcams hat und wenige, sehr einfache und mächtige Routinen benutzt.
Ich hatte auch angedacht, die Logitech SDKs o.ä. zu nehmen, aber die sind uralt und ich glaube auch da gibt es lizenzrechtliche Einschränkungen. Einfach runterladen war jedenfalls nicht. Es wurde mir nur eine Bewerbung um SDK-Zugriff angeboten (falls ich von einem Spieleentwickler kommen würde). Aber da sind noch andere Probleme (Lizenz, NDA, ggf. fehlende Linux-Portabilität).
@Christian81:
Fehlende Qt-Thematik:
Du hast Recht, aber das ist tatsächlich im weitesten Sinne ein typisches Qt-Problem ("wie bekomme ich Webcam-Daten einfach in eine Qt-Anwendung"). Hätte Qt diese Funktionalität, dann gäbe es das Problem nicht
Danke,
E*