シンプルなビデオプレーヤーを実装しました。その中には、特に MediaElement と Slider があります。とにかく、スライダーを右端までスライドさせて MediaElement.Position をビデオの最後に設定すると、ビデオはビデオの最後のフレームでフリーズし、一時停止/再生コマンドに応答しません。別のビデオを MediaElement にロードします。
ビデオの最後から少なくとも 20 ミリ秒の位置の値のみを変更する小さなハックを入れたところ、問題は解決しました。
if ( _mediaElement.HasVideo &&
_mediaElement.NaturalDuration.HasTimeSpan &&
(_mediaElement.NaturalDuration.TimeSpan.TotalMilliseconds - e.NewValue) > 20)
{
_mediaElement.Position = new TimeSpan(0, 0, 0, 0, (int) e.NewValue);
}
私が理解できないのは、ビデオが最後のフレームでフリーズするのはなぜですか? これは MediaElement コントロールのバグですか、それともこの問題を回避する他の方法はありますか?
同じ問題のように見えるものを説明している 3 年前の投稿を見つけました。その解決策は、更新された nVidia ドライバーでした。最新の nVidia ドライバーを使用していますが、まだこの問題が発生しています。上記のハックは機能すると思いますが、ビデオがそのようにロックされるのはちょっと奇妙に思えます。