Wie zu verwenden LibVLC mit Qt 5
Ich versuche zu verwenden LibVLC in ein Qt-5-Programm zu öffnen, eine VLC-Instanz und ein video Abspielen.
Der folgende code stammt aus https://wiki.videolan.org/LibVLC_Tutorial/
Ich bin mit Linux.
.pro :
TEMPLATE = app
TARGET = projectLoic
INCLUDEPATH += . vlc
QT += widgets
# Input
HEADERS +=
SOURCES += main.cpp
LIBS +=-lvlc
main :
#include <vlc/vlc.h>
#include <QApplication>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
//Load the VLC engine
inst = libvlc_new(0, NULL);
//Create a new item
m = libvlc_media_new_path (inst, "/home/........mp3");
//Create a media player playing environement
mp = libvlc_media_player_new_from_media (m);
//play the media_player
libvlc_media_player_play (mp);
return app.exec();
}
Die Zusammenstellung ist in Ordnung. Aber das Programm sofort abstürzt, wenn ich es bauen (mit Qt Creator). Irgendeine Idee?
Vielen Dank
InformationsquelleAutor damien | 2014-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Viele Dinge könnte dieser Absturz verursachen. Die besten VLC-Quellcode zurückverfolgen das Problem. Übergeben Sie die option--verbose=2' beim initialisieren libVLC auch helfen können.
In meinem Fall die Ursache für den Absturz war wegen diesem Fehler in der ubuntu-Paket von vlc:
https://bugs.launchpad.net/ubuntu/+source/vlc/+bug/1328466
Beim Aufruf libvlc_new() vlc-Module und Ihre abhängigen Bibliotheken in den Speicher geladen werden. Das qt-Modul LibVLC war auf der Suche nach Qt4-shared objects anstelle von Qt5 (manuell installiert).
Die Lösung war der Wiederaufbau der Modul-cache, die veraltet war ein Hinweis auf Qt4-Binärdateien. Können Sie es zurücksetzen, die auf der Befehlszeile:
Oder pass vlc die option:
manchmal
sudo ldconfig -v
hilft. Wenn Sie neu einige libs wird es richtig machen linkk zu IhnenInformationsquelleAutor arkan
Ich habe noch nie verwendet diese Bibliothek, doch Sind Sie mit genau diesem code?
Diesem Weg kann das problem sein.
Ok, ich bekommen, um den code zu kompilieren und führen Sie es ohne problem. Dies ist, was ich verwendet, um die Bibliothek zu installieren: sudo apt-get install libvlc5 libvlc-dev libvlccore-dev, ich habe nicht genügend Informationen zu sagen, was kann falsch sein. Aber, es funktioniert für mich.
ok, ich habe installiert die Bibliothek, die Sie vorgeschlagen, aber es gibt keine Verbesserung. Dies ist, was ich bekomme :
Starting /home/domi/build-projectLoic-Desktop-Debug/projectLoic... The program has unexpectedly finished. /home/domi/build-projectLoic-Desktop-Debug/projectLoic crashed
Ich muss wissen, in welcher Zeile der code-crash. QtCreator im debug-Modus geben Sie die Letzte Zeile des Programms ausgeführt, und der Stapel mit der Funktion Anrufe. Manchmal, früheren Versionen von Bibliotheken installiert sind, und erstellen Sie diese Art von Konflikten. Ich schlage vor, versucht zu deinstallieren, beide Bibliotheken (Qt und libVLC). Stellen Sie sicher, dass Sie dont haben Sie in den Bibliotheken-Ordner. Ich denke, dass ist /usr/lib. Dann, neu installieren von Grund auf. (Ich hatte das gleiche problem mit libosg einmal, und ich löste es auf diese Weise).
Vielen Dank für die Hilfe. Im debug-Modus bekomme ich :
The inferior stopped because it received a signal from the Operating System. Signal name : SIGSEGV Signal meaning : Segmentation fault
InformationsquelleAutor Jose Monsalve Diaz
Welche distribution von Linux verwendest du?
Ich lief in das gleiche problem mit Qt5 und LibVLC und die primäre Ursache (Ubuntu 12.04 LTS und 14.04 LTS), war, dass LibVLC war der laden der qt4-plugin-Schnittstelle, die den Konflikt mit Qt5. Wenn Sie Ihre call-stack, wirst du höchstwahrscheinlich sehen, dass an einem Qt4-Bibliothek geladen wird, den Absturz verursacht.
Ob das das problem ist, es gibt nur 3 Optionen (getestet mit LibVLC 2.2 und Qt5 auf Ubuntu 12.04 und 14.04 LTS 64 bit).
Den ersten (schlimmsten) ist das löschen der qt4-user-interface-plugin. Sie können dies testen, ist das problem durch verschieben und ausführen und dann setzen Sie es zurück. Löschen brechen Ihre regulären VLC-player die meisten wahrscheinlich.
Zweite option besteht darin, erstellen Sie eine Kopie des plugins Verzeichnis, und legen Sie, dass in Ihrer runtime-Pfad mit VLC_PLUGIN_PATH, Umgebungsvariable. aber ich habe Schwierigkeiten, zu arbeiten, ohne änderung der ursprünglichen plugin-Pfad-Ordner auch (die Pause VLC-player, es sei denn, Sie ändern Ihre Verknüpfungen, etc. auch zu setzen VLC_PLUGIN_PATH.
Die Dritte option, und was ich am Ende Tat, war, um benutzerdefinierte bauen eigene statische LibVLC binäre mit ein paar änderungen im source-code, so dass es nicht geladen wird das qt4-interface plugin installiert, mit VLC. Sie können diesen Schritten Folgen, um dies zu tun.
Dann einfach ein link gegen diese Bibliothek statt.
InformationsquelleAutor bossbarber