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"), "~");
總結
以上是生活随笔為你收集整理的vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试行业用mac好还是win好,业余
- 下一篇: python环绕文字_如何用css实现文