MFC中使用vlc库制作播放器问题 刚开始用vlc头很大,求大神相助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 libvlc_media_player_set_hwnd((libvlc_media_player_t *)libvlc_media_player_, handle); 蛋疼 , 我用vlc库版本太低 才会出现这个问题,后面使用了vlc 2.05 就没这个问题了 用libvlc_media_player_set_hwnd((libvlc_media_player_t *)libvlc_media_player_, handle);函数,填入句柄就会用对应的窗口 给你我的代码看int player(void){ libvlc_instance_t * vlc_ins = NULL; libvlc_media_player_t * vlc_player = NULL; libvlc_media_t * vlc_media = NULL; int width = SetWidthFromConfig(); int height = SetHeightFromConfig(); //char szTitle[]="系统信息"; //char szWindowClass[]="popMsg"; MSG msg; char url[50] = {0}; char str[25]; char SetCache[50] = {0}; sprintf(url,"udp://@:%s", itoa(RecvPortFromConfig(), str, 10)); memset(str, 0, sizeof(str)); sprintf(SetCache,"udp-caching=%s", itoa(VlcCacheFromConfig(), str, 10)); 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, "./test.ts"); vlc_media = libvlc_media_new_path(vlc_ins, url); 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_add_option(vlc_media, SetCache); //libvlc_media_add_option(vlc_media, ":file-caching=5000"); //libvlc_media_add_option(vlc_media, ":network-caching=5000"); //libvlc_media_add_option(vlc_media, ":codec=mediacodec,iomx,all"); // 把打开的媒体文件设置给播放器 libvlc_media_player_set_media(vlc_player, vlc_media); // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口 //libvlc_media_player_set_hwnd(vlc_player, MyWindow(width, height)); // 开始播放视频 libvlc_media_player_play(vlc_player); while (GetMessage(&msg, NULL, 0, 0)) // 消息循环: { TranslateMessage(&msg); //转化虚拟按键到字符消息 DispatchMessage(&msg); //分派消息调用回调函数 } // 停止 libvlc_media_player_stop(vlc_player); // 释放 libvlc_media_release(vlc_media); } // 释放 libvlc_media_player_release(vlc_player); } // 释放 libvlc_release(vlc_ins); } //getchar(); return 0;} C++的异常处理究竟有什么用?调用API函数时用if else判断一下返回值不是一样可以防错吗? 关于创建一个DLL问题 CEdit控件问题!!! 关于内存泄漏的迷惑 关于视频识别 关于一个绘制图形的问题 我要知道一个窗口是否有WS_VISIBLE属性,我用GetWindowLong,可是得出的是一个long值,我还应该怎么进一步去判断? 请问VC++下如何打包发行程序,制作安装软件? 求教字符串转换问题 如何加载其它的非关联应用程序? VC Tab控件 状态栏不显示菜单提示信息的问题
int player(void)
{ libvlc_instance_t * vlc_ins = NULL;
libvlc_media_player_t * vlc_player = NULL;
libvlc_media_t * vlc_media = NULL; int width = SetWidthFromConfig();
int height = SetHeightFromConfig(); //char szTitle[]="系统信息";
//char szWindowClass[]="popMsg";
MSG msg;
char url[50] = {0};
char str[25];
char SetCache[50] = {0}; sprintf(url,"udp://@:%s", itoa(RecvPortFromConfig(), str, 10));
memset(str, 0, sizeof(str));
sprintf(SetCache,"udp-caching=%s", itoa(VlcCacheFromConfig(), str, 10)); 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, "./test.ts");
vlc_media = libvlc_media_new_path(vlc_ins, url);
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_add_option(vlc_media, SetCache); //libvlc_media_add_option(vlc_media, ":file-caching=5000");
//libvlc_media_add_option(vlc_media, ":network-caching=5000");
//libvlc_media_add_option(vlc_media, ":codec=mediacodec,iomx,all");
// 把打开的媒体文件设置给播放器
libvlc_media_player_set_media(vlc_player, vlc_media); // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口
//libvlc_media_player_set_hwnd(vlc_player, MyWindow(width, height)); // 开始播放视频
libvlc_media_player_play(vlc_player);
while (GetMessage(&msg, NULL, 0, 0)) // 消息循环:
{
TranslateMessage(&msg); //转化虚拟按键到字符消息
DispatchMessage(&msg); //分派消息调用回调函数
}
// 停止
libvlc_media_player_stop(vlc_player);
// 释放
libvlc_media_release(vlc_media);
}
// 释放
libvlc_media_player_release(vlc_player);
}
// 释放
libvlc_release(vlc_ins);
} //getchar();
return 0;
}