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