从videoprocessing project开始,我尝试构建一个连接到RTSP服务器的directshow过滤器,成为Windows MPEG1解码器的源过滤器(我不能使用其他格式或解码器将WinCE作为操作系统靶)。
我的过滤器声明MediaType
目前,当我将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"
但结果不会改变。
任何建议都将不胜感激。
提前致谢。