在DirectShow中如何得到压缩后的包 ?

shenjing 2003-10-10 11:40:22
在DsPack的VideoCap示例中,我添加了三个Filter, 一个是compressor(H.261 Video Codec)filter, 一个是sample filter, 另一个是null render filter.

我能通过RenderStream()函数来压缩AVI文件 (实际上我不需要它, 我想得到压缩后的包sample在事件TsampleGrabber.OnBuffer中,并将它发送到Internet).

代码如下:

if VideoSourceFilter.FilterGraph <> nil then
RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter, VideoCompressor as IBaseFilter, multiplexer as IBaseFilter);

它能够够很好地压缩成文件, 但我需要压缩后的sample, 于是修改成:

RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,
VideoCompressor as IBaseFilter, multiplexer as IBaseFilter);

RenderStream(nil, nil, multiplexer as IBaseFilter,
VideoSample as IBaseFilter, VideoNullRender as IBaseFilter);

这时我不能得到压缩的sample ,仍然是未被压缩的,我再次修改为:

RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,
nil, VideoCompressor as IBaseFilter);

RenderStream(nil, nil, VideoCompressor as IBaseFilter,
VideoSample as IBaseFilter, VideoNullRender as IBaseFilter);

仍然不成功,我感到非常迷惑.

哪位可以给我一点思路吗?

谢谢!


...全文
48 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdp05 2003-10-11
  • 打赏
  • 举报
回复
怎样用c++Builder结合directshow开发视频程序呢?
我原来编译出现找不到库文件的错误
后来用bcb的coff2omf解决了这个问题
但是出现以下链接错误
LinkError unresolved external '_MEDIATYPE_Video'......
请问怎么办呀?
剧困惑:(
你用的delphi是怎么设置的,多谢帮忙啦!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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