gpt4 book ai didi

c# - 读取音频文件时出错?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:24 24 4
gpt4 key购买 nike

我尝试使用以下函数来确定 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;
}

我遇到了以下错误:

Retrieving the COM class factory for component with CLSID {6BF52A52-394A-11D3-B153-00C04F79FAA6} failed due to the following error: 80040154..

当我从我的 Web 应用程序调用上述函数时(在下面调用):

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

但是当我从我创建的控制台应用程序测试工具调用它时(与上面的调用完全相同)它工作正常。我已经在构建属性中设置了包含目标 x86 函数的项目,但这并没有解决问题。

有人知道为什么会这样吗?关于从哪里开始调试的建议?

赏金更新:

好的,我已经尝试了很多方法,但我仍然收到此错误。除其他外,我尝试了以下我认为最有希望的步骤,但没有成功:

  1. 进入我的注册表并确认值在: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,它工作正常。

有没有人知道为什么以上不能解决问题?关于下一步要看哪里的建议?

最佳答案

你说它在 x64 中不起作用,但你尝试注册 wmp.dll 的 32 位版本(C:\Windows\SysWow64 包含 32 位程序集)。

尝试注册 x64 版本的 wmp.dll,它位于 64 位平台上的 C:\Windows\System32

如果您没有此文件,则可能没有适用于您的平台的 64 位 Windows Media Player。但有一个解决方法:

创建一个 32 位控制台应用程序,将 mp3 文件名作为命令行参数,并使用 Console.WriteLine 将持续时间输出到标准输出,然后在 webapp 中,调用控制台应用程序并捕获输出如 this example on MSDN

关于c# - 读取音频文件时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com