WPFMediaElementを使用して一連のビデオを再生する単純なビデオプレーヤーがあります。ビデオは一緒に静止画像の周りを移動する1つの連続したフィルムを形成します。各ビデオの終わりに、現在再生中のビデオの最後のフレームで動きがフリーズします。ボタンを押すと、次のビデオが再生され、静止画像の周りを動き続けます。これは私がスピーチをするために使用するアプリケーションです。事実上、各ビデオの最後のフレームが次のビデオの最初のフレームと同じである一連のビデオがあります。
WPF MediaElementを使用していて、ユーザーがマウスをクリックしたときにSourceプロパティを変更しています。
私が抱えている問題は、Sourceプロパティを変更すると、次のビデオがロードされるときにMediaElementが透過的になることです。これは、ビデオ間にちらつきがあることを意味します。このちらつきを防ぐ方法はありますか?他にどのような戦略を使用できますか?
ここにいくつかのコードがあります:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.x_MediaElement.MouseLeftButtonDown += x_MediaElement_MouseLeftButtonDown;
this.MouseLeftButtonDown += MainWindow_MouseLeftButtonDown;
this.WindowStyle = WindowStyle.None;
this.WindowState = WindowState.Maximized;
}
void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MoveNext();
}
private void MoveNext()
{
_sourceIndex++;
if (_sourceIndex >= _sources.Length)
_sourceIndex = 0;
Debug.WriteLine(string.Format("Playing {0}", _sources[_sourceIndex]));
this.x_MediaElement.Source = new Uri(_sources[_sourceIndex]);
this.x_MediaElement.Play();
}
private int _sourceIndex = -1;
private string[] _sources = new string[] {
//SOURCE GO HERE
};
void x_MediaElement_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MoveNext();
e.Handled = true;
}
}