如何处理Microsoft directshow MPEG1解码器的RTP数据

时间:2014-06-04 16:31:11

标签: directshow rtp mpeg decoder

videoprocessing project开始,我尝试构建一个连接到RTSP服务器的directshow过滤器,成为Windows MPEG1解码器的源过滤器(我不能使用其他格式或解码器将WinCE作为操作系统靶)。

我的过滤器声明MediaType

  • MEDIATYPE_Video 类型
  • FORMAT_MPEGVideo 子类型
  • MEDIASUBTYPE_MPEG1Payload formatType

目前,当我将rtspSource过滤器与 CLSID_CMpegVideoCodec 解码器连接时,我正在呈现黑色视频。

但是,如果我用LAVFilters项目提供的 CLSID_LAV_VideoDecoderFilter 替换Windows解码器,则会正确呈现视频。

在阅读" How to process raw UDP packets so that they can be decoded by a decoder filter in a directshow source filter",处理H264和MPEG-4的相同问题后,我还阅读了RFC2250,然后我将数据解包,但结果是一样的。

目前,我发送到以Video Stream Start Code

开头的解码器数据包

000001 00 图片

或以

开头的整数数据包

000001 B3 序列标题

并且其中包含startCode

000001 B2 用户数据

000001 B8 图片组

000001 00 图片

000001 01 切片

仍然参考上一个处理H264和MPEG-4案例的链接,谈论" 解码器的处理数据"但在同意格式类型MEDIASUBTYPE_MPEG1Payload后,我不清楚CLSID_CMpegVideoCodec过滤器的预期结果。 但是,在每个样本的开头添加三个字节 000001 或4个字节 00000100 ,视频将以大约每2秒更新的图像进行渲染并丢失中间图像。

我通过设置IMediaSample

来执行测试
SetTime(NULL, NULL)

该设置

SetTime(start, start+1)

with:

start = (rtp_timestamp - rtp_timestamp_first_packet) + 300ms 

回答" Writing custom DirectShow RTSP/RTP Source push filter - timestamping data coming from live sources"

但结果不会改变。

任何建议都将不胜感激。

提前致谢。

0 个答案:

没有答案
相关问题