Microsoft.WindowsAPICodePack.Shell.ShellFile
ファイルパスからビデオサイズ(幅と高さ)を取得するために使用しています。
public Size GetVideoSize(string videoFullPath)
{
if (File.Exists(videoFullPath))
{
ShellFile shellFile = ShellFile.FromFilePath(videoFullPath);
int videoWidth = (int)shellFile.Properties.System.Video.FrameWidth.Value;
int videoHeight = (int)shellFile.Properties.System.Video.FrameHeight.Value;
return new Size(videoWidth, videoHeight);
}
return Size.Empty;
}
問題は、このメソッドがm4vファイルの正しいサイズを取得しないことです。何か提案はありますか?実際の幅/高さを取得するために何を使用できますか?
例:実際のサイズが856x480のm4vビデオがあります
- Windowsエクスプローラーでファイルのプロパティを見ると、サイズは720x480(間違っています)です。
- ビデオプレーヤーでビデオを開くと、ビデオの詳細に720x480のサイズが表示されていても、ビデオは正しいサイズでレンダリングされます。
- WPFのMediaElementコントロールにビデオを読み込むと、を介して正しいサイズを取得できます
mediaElement.NaturalVideoWidth, mediaElement.NaturalVideoHeight
が、問題は、WPF参照がないクラスライブラリでサイズを取得する必要があることです。