MediaElementを使う。
【参照】 C#のFormアプリで動画再生の速度を制御 - 滴了庵日録
MainWindow.xaml
<Window x:Class="MoviePlayer2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Video Speed Control" Height="350" Width="525"> <Grid> <MediaElement x:Name="mediaElement" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" LoadedBehavior="Manual" /> <Slider x:Name="speedSlider" Minimum="0.1" Maximum="2.0" Value="1.0" TickFrequency="0.1" IsSnapToTickEnabled="True" VerticalAlignment="Bottom" Margin="10" ValueChanged="SpeedSlider_ValueChanged" /> </Grid> </Window>
MainWindow.xaml
using System; using System.Windows; namespace MoviePlayer2 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); mediaElement.Source = new Uri(@"C:\temp\test.mp4", UriKind.Relative); mediaElement.Play(); } private void SpeedSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { if (mediaElement != null) { mediaElement.SpeedRatio = speedSlider.Value; } } } }
再生位置の取得と設定
double pos_sec = mediaElement.Position.TotalSeconds; Console.WriteLine($"position = {pos_sec}");
mediaElement.Position = TimeSpan.FromSeconds(pos_sec);