1

C# でビデオ ファイルの長さを取得したい。ビデオファイルの長さを取得する必要がありますが、コードはローカルコンピューターでのみ機能します。コードをサーバーにデプロイしてビデオ ファイルをアップロードすると、このコードでエラーが発生します。次のコードを使用してビデオ時間を取得しています。

QuartzTypeLib を使用します。

 string file1 = "c://ds.mpeg"
        IMediaPosition m_objMediaPosition = null;
        FilgraphManager m_objFilterGraph = new FilgraphManager();
        m_objFilterGraph.RenderFile(filename);
        m_objMediaPosition = m_objFilterGraph as IMediaPosition;

        int s = (int)m_objMediaPosition.Duration;
        int h = s / 3600;
        int m = (s - (h * 3600)) / 60;
        s = s - (h * 3600 + m * 60);

        string time = String.Format("{0:D2}:{1:D2}:{2:D2}", h, m, s);
        lblmsg.Text = time.ToString();
        m_objMediaPosition = null;
        m_objFilterGraph = null;

アップロードされたビデオ ファイルの継続時間を返すコードがあれば教えてください。

4

4 に答える 4

3

ffmpeg を使用した手っ取り早い方法: ffmpeg -i "c:\ds.mpeg" を実行し、出力を解析します。

于 2009-12-08T09:52:39.640 に答える
2

DirectShowLib を使用してみてください

于 2009-12-07T20:59:19.757 に答える
0

少し異なる方法でビデオの長さを取得しようとしました。
実際に Windows Media Player コンポーネントを使用して、ビデオの長さを取得することもできます。
次のコード スニペットが役立つ場合があります。

using WMPLib;
// ...your code here...

var player = new WindowsMediaPlayer();
var clip = player.newMedia(filePath);
Console.WriteLine(TimeSpan.FromSeconds(clip.duration));

フォルダーwmp.dllに存在する参照を追加することを忘れないでください。System32

于 2016-09-02T01:15:18.220 に答える
0

使用しているコントロールが、この機能を実行するために何らかの方法でグラフィックス ハードウェアを参照しようとしているようです。つまり、UI を使用してこの情報を列挙できるようにします。

おそらく、WPF のMediaElement コントロールを見ることができますか?

于 2009-08-27T21:47:53.687 に答える