1

クライアント側で Media Foundation を使用して、RTSP サーバーを介して AXIS カメラからのライブ mpeg4 ストリームを表示しています。

クライアント側のビデオは、GOV @ camera = 1 に設定すると、非常にうまく機能します。つまり、カメラは I フレームのみを送信します。しかし、GOV が増加し、カメラが P フレームも送信し始めると、私のビデオは定期的に突然歪んでしまいます。大量の帯域幅を消費するため、GOV = 1 を常に設定することはできません。

以下は、Media Foundation にサンプルを提供する RequestSample メソッドのコードです。

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 フレームを処理するために属性を設定する必要がありますか??

どんな助けでも大歓迎です....

更新 (2012/02/22) :

いくつかの統計を実行したところ、I フレームがクライアントに到達しない場合があることがわかりました。つまり、GOV = 15 と仮定すると、15 番目のフレームごとに I フレームになるはずですが、(不規則な間隔で) 28 または 30 の後にクライアントが I フレームを受信することがあります。または 59 個の P フレーム。

ポインタはありますか??

ありがとう、

プラテック

4

0 に答える 0