[WPF]MediaElementで動画のサムネを表示する

2021/07/24

System.Windows.Controls.MediaElement で動画のサムネールをツール上に表示したいなぁと思ったんですが、以下のように単純に MediaElement を配置してみると、即座に動画が再生されてしまいました。

<MediaElement Source="{Binding Path}" />

調べて見ると、LoadedBehavior というプロパティがあり、このプロパティの値に Stop や Pause がありました。しかし、Stop や Pause にすると真っ黒なサムネールになってしまいました。やりたいのは動画の1フレーム目のサムネールを表示することです。

最終的には以下のページでこれに対する解決策を発見しました。

https://stackoverflow.com/questions/17782876/wpf-c-sharp-media-element-show-first-image-of-video

具体的には以下のようなコードにしたらMediaElementを使って1フレーム目のサムネールを表示する事ができました。

.xaml
<MediaElement Source="{Binding Path}" LoadedBehavior="Manual" Loaded="MediaElement_Loaded" />

.xaml.cs
private void MediaElement_Loaded(object sender, RoutedEventArgs e)
{
    var mediaElement = (MediaElement)sender;
    mediaElement.ScrubbingEnabled = true;
    mediaElement.Play();
    mediaElement.Pause();
}

元のページの方では Play の部分を Position プロパティに 0 を表す TimeSpan を設定しても実現できると記載されていますので、そちらでも良いかもしれません(私は試していません)。


  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

関連記事