日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發(fā)布時間:2024/9/27 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼目錄:E:\vlc-3.0.12\doc\libvlc\QtPlayer

編譯成立,但是

libvlc_new返回NULL

老子就是要搞他,在網(wǎng)上的其他人成功的代碼幫助下要把他搞成

(背景是:老板要在Qt界面里播放視頻文件,本身知道opencv會更簡單點,但是想自己去根據(jù)文檔再熟悉vlc sdk的使用)

libvlc_new返回NULL原因是plugins目錄沒加入,整個vlc的依賴包括*.dll *.exe 及plugins目錄,解決了這個問題繼續(xù)搞

最后搞出來,在win環(huán)境下的Qt應(yīng)用總結(jié):

1.嚴(yán)禁用linux風(fēng)格的路徑"F:/Exercises/OpenSources/."

在vs中不用操心這點,在vs中最好是li風(fēng)格路徑

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獲取的字符串處理,同樣得到?jīng)]亂碼的字符串

//QString保存的路徑處理下

//前有QString filepath聲明

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

//轉(zhuǎn)成char*傳給目標(biāo)

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

//抑或使用qtu()宏,轉(zhuǎn)成char*傳給目標(biāo)

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

啟動文件路徑對話框

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

總結(jié)

以上是生活随笔為你收集整理的vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。