動画ファイルを扱う場合、解像度などの情報が欲しいことがあります。
Nugetでffprobeと検索したところ、使えそうなパッケージがあったので試してみます。
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;
}
}
実行例
対象動画のプロパティ
サンプルプログラムの実行結果
ビデオの長さ、フレーム幅、フレーム高、ビットレート、フレームレートなどが取得できました。
サンプルプログラムの実行結果
ビデオの長さ、フレーム幅、フレーム高、ビットレート、フレームレートなどが取得できました。
コメント