关于DirectShow获取视频流,解码RGB数据。请求大家帮忙!!!!!!!!!!!!!!!

hazhanggavin 2009-02-13 10:50:55
本人现在参与一个视频处理项目:

就是处理视频播放过程中获取视频数据流,并把数据流解码RGB像素。


现在本人应用实现视频播放能够截取(抓取)单帧图像存储为BMP格式,按照BMP格式解码RGB数据,但是现在不是很理想。
问题是:应用Directshow技术Getcurrimage这个函数,但是这样出现播放过程受影响,间断性停顿;
在获取BMP格式数据后解码占用较多的CPU资源,速度不是很理想。

对于Directshow技术不是了解不是很多,希望在此求助于大家!

希望大家提供指点:
1.如何在Render file 后、在图像显示在屏幕前这个过程中直接获取视频流,而不是使用GetCurrImage方法?

2.在网上搜索大多数是采集显卡之类什么的,我想是在视频播放过程中处理这个工作,是不是可行?

3.如何减少占用CPU资源?

谢谢大家!
...全文
632 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huxiongge 2011-03-29
  • 打赏
  • 举报
回复
完全弄不懂directshow,咋办
c_cacal 2009-02-24
  • 打赏
  • 举报
回复
应该不需要改ffdshow代码
cici2006 2009-02-24
  • 打赏
  • 举报
回复
cash3326 你可以增加一个transfilter在ffdshow后面即可。不需要改ffdshow
sheltonwan 2009-02-24
  • 打赏
  • 举报
回复
不好细说,求人不如求己,还是看看directshow文档比较实在
cash3326 2009-02-23
  • 打赏
  • 举报
回复
你好,我想问个问题,如果我想保存ffdshow解码的视频内容,我是否也可以增加一个filter?

如果可行,需要更改ffdshow的代码还是可以写一个类似插件的filter?

我对DirectShow也不了解,希望大家能帮个忙~

cici2006 2009-02-13
  • 打赏
  • 举报
回复
完全可行。
你可以写一个transfilter
file->spliter->videocoder->you transfilter->video render
你把你的transfilter的INPIN ,OUTPIN都设置只接收或者输入RGB32(其它RGB格式也可以)
这样你的transfilter中的transfrom函数就可以得到INPIN的RGB数据。
当然你在之前要保存一下图像宽高,即可。

2,542

社区成员

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

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