2

MP3ファイルの長さを決定するために使用しようとしている次の関数があります。

public static string GetMP3DurationBackup(string Filename)
{
    string Duration = null;
    WMPLib.WindowsMediaPlayer w = new WMPLib.WindowsMediaPlayer();
    WMPLib.IWMPMedia m = w.newMedia(Filename);
    if (m != null)
    {
        Duration = m.durationString;
    }
    w.close();
    return Duration;
}

次のエラーが発生する問題に遭遇しました。

次のエラーのため、CLSID {6BF52A52-394A-11D3-B153-00C04F79FAA6} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154..

Web アプリケーションから上記の関数を呼び出すと (以下の呼び出し):

string test = MediaUtil.GetMP3DurationBackup(@"C:\Temp\Audio\bad.mp3");

しかし、作成したコンソール アプリケーション テスト ハーネスから呼び出すと (上記とまったく同じ呼び出し)、問題なく動作します。Build プロパティで x86 を対象とする関数を含むプロジェクトを設定しましたが、問題は解決しませんでした。

なぜこれが起こるのか誰にも分かりますか?これをデバッグするためにどこから始めるべきかについての提案はありますか?

報奨金の更新:

わかりました、私は多くのことを試しましたが、まだこのエラーが発生しています。とりわけ、私が最も有望だと感じた以下の手順を試しましたが、サイコロはありませんでした:

  1. 私のレジストリに行って、値 at: HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{6BF52A52-394A-11d3-B153-00C04F79FAA6}\InprocServer32 が参照していることを確認しましたC:\WINDOWS\SysWOW64\wmp.dll
  2. コマンド プロンプトを開き、C:\WINDOWS\SysWow64 に移動して、以下を実行しました。regsvr32.exe wmp.dll

コンソール アプリのテスト ハーネスを作成しました。x64 でテスト プロジェクトを実行すると、エラーを再現できます。x86に切り替えると正常に動作します。

上記で問題が解決しない理由を誰かが知っていますか? 次にどこを見るべきかについての提案はありますか?

4

2 に答える 2

0

この lib を試してみてください。高速で、マシンにソフトウェアをインストールするための特別な要件はありません。

http://naudio.codeplex.com/

于 2013-04-25T20:40:19.633 に答える