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);
...全文
647 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bytxl 2011-04-11
  • 打赏
  • 举报
回复
Ihatec2s3d4n5大哥,多谢你的关注,我会去试试的。
Ihatec2s3d4n5 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bytxl 的回复:]
引用 6 楼 ihatec2s3d4n5 的回复:
我说的多个版本其实是指多个实例,也就是多路同时采集图像的情形

Ihatec2s3d4n5大哥,确实只在多路同时采集图像的情形下才出现这种情况。而且是运行这段代码创建的时候,如果创建成功了就不会出问题了,请问该怎么解决?
貌似遇到大侠了
[/Quote]

我言过其实了.
我说一下我们是怎么用的.
1. 使用最新的vlc版本.
2. 用一个类来wrap vlc库中的api
3. 每生成一个实例就使用一个单独的线程服务它.
目前为止没碰到过什么问题.
bytxl 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ihatec2s3d4n5 的回复:]
我说的多个版本其实是指多个实例,也就是多路同时采集图像的情形
[/Quote]
Ihatec2s3d4n5大哥,确实只在多路同时采集图像的情形下才出现这种情况。而且是运行这段代码创建的时候,如果创建成功了就不会出问题了,请问该怎么解决?
貌似遇到大侠了
Ihatec2s3d4n5 2011-04-03
  • 打赏
  • 举报
回复
播放出错的问题,如果你需要我可以给你一个wrapper 类, 外加一个支持thread. 我自己用的.用的是最新的1.1.7
Ihatec2s3d4n5 2011-04-03
  • 打赏
  • 举报
回复
我说的多个版本其实是指多个实例,也就是多路同时采集图像的情形
wind2kitef 2011-04-02
  • 打赏
  • 举报
回复
楼上是回答楼主问题,还是俺的?
多个版本并存,这是啥意思?我用的vlc的动态库版本是1.0.0
Ihatec2s3d4n5 2011-04-02
  • 打赏
  • 举报
回复
我想问一下,你是不是保证只在多个版本并存时才出现这个问题,如果是这样,我知道怎么解决
wind2kitef 2011-04-02
  • 打赏
  • 举报
回复
兄弟,问题解决了吗? 我现在也碰到类似的问题,我是只做播放文件,只要连续开始、停止调用多次后,就经常出内存报错。
无水先生 2011-03-31
  • 打赏
  • 举报
回复
内存没申请,或开小了
bytxl 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gongdiwudu 的回复:]
内存没申请,或开小了
[/Quote]
请问在vlc中怎么申请内存或开大内存?
能否把源码贴出来?
本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代口芯片(如TI、安霸)成为主流方案。视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧