我正在尝试在Qt 5程序中使用LibVLC打开VLC实例并播放视频。
以下代码来自https://wiki.videolan.org/LibVLC_Tutorial/
我正在使用Linux。

.pro:

TEMPLATE = app
TARGET = projectLoic
INCLUDEPATH += . vlc
QT += widgets
# Input
HEADERS +=
SOURCES += main.cpp
LIBS +=-lvlc

主要:
#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();
}

编译很好。但是,当我使用Qt Creator构建程序时,该程序立即崩溃。任何的想法?

非常感谢

最佳答案

许多事情都可能导致崩溃。最好的办法是获取VLC源代码以追溯问题。在初始化libVLC时传递选项'--verbose = 2'也会​​有所帮助。

就我而言,崩溃的原因是由于vlc的ubuntu软件包中的以下错误:
https://bugs.launchpad.net/ubuntu/+source/vlc/+bug/1328466

调用libvlc_new()时,vlc模块及其相关库会加载到内存中。 LibVLC的qt模块正在搜索Qt4共享对象,而不是Qt5(手动安装)。

解决方案是重建模块缓存,该缓存已过时,无法指向Qt4二进制文件。您可以在命令行上将其重置:

sudo /usr/lib/vlc/vlc-cache-gen -f /usr/lib/vlc/plugins/

或将选项传递给vlc:
--reset-plugins-cache

10-08 07:32