C#で動画ファイルの解像度やフレームレートなどを取得する【ffmpeg|ffprobe】

御厩橋雷雨 コンピュータ
出典:国立国会図書館「NDLイメージバンク」 (https://rnavi.ndl.go.jp/imagebank/)
動画ファイルを扱う場合、解像度などの情報が欲しいことがあります。
Nugetでffprobeと検索したところ、使えそうなパッケージがあったので試してみます。

dotnetバージョン

 dotnet --version
6.0.301

プロジェクトの作成

dotnet new winforms -n MovieInfo
cd MovieInfo
dotnet add package FFMpegCore
code .

プログラムソース

ファイル名:Form1.cs

namespace MovieInfo;

using FFMpegCore;

public partial class Form1 : Form
{
    TextBox textBox1 = new TextBox
    {
        Dock = DockStyle.Fill,
        Multiline = true,
    };
    public Form1()
    {
        InitializeComponent();

        const string inputPath = @"C:\Users\karet\Videos\sample.mov";

        var mediaInfo = FFProbe.Analyse(inputPath);

        this.Controls.Add(textBox1);

        var text = string.Format("Format: {0}\r\n", mediaInfo.Format.FormatLongName);
        if (mediaInfo.PrimaryVideoStream != null)
        {
            text += string.Format("VideoCodec: {0}\r\n", mediaInfo.PrimaryVideoStream.CodecName);
            text += string.Format("Duration: {0}\r\n", mediaInfo.PrimaryVideoStream.Duration);
            text += string.Format("Width: {0}\r\n", mediaInfo.PrimaryVideoStream.Width);
            text += string.Format("Height: {0}\r\n", mediaInfo.PrimaryVideoStream.Height);
            text += string.Format("BitRate: {0}\r\n", mediaInfo.PrimaryVideoStream.BitRate);
            text += string.Format("FrameRate: {0}\r\n", mediaInfo.PrimaryVideoStream.FrameRate);
            text += string.Format("DisplayAspectRatio: {0}\r\n", mediaInfo.PrimaryVideoStream.DisplayAspectRatio);
            text += string.Format("Language: {0}\r\n", mediaInfo.PrimaryVideoStream.Language);
            text += string.Format("Profile: {0}\r\n", mediaInfo.PrimaryVideoStream.Profile);
            text += string.Format("Rotation: {0}\r\n", mediaInfo.PrimaryVideoStream.Rotation);
            text += string.Format("Index: {0}\r\n", mediaInfo.PrimaryVideoStream.Index);
        }
        if (mediaInfo.PrimaryAudioStream != null)
        {
            text += string.Format("AudioCodec: {0}\r\n", mediaInfo.PrimaryAudioStream.CodecName);
        }



        textBox1.Text = text;
    }
}

実行例

対象動画のプロパティ

サンプルプログラムの実行結果


ビデオの長さ、フレーム幅、フレーム高、ビットレート、フレームレートなどが取得できました。

コメント