為此特意將vlc的呼叫封裝乙個類:
qvlcplayer
#ifndef qvlcplayer_h
#define qvlcplayer_h
#include
typedef void (* pfnposchanged) (void *data, int ipos); // 檔案位置變化
struct libvlc_instance_t;
struct libvlc_media_player_t;
struct libvlc_event_t;
class qvlcplayer : public qobject
;#endif // qvlcplayer_h
qvlcplayer.cpp
#include "qvlcplayer.h"
#include "vlc/vlc.h"
#include "vlc/libvlc_media.h"
#include
#include
#include
// vlc的事件管理
void onvlc_endreached(const libvlc_event_t *event, void *data);
void onvlc_positionchanged(const libvlc_event_t *event, void *data);
qvlcplayer::qvlcplayer(qobject *parent)
: qobject(parent),
m_pvlc_inst(null),
m_pvlc_player(null),
m_pfn(null)
//qvlcplayer::~qvlcplayer()
bool qvlcplayer::play(qstring strpath)
if (strpath.isempty() || !m_pvlc_inst)
this->stop();
bool bret = false;
libvlc_media_t *m;
#if defined(q_os_win)
m_filepath = strpath.replace("/","\\",qt::casesensitive);
#elif defined(q_os_linux)
m_filepath = strpath;
#endif
//將檔案路徑進行編碼轉換(不轉換的話不能識別中文,進而會出現錯誤)
m_filepath = unicodetoutf8(m_filepath);
m = libvlc_media_new_path(m_pvlc_inst,m_filepath.toascii());
if (m)
libvlc_media_release(m);
}return bret;
}void qvlcplayer::play()
}//暫停
void qvlcplayer::pause()
}void qvlcplayer::stop()
}void qvlcplayer::volume(int nvol)
}//增加音量
void qvlcplayer::volumeincrease()
}//減小音量
void qvlcplayer::volumereduce()
}void qvlcplayer::seekto(int npos)
}//快進
void qvlcplayer::seekforward()
//快退
void qvlcplayer::seekbackward()
void qvlcplayer::setcallback(pfnposchanged pfn)
pfnposchanged qvlcplayer::getcallback()
bool qvlcplayer::isopen()
bool qvlcplayer::isplaying()
return false;
}bool qvlcplayer::ispause()
}else
return tem;
}int qvlcplayer::getpos()
return0;}
qint64 qvlcplayer::gettime()
return0;}
void qvlcplayer::setplaytime(qint64 time)
}//獲取長度:當前**的總時間長度
qint64 qvlcplayer::getlength()
return0;}
/*typedef enum libvlc_state_t libvlc_state_t;
*/int qvlcplayer::getplaystatue()
return0;}
const
char *qvlcplayer::getlibvlcversion()
return
"";}
//vlc例項初始化
void qvlcplayer::init()
m_filepath = "";
}//unicode轉utf8
qstring qvlcplayer::unicodetoutf8(const qstring &strwide)
foreach (const qstring &str, t)
return codec->fromunicode(strutf8);
}void qvlcplayer::release()
}void onvlc_endreached(const libvlc_event_t *event,void *data)
void onvlc_positionchanged(const libvlc_event_t *event, void *data)}}
break;
case libvlc_mediaplayersnapshottaken:
break;
default:
break;}}
一下是configure之後的截圖,這一步算數成功了。
在之後的make過程中,錯誤百出!
若是有哪位大神編譯好了arm版本的vlc庫,還是很希望能交流下,不勝感激!
技術在於交流、分享……
email:[email protected]
C 呼叫DLL學習筆記 動態呼叫
編譯dll時會生成兩個檔案,乙個是lib,乙個是dll.注意,此處生成的lib檔案和靜態庫的lib檔案不是乙個東西。呼叫dll有兩種方式 隱式載入 顯式載入。一 隱式載入方式 隱式載入方式下,需要3個檔案,分別是dll檔案 lib檔案以及對應的標頭檔案。例paneldata.dll paneldat...
python學習 呼叫函式
python內建了很多有用的函式,我們可以直接呼叫。也可以在互動式命令列通過help abs 檢視abs函式的幫助資訊。呼叫abs函式 abs 100 100 abs 20 20 abs 12.34 12.34呼叫函式的時候,如果傳入的引數數量不對,會報typeerror的錯誤,並且python會明...
angularsJS學習 指令呼叫
ng init指令為 angularjs 應用程式定義了初始值。通常情況下,不使用 ng init。而是使用乙個控制器或模組來代替它。ng model指令繫結 html 元素到應用程式資料。ng model指令也可以 ng repeat指令對於集合中 陣列中 的每個項會轉殖一次 html 元素。除了...