mp4 ファイルの長さを、できれば秒単位で取得する必要があります。DirectShow を使用していましたが (以下のコードを参照)、特に役に立たないエラーが発生し続けます。誰かがこれに対する簡単な解決策を持っているかどうか疑問に思っています。(真剣に、その情報を入手するのがとても難しいことを誰が知っていましたか)
public static void getDuration(string moviePath)
{
FilgraphManager m_objFilterGraph = null;
m_objFilterGraph = new FilgraphManager();
m_objFilterGraph.RenderFile(moviePath);
IMediaPosition m_objMediaPosition = null;
m_objMediaPosition = m_objFilterGraph as IMediaPosition;
Console.WriteLine(m_objMediaPosition.Duration);
}
このコードを実行すると、「HRESULT からの例外: 0x80040265」というエラーが表示されます。
私もこれを使ってみました:ビデオの長さを取得 していますが、MP4ファイルでは機能するとは思わないため、どちらも機能しません。
真剣に、これを行うにはもっと簡単な方法が必要だと感じています。
注: exe のような ffmpeg を使用してから、出力を解析して情報を取得することは避けたいと思います。