vlc 内存错误 懂vlc的进
bytxl 2011-03-31 10:48:14 问题描述:使用vlc获取IP摄像头图像。当只从一路摄像头获取图像时,没有任何问题,但是从4路左右同时获取摄像头图像时,在“初始化参数,创建media,创建player最后设置回调函数和图像格式”的过程有可能出内存错误。注意是有可能,不是一定出错。错误如下所示:
---------------------------------------------------------
test.exe中的0x05b7b329处未处理的异常:0xC0000005:写入位置0x00000004时发生访问冲突。
---------------------------------------------------------
同时我可以保证我的程序没有数组超边界等之类的错误。
请熟悉vlc的高手回答,代码片段如下:
//创建媒体和播放器
//初始化
libvlc_instance_t *vlcInstance;
char const *vlc_argv[] =
{
"--no-audio", /* 不用音频 */
"--no-xlib", /* 不用Xlib */
"--rtsp-caching=100", //延时,单位毫秒
"--sout-smem-time-sync" //解码与播放是否同步???
//"--sout=#duplicate{dst=display,dst=std{access=file,mux=mpeg1,dst=E:\\4444.avi}}"
};
int vlc_argc = sizeof(vlc_argv) / sizeof(*vlc_argv);
vlcInstance=libvlc_new(vlc_argc, vlc_argv);
//TRACE("---------------------------------------------------------------------libvlc_media_new_path前\n");
libvlc_media_t *media = libvlc_media_new_path(vlcInstance,path); //return the newly created media or NULL on error
//TRACE("---------------------------------------------------------------------libvlc_media_new_path后\n");
libvlc_release(vlcInstance);
//TRACE("---------------------------------------------------------------------libvlc_media_player_new_from_media前\n");
m_mediaPlayer = libvlc_media_player_new_from_media(media); //return a new media player object, or NULL on error
libvlc_media_release(media);
//TRACE("---------------------------------------------------------------------libvlc_media_player_play前\n");
if (libvlc_media_player_play(m_mediaPlayer) == -1)//return 0 if playback started (and was already started), or -1 on error
return false;
//设置回调函数
libvlc_video_set_callbacks(m_mediaPlayer,lock,unlock,display,this);
libvlc_video_set_format(m_mediaPlayer, "RV32", ORIGIN_VIDEO_WIDTH, ORIGIN_VIDEO_HEIGHT, ORIGIN_VIDEO_WIDTH*4);