Media Foundation:当GOV长度大于1时,来自摄像头的mpeg4流会失真

时间:2012-02-21 06:03:27

标签: rtsp ms-media-foundation

我在客户端使用Media Foundation通过RTSP服务器显示来自AXIS Camera的实时mpeg4流。

如果设置GOV @ camera = 1,则客户端视频工作正常,即摄像机仅发送I帧。但是如果GOV增加并且相机也开始发送P帧,我的视频会突然变得有规律地扭曲。我不能总是设置GOV = 1,因为它消耗了大量的带宽。

以下是RequestSample方法的代码,其中我向Media Foundation提供样本:

RTPFrame frame = null;
byte[] frameBytes = null;

frame = _VideoJitter.GetNextFrame();
frameBytes = frame.GetFrameAsBytes();
frame.FrameType= RTPFrame.PredictFrameType(frameBytes);

_videoEncapsulatedSample.ReadSampleFrom(frameBytes);
videoSample = _videoEncapsulatedSample.MfSample;

long timestamp = nextSampleTimestamp ?? 0;   

videoSample.SetSampleTime(timestamp);
duration_video = (long)GetPresentationTime(frame);

videoSample.SetSampleDuration(duration_video);
nextSampleTimestamp = timestamp + duration_video;

if (frame.FrameType == FrameType.IFrame)
{
videoSample.SetUINT32(MFAttributesClsid.MFSampleExtension_CleanPoint, 1);
}

return videoSample;

我是否需要设置处理P-Frames的任何属性?

任何帮助都将受到高度赞赏....

更新(2012/02/22):

我运行了一些统计数据,发现有时I帧从未到达客户端,即假设GOV = 15,所以每15帧应该是I帧,但有时(不规则间隔)客户端收到I帧后28或30或59个P帧。

任何指针??

谢谢,

Prateek

0 个答案:

没有答案