vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框

代码目录:E:\vlc-3.0.12\doc\libvlc\QtPlayer

编译成立,但是

libvlc_new返回NULL

老子就是要搞他,在网上的其他人成功的代码帮助下要把他搞成

(背景是:老板要在Qt界面里播放视频文件,本身知道opencv会更简单点,但是想自己去根据文档再熟悉vlc sdk的使用)

libvlc_new返回NULL原因是plugins目录没加入,整个vlc的依赖包括*.dll *.exe 及plugins目录,解决了这个问题继续搞

最后搞出来,在win环境下的Qt应用总结:

1.严禁用linux风格的路径"F:/Exercises/OpenSources/."

在vs中不用操心这点,在vs中最好是li风格路径

2.用std::string保存路径,以下形式不会乱码

std::string path = "F:\\Material\\Video\\res3.avi";

m_media = libvlc_media_new_path(m_vlcInstance, path.c_str());

3.即使原始字符串也不能解决乱码,以下试过仍会乱码

char ch_array[] = {R"(F:/Material/Video/res3.avi)"};

char ch_array[] = {R"(F:\\Material\\Video\\res3.avi)"};

char ch_array[] = {R"(F:\Material\Video\res3.avi)"};

//同样无果,禁用上面三种的形式

4.保存路径可以是char[]用以先,实际2方法中c_str()得到的就是char*

//以下两种是正确示范

char ch_array[] = {"F:\\Material\\Video\\res3.avi"};

const char* path = "F:\\Material\\Video\\res3.avi";

//以下是错误示范:

char ch_array[] = {R"(F:\Material\Video\res3.avi)"};

QString filepath.toUtf8().data();

5.另一个办法,将QString获取的字符串处理,同样得到没乱码的字符串

//QString保存的路径处理下

//前有QString filepath声明

filepath = QDir::toNativeSeparators(filepath).toUtf8().constData();

//转成char*传给目标

libvlc_media_t *vlcMedia = libvlc_media_new_path(vlcInstance, filepath.toUtf8().data());

//抑或使用qtu()宏,转成char*传给目标

libvlc_media_t *vlcMedia = libvlc_media_new_path(vlcInstance, qtu(filepath));

启动文件路径对话框

QString filepath = QFileDialog::getOpenFileName(this, tr("Load a file"), "~");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值