WPFで動画ファイルを再生するサンプル「イベントの動作確認」

C# コンピュータ
C#

MediaElementはWPFで動画を再生することが出来るコントロールです。
今回は動画を再生した際どのようなイベントが発生するか確認してみます。

サンプルプログラム

ファイル名:MainWindow.xaml

<Window x:Class="MediaElementSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MediaElementSample"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="800">
    <Window.Resources>
        <Style x:Key="ButtonStyle" TargetType="Button">
            <Setter Property="Margin" Value="10"/>
            <Setter Property="Width" Value="100"/>
            <Setter Property="Height" Value="30"/>
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <MediaElement
            Grid.Row="0"
            x:Name="MovieControl"
            LoadedBehavior="Manual"
            UnloadedBehavior="Stop"            
            BufferingEnded="BufferingEndedEvent"            
            BufferingStarted="BufferingStartedEvent"
            MediaOpened="MediaOpenedEvent"
            MediaEnded="MediaEndedEvent"
            MediaFailed="MediaFailedEvent"
            ScriptCommand="ScriptCommandEvent">
        </MediaElement>

        <StackPanel
            Grid.Row="1" 
            Orientation="Horizontal"
            HorizontalAlignment="Center">
            <Button
                x:Name="FileSelectButton"
                Style="{StaticResource ButtonStyle}" 
                Click="FileSelect">
                ファイル選択
            </Button>
            <Button
                x:Name="PlayButton"
                Style="{StaticResource ButtonStyle}" 
                Click="PlayClick">
                再生
            </Button>
            <Button
                x:Name="PauseButton"
                Style="{StaticResource ButtonStyle}" 
                Click="PauseClick">
                一時停止
            </Button>
            <Button
                x:Name="StopButton"
                Style="{StaticResource ButtonStyle}" 
                Click="StopClick">
                停止
            </Button>
        </StackPanel>
    </Grid></Window>

ファイル名:MainWindow.xaml.cs

using System.Diagnostics;
using System.Windows;
using Microsoft.Win32;

namespace MediaElementSample;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    public void FileSelect(object sender, EventArgs e)
    {
        var d =new OpenFileDialog();
        if (d.ShowDialog() == false) return;
        this.Title = d.FileName;
        MovieControl.Source = new Uri(d.FileName);
    }
    public void PlayClick(object sender, EventArgs e)
    {
        if (MovieControl.Source is null) return;
        MovieControl.Play();
    }
    public void PauseClick(object sender, EventArgs e)
    {
        if (MovieControl.Source is null) return;
        MovieControl.Pause();
    }
    public void StopClick(object sender, EventArgs e)
    {
        if (MovieControl.Source is null) return;
        MovieControl.Stop();
    }
    public void BufferingEndedEvent(object sender, EventArgs e)
    {
        Debug.Print("BufferingEnded イベント発生");
    }
    public void BufferingStartedEvent(object sender, EventArgs e)
    {
        Debug.Print("BufferingStarted イベント発生");
    }
    public void MediaOpenedEvent(object sender, EventArgs e)
    {
        Debug.Print("MediaOpened イベント発生");
    }
    public void MediaEndedEvent(object sender, EventArgs e)
    {
        Debug.Print("MediaEnded イベント発生");
    }
    public void MediaFailedEvent(object sender, EventArgs e)
    {
        Debug.Print("MediaFailed イベント発生");
    }
    public void ScriptCommandEvent(object sender, EventArgs e)
    {
        Debug.Print("ScriptCommand イベント発生");
    }
}

「ファイル選択」…なにも発生しない。
「再生ボタン」を押す。…MediaOpened イベント発生
「一時停止ボタン」を押す。…なにも発生しない。
再開の為「再生ボタン」を押す。…なにも発生しない。
「停止ボタン」を押す…なにも発生しない。
動画が最後まで再生された…MediaEnded イベント発生

MediaOpenedは動画の再生が開始された際発生するイベントで、MediaEndedは再生が終了された際発生するようです。
今回のサンプルプログラムでは他のイベントは発生しませんでした。

コメント