#include
#include
#include
#include
#include
#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);
// 這裏是釋放內存,但我測試的時候會有問題,還沒仔細研究是爲何
// free(media_tracks); // crash?
// 把打開的媒體文件設置給播放器
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;
}