1

C# でオーディオ ファイルの長さを取得しようとしています。次のコードをローカル マシンで動作させましたが、それを Windows Server 2008 ボックスに展開すると、.avi および .wav ファイルに対して常に 0 のデュレーションが返されます。

WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia(filePath);
    return mediaInfo.durationString

サーバーにWindows Media Player 11がインストールされています。

どんな助けでも大歓迎です

4

3 に答える 3

2

期間情報を取得するには、最初にメディアファイルを開く必要があります。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd564790(v=vs.85).aspx#Y656

ユーザーのライブラリにないファイルの期間を取得するには、WindowsMediaPlayerがファイルを開くのを待つ必要があります。つまり、現在のOpenStateはMediaOpenと等しくなければなりません。これを確認するには、 AxWindowsMediaPlayer._WMPOCXEvents_OpenStateChangeイベントを処理するか、AxWindowsMediaPlayer.openStateの値を定期的にチェックします。

リンクには、C#のサンプルコードも含まれています。

ビデオを再生したくない場合は、IWMPMediaクラスを使用できます。

http://johndyer.name/post/Retreiving-the-duration-of-a-WMV-in-C.aspx

于 2011-10-08T16:30:52.057 に答える
2

「WindowsMediaPlayerClass」の経験はありませんが、TagLibSharp を広範囲に使用してきました。これは、私がそのようなことに使用しようとしているものです。これは、かなり幅広い形式のセットをサポートしており、組み込みの API よりもはるかに使いやすくなっています。 .NET でのサポート

http://developer.novell.com/wiki/index.php/TagLib_Sharp

おそらく、TagLibSharp を使用するだけで問題が解決します。

(taglibsharp は banshee プロジェクトによって維持されていますが、明らかに歴史的な理由から @novell でホストされていることに注意してください。詳細についてはわかりませんが、開発者への連絡が少し混乱する可能性があります)

于 2009-08-20T11:25:38.147 に答える
1

私の推測では、メディア プレーヤーはインストールされていません (サーバー SKU には既定でインストールされていません)。

デスクトップ エクスペリエンス パッケージをインストールしてみましたか?

于 2009-08-22T01:27:11.227 に答える