2009-08-20 24 views
1

オーディオファイルの再生時間をC#で取得しようとしています。 私のローカルマシンでは以下のコードが動作しますが、Windowsサーバー2008に展開すると、.aviファイルと.wavファイルには常に0が返されます。オーディオファイルの再生時間を取得するC#

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

私はWindows Media Player 11をサーバーにインストールしています。

任意の助けが最も

答えて

2

私は「WindowsMediaPlayerClass」と経験を持っていないと理解されるだろうが、私は、私はそのようなことのために使用しようとするものである広範囲TagLibSharpを、使用している - それはのかなり広範なセットをサポートしています形式とそれはそれはビルトインサポート.NETで恐らく

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

は、単にTagLibSharpを使用すると、あなたの問題を解決することをはるかに使用可能なAPIですなります。

(そのta​​glibsharpはバンシープロジェクトによって維持されているが、どうやら歴史的な理由ノベル@ホストされています。私は詳細を知らないが、それは少し混乱の開発者に連絡することができます)

1

マイメディアプレーヤーがインストールされていないことが推測されます(サーバーSKUではデフォルトではありません)。

デスクトップ体験パッケージをインストールしましたか?

+0

これは、ここにあなたの答えとは全く無関係であるが、私はこの質問へのあなたの注意を引くために期待していました私は数日前に尋ねた:http://stackoverflow.com/questions/1303811/what-is-the-latency-or-delay-time-for-callbacks-from-the-waveoutwrite-api-metho – MusiGenesis

2

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

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

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

このリンクには、C#のサンプルコードもあります。

あなたがビデオを再生するために好きではない場合は、IWMPMediaクラスを使用することがあります。

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

関連する問題