我正在尝试在 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
我是一名优秀的程序员,十分优秀!