1

すべての単一フレームを必要としないため、mp4ファイルをリアルタイムより高速に抽出および分析しようとしています。UWPでのmp4ファイルからの高速フレーム抽出

私は、次の試してみました:任意の処理の前に1fpsについて私に与えた

composition.GetThumbnailAsync(TimeSpan.FromSeconds(i),160,90,VideoFramePrecision.NearestKeyFrame); 

mediaPlayer.PlaybackSession.PlaybackRate = x; 

ここで、xは動画ごとに異なっています。 x = 2までスムーズに60fpsの再生を再生する場合もあれば、1fpsになる場合もあります。それぞれが実際に(そう良くも悪くもファイルに依存)に行われた後、すべての次のフレームが到着したが、それはまだ無駄にされていることを確認しますmediaPlayer_VideoFrameAvailable

mediaPlayer.StepForwardOneFrame();mediaPlayer.IsVideoFrameServerEnabled = true; を設定

最良の結果は MediaPlayerのと一緒にいました私は各フレームを取得しているので、リソースは> 5フレームごとに必要です。

私はそれがすべてキーフレームまたは "I"フレームに関連していると思いますが、それらを取得する方法はないと思います。

一度にnフレームをスキップしながらフレームを高速化する方法はありますか?

答えて

1

すべてのn番目のフレームを取得する効率的な方法はありません。位置をn番目のフレームごとに設定できますが、シークアルゴリズムは最も近い直前のキーフレームを検索し、そこからデコードします。このため、位置を設定することにより、より多くのフレームをデコードすることができます。だから、フレームごとにフレームごとにデコードする時間を節約することができます。 MediaPlayerを使用してキーフレームを検索する簡単な方法はありません。キーフレームの距離を取得するには、h.264ファイルを解析する必要があります。次に、このリズムに位置を設定できます。

関連する問題