C#のFormアプリで動画再生の速度を制御

Windows Media Playerを使う。

Windows Media PlayerのCOMコンポーネントを追加

ソース

using System;
using System.Windows.Forms;

namespace MoviePlayer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // フォームいっぱいに表示
            axWindowsMediaPlayer1.Dock = DockStyle.Fill;

            // 再生速度 0.1倍~2倍
            trackBar1.Minimum = 1;
            trackBar1.Maximum = 20;
            trackBar1.Value = 10;
            trackBar1.TickFrequency = 1;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = @"C:\temp\test.mp4"; // 再生する動画
            axWindowsMediaPlayer1.settings.autoStart = true; // 自動再生
            axWindowsMediaPlayer1.uiMode = "none";           // UI(ボタン等)を非表示

            // アスペクト比を無視して引き伸ばし (効かない場合あり)
            // axWindowsMediaPlayer1.stretchToFit = true;
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            // 再生速度の変更
            double speed = trackBar1.Value / 10.0;
            axWindowsMediaPlayer1.settings.rate = speed;
        }
    }
}

再生位置の取得と設定

    double pos_sec = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
    string pos_str = axWindowsMediaPlayer1.Ctlcontrols.currentPositionString;
    Console.WriteLine($"position = {pos_sec}, {pos_str}");
    axWindowsMediaPlayer1.Ctlcontrols.currentPosition = pos_sec;