VLC SDK呼叫學習

2021-07-10 17:20:36 字數 3440 閱讀 8831

為此特意將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 元素。除了...