大家好!我有一个问题:
vlc_ins = libvlc_new(0, NULL);
if (vlc_ins != NULL)
{
vlc_player = libvlc_media_player_new(vlc_ins);//创建一个示例:
if (vlc_player != NULL)
{
vlc_media = libvlc_media_new_path(vlc_ins, media_name);//通过文件路径创建一个媒体实例 if (vlc_media != NULL)
{
libvlc_media_parse(vlc_media);//解析媒体实例
libvlc_media_player_set_hwnd(vlc_player, hwnd);
libvlc_media_track_info_t* media_tracks = NULL;//获取媒体包含多个的视频和音频轨以及其他类型的轨道信息
libvlc_media_player_set_media(vlc_player, vlc_media);// 把打开的媒体文件设置给播放器 libvlc_media_player_play(vlc_player);// 开始播放视频
}
}
}
while (true)
{
Mouse = GetMouseMsg(); // 获取一条鼠标消息
switch (Mouse.uMsg)
{
case WM_LBUTTONDOWN:
//画画代码
break;
}
}
他响应不了while(1)的消息
但是在视屏加载的时候是有效的.
这说明代码没问题.
我简化了一下,
while里只放画画代码,没有鼠标.
同样在加载的时候有效.
加载完毕时播放,直接覆盖,
居然莫名不管while了
求大家解答怎么解决.
补充,hwnd是easyx窗口的句柄.
现在的问题:在视频加载时、视频播放前,可以响应while里面的消息。但是,加载完毕后播放时,无法响应。调试时编译器没有提示。个人猜测可能出在vlc多线程上。
更新::
vlc_ins = libvlc_new(0, NULL);
if (vlc_ins != NULL)
{
vlc_player = libvlc_media_player_new(vlc_ins);//创建一个示例:
if (vlc_player != NULL)
{
vlc_media = libvlc_media_new_path(vlc_ins, media_name);//通过文件路径创建一个媒体实例 if (vlc_media != NULL)
{
libvlc_media_parse(vlc_media);//解析媒体实例
libvlc_media_player_set_hwnd(vlc_player, hwnd);
libvlc_media_track_info_t* media_tracks = NULL;//获取媒体包含多个的视频和音频轨以及其他类型的轨道信息
libvlc_media_player_set_media(vlc_player, vlc_media);// 把打开的媒体文件设置给播放器 libvlc_media_player_play(vlc_player);// 开始播放视频
}
}
}
Sleep(5000);
// 停止
libvlc_media_player_stop(vlc_player);
// 释放
libvlc_media_release(vlc_media);
// 释放
libvlc_media_player_release(vlc_player);
// 释放
libvlc_release(vlc_ins);
while (true)
{
Mouse = GetMouseMsg(); // 获取一条鼠标消息
switch (Mouse.uMsg)
{
case WM_LBUTTONDOWN:
//画画代码
break;
}
}
现在以为有sleep,播放停止前无法响应,播放完sleep结束了、我停止了才可以,sleep是为了延时不让他过早结束,后期我的想法是在while里面加一个计时器,如果媒体长度==计时器秒数,则停止。即可相应。
现在的问题:视屏播放中无法响应while。
(求村长不要再骂我啦>__<)