c++ - 如何在 Qt 5 中使用 LibVLC

标签 c++ qt vlc libvlc

我正在尝试在 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

关于c++ - 如何在 Qt 5 中使用 LibVLC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25068127/

相关文章:

c# - 导出 C++ DLL 函数并导入 C#

qt - 使用 QML Media Player 获取慢动作视频

c++ - 无法在 QThread 与多个 Qthread 的 finished() 信号之间进行连接

linux - 庆典 : sudo: permission denied

c++ - C++ 11中的boost::thread_group?

android - 如何使用 JNI 将 C++ char 2d 数组返回到 JAVA

c++ - 编译模板方面对 char、signed char 或 unsigned char 参数类型的函数重载

c++ - QT Embedded : How to generate an event to ESC (Escape), F1 等按键

audio - 在 VLC 中的音轨之间添加暂停

c - VLC 的 opencv_example 插件无法正常工作