VLC屬於Video LAN開源項目組織中的一款全開源的流媒體服務器和多媒體播放器。做爲流媒體服務器,VLC跨平臺,支持多操做系統和計算機體系結構;做爲多媒體播放器,VLC能夠播放多種格式的媒體文件。主要包括有:WMV、ASF、MPG、MP、AVI、H.264等多種常見媒體格式。windows
VLC採用全模塊化結構,在系統內部,經過動態的載入所需的模塊,放入一個module_bank的結構體中統一管理,連VLC的Main模塊也是經過插件的方式動態載入的(經過module_InitBank函數在初始化創建module_bank時)。對於不支持動態載入插件的系統環境中,VLC也能夠採用builtin的方式,在VLC啓動的時候靜態載入所須要的插件,並放入module_bank統一管理。服務器
VLC官網:ide
一、安裝所須要的開發庫文件(SDK)函數
二、相關文檔測試
https://wiki.videolan.org/Documentation:Documentation/ui
一個簡單的例子:spa
#pragma comment(lib, "libvlc.lib")
#pragma comment(lib, "libvlccore.lib")操作系統
int main(int argc, char* argv[])
{
libvlc_instance_t * vlc_ins = NULL;
libvlc_media_player_t * vlc_player = NULL;
libvlc_media_t * vlc_media = NULL;插件
const char * vlc_args[] =
{
"-I",
"dummy",
"--ignore-config",
"--extraintf=logger",
"--verbose=2",
};
// 建立一個VLC實例
vlc_ins = libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);
if(vlc_ins != NULL)
{
// 建立一個VLC播放器
vlc_player = libvlc_media_player_new(vlc_ins);
if(vlc_player != NULL)
{
// 經過文件路徑建立一個媒體實例,這裏是個人測試文件
vlc_media = libvlc_media_new_path(vlc_ins, "d:\\clips\\org.mp4");
if(vlc_media != NULL)
{
// 解析媒體實例
libvlc_media_parse(vlc_media);
// 獲取媒體文件的播放長度, 返回 ms
libvlc_time_t duration = libvlc_media_get_duration(vlc_media);
// 此處是獲取媒體包含多個的視頻和音頻軌以及其餘類型的軌道信息
libvlc_media_track_info_t *media_tracks = NULL;
int trackCount = libvlc_media_get_tracks_info(vlc_media, &media_tracks);
// 此處獲取信息...
// 釋放內存
libvlc_media_tracks_release(&media_tracks, trackCount);
// 把打開的媒體文件設置給播放器
libvlc_media_player_set_media(vlc_player, vlc_media);
// 由於是windows系統,因此須要設置一個HWND給播放器做爲窗口,這裏就直接使用桌面窗口,這裏僅是測試
libvlc_media_player_set_hwnd(vlc_player, ::GetDesktopWindow());
// 開始播放視頻
libvlc_media_player_play(vlc_player);
// 這裏僅是爲了打印一些信息出來,20秒後退出
time_t last_time = time(NULL);
while((time(NULL) < (last_time + 20)))
{
Sleep(10);
// 獲取當前播放位置
libvlc_time_t play_time = libvlc_media_player_get_time(vlc_player);
printf("playing time : %lld ms\r", (__int64)(play_time));
// 獲取媒體的狀態 // libvlc_state_t media_state = libvlc_media_get_state(vlc_media); // printf("\nmedia state : %d\n", (int)(media_state)); } // 中止 libvlc_media_player_stop(vlc_player); // 釋放 libvlc_media_release(vlc_media); } // 釋放 libvlc_media_player_release(vlc_player); } // 釋放 libvlc_release(vlc_ins); } return 0; }