VLC二次开发无法进入视频回调函数[在线等,求大神回复]

kbdmg 2014-08-28 04:07:39
VLC版本为2.1.5,利用LIBVLC进行二次开发。设置了视频回调,VS2010调试的时候一直进不了回调函数(fVlcDecoderUnLockCB,fVlcDecoderUnLockCB,fVlcDecoderDisplayCB函数内均有打断点,但一个断点都没触发,程序也没报错):哪位大神能指点一下,部分代码如下:

//设置视频回调部分
libvlc_video_set_format_callbacks(m_plibvlc_media_player,fVlcDecoderFrameCB,NULL);
libvlc_video_set_callbacks(m_plibvlc_media_player,fVlcDecoderLockCB,fVlcDecoderUnLockCB,fVlcDecoderDisplayCB,this);

//回调处理部分
unsigned vlcdecoder::fVlcDecoderFrameCB(void **opaque, char *chroma,unsigned *width, unsigned *height,unsigned *pitches,unsigned *lines)
{
vlcdecoder* stream;
stream = (vlcdecoder*)*opaque;
stream->iVideoWidth_ = *width;
stream->iVideoWidth_ = *height;
return 0;
}

void vlcdecoder::fVlcDecoderUnLockCB(void *opaque, void *picture,void *const *planes)
{
//code
...
}

void vlcdecoder::fVlcDecoderDisplayCB(void *opaque, void *picture)
{
//code
..
}

void *vlcdecoder::fVlcDecoderLockCB(void *opaque, void **planes)
{
//code
....
}

...全文
1034 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
光松 2015-05-09
  • 打赏
  • 举报
回复
要使用静态函数,不加加类名在前面如void vlcdecoder::,加了回调函数不认识。
  • 打赏
  • 举报
回复
楼主,请问问题解决了没?我也遇到了同样的问题。如果解决了,希望能把vlc设置回调,和回调函数的实现发一份给我,邮箱: 312524597@qq.com,谢谢了。
银霜覆秋枫 2015-03-02
  • 打赏
  • 举报
回复
请教下楼主,我现在在设置回调函数是总是提示libvlc_video_set_callbacks;libvlc_video_set_format;未定义,请问下是什么原因~
Darren达伦 2014-12-01
  • 打赏
  • 举报
回复
我也进去锁回调函数,但是帧也不更新。。。
kbdmg 2014-08-29
  • 打赏
  • 举报
回复
我现在就想通过VLC解码出YUV的数据,然后自己做显示,有没有大神给点建设性的建议?顺便 请教一下,是不是VLC有些视频不能输出YUV的解码性回调,还是说需要在libvc_new创建libvlc_instance的时候去指定输出格式?
x6wang 2014-08-29
  • 打赏
  • 举报
回复
往前进了一大步。
x6wang 2014-08-29
  • 打赏
  • 举报
回复
怀疑这个版上有没有啥大神
kbdmg 2014-08-28
  • 打赏
  • 举报
回复
蛋疼,现在发现回调不能进的原因似乎是因为libvlc_video_set_format_callbacks(m_plibvlc_media_player,fVlcDecoderFrameCB,NULL); 这句设置回调代码的问题,于是将这句改成 libvlc_video_set_format(m_plibvlc_media_player,"I420",1280,720,1280 << 2); 这样之后视频回调是进去了,但是继续衍生出以下两个问题: 1.尝试在libvlc_video_set_format_callbacks这个回调函数里面调用libvlc_video_set_format这个函数设置解码格式,但是设置完之后解码回调进不了。 2.libvlc_video_set_format回调尝试使用了"I420","YUVV","RGBA"这三种格式,只有I420和RGBA能进解码回调。我在视频解码的锁回调中有如下代码,设置LIBVLC解码BUFF输出的空间: void *vlcdecoder::fVlcDecoderLockCB(void *opaque, void **planes) { vlcdecoder* stream; stream = (vlcdecoder*)opaque; if(NULL != stream->yuvframebuf_) *planes = stream->yuvframebuf_; return NULL; } 函数也确实进了这里,stream->yuvframebuf_是一个10M空间的内存地址,播放的视频宽高为704,560,但是发现stream->yuvframebuf_,这个值一直没有被修改。 请大神们给出出主意啊。
x6wang 2014-08-28
  • 打赏
  • 举报
回复
这个论坛很不旺啊,帖子更新太慢了
kbdmg 2014-08-28
  • 打赏
  • 举报
回复
哪位大神给个确认OK的参考代码链接什么的也行啊
kbdmg 2014-08-28
  • 打赏
  • 举报
回复
3L你好,我现在做的是单路的
x6wang 2014-08-28
  • 打赏
  • 举报
回复
你的是单路视频还是多路视频?
x6wang 2014-08-28
  • 打赏
  • 举报
回复
出现类似问题。在线等答复看看有没有启发。我的是media foundation异步读取IMFSample, 在readsample()后跳不到onreadsample()。
kbdmg 2014-08-28
  • 打赏
  • 举报
回复
参照了网上挺多的例子都进不了回调函数,哪位大神给说一下,什么地方要注意啊。
本季课程通过移植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调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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