0

IPカメラからビデオストリームを取得してそのビデオを表示するプログラムを書いています。

ビデオを作成するために、MJPEGストリームを要求し、データを解析し、WPFコントロールでフレームごとに表示します。

自分のプログラムを他のプログラムと比較したところ、フレームレートの表示は同じですが、自分のプログラムでは他のプログラムよりもビデオがスムーズに表示されないことがわかりました。

コントロールの画像を順番に更新して、WPFコントロールにビデオを表示しました。

私のプログラムがスムーズでない理由を誰かに教えてもらえますか?そしてそれを改善する方法。

アップデート:

@LearnedfromMistake:2つのスレッドがあります。スレッド#1は、カメラストリームからのデータを要求、解析し、フレームをキューに追加します。スレッド#2は、キューからフレームを取得して表示します。

これが私の擬似コードです。

Thread #1    
{    
   while(true)    
   {    
      JpegFrame = ReadAFrameFromStream();    
      QUEUE.Append(JpegFrame);
   }    
}

Thread #2    
{    
   while(true)    
   {    
      JpegFrame = QUEUE.GetFrame();    
      WPFControl.UpdateImage(JpegFrame); //Making video here
   }    
}
4

1 に答える 1

1
  • ビデオフレームは通常の時間間隔で撮影されると思われますが、異なる遅延でエンコードされる可能性があり、送信とバッファリングの遅延/ラネティが適用され、最終的に受信レートが規則的ではなくなります。スムーズなフィードを復元するには、これを補正する必要があります。
  • WPFコントロールの再描画のオーバーヘッドは、特殊なマルチメディアAPIを介したプレゼンテーションと比較して大きくなります

最良の方法は、画像がYUVフレームにデコードされ、添付されたタイムスタンプに従って正確に表示されるマルチメディアストリーミングAPIを促進することです。

于 2013-01-26T15:19:15.993 に答える