1、下载libVLC的sdk
Index of /pub/videolan/vlc/
注意下载.7z结尾的
2、Visual Studio建立C++的windows控制台项目
3、文件准备
(1)sdk文件夹解压缩到项目文件夹下
(2)在Debug下方压缩包内的几个文件
、
4、配置项目属性
注意,别的教程有坑:libvlc.lib、libvlccore.lib
5、写代码
#include <windows.h>
#include <vlc/vlc.h>
#include <time.h>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, "f:\\dljwjt.mp4");if (vlc_media != NULL){// 解析媒体实例libvlc_media_parse(vlc_media);// 获取媒体文件的播放长度, 返回 mslibvlc_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 + 200))){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;
}
6、提示:
(1)播放的文件名,自己修改
(2)这个程序是命令行程序,视频显示用桌面句柄