使用 iTunes 的 C# MP3、Wav 和 PCM 音频录制器






4.71/5 (4投票s)
一个与 iTunes 和 DirectSound 集成的录制音乐的程序
引言
我发现 iTunes 可以播放 WMA 格式的歌曲,但它不会转换它们,所以在 Code Project 网站上,我找到了一段用 C# 编写的 MP3、WAV 和 PCM 音频捕获代码,并添加了捕获音频到指定格式所需的所有库。我本来打算使用 Windows Media Player 类来播放我想捕获的音乐,但是发现它无法播放许多文件类型,所以我开始寻找替代方案。我在 COM 引用列表中找到了 iTunes EXE 文件,并直接添加了它。我的程序现在允许你在 iTunes 中播放歌曲,它会自动拾取歌曲的开始、结束时间以及文件名。然后,它会将歌曲保存到用户指定的文件夹中(使用该格式的正确文件扩展名)。这非常好,因为你可以让它播放所有你喜欢的歌曲,同时收听和重新录制成不同的格式。但是,你不需要从 iTunes 录制,也不需要安装 iTunes,因为我的程序有一个用户启动/停止按钮,允许你随时启动和停止录制。
背景
你不需要了解任何东西!只要你是一位优秀的 C# 程序员(像我一样),这将看起来是有史以来最简单的程序。在某些方面,它确实如此,因为它几乎不需要任何时间或精力,因为大部分程序都是为我准备好的!
(在 VS2008 中运行代码时,你需要关闭“Lock Loader”错误。为此,请转到调试菜单 -> 异常 -> 展开托管调试助手 -> 滚动到 Lock Loader,然后取消选中它。这不会对你的编程环境产生任何明显的影响,并且有望停止烦人的无法解决的错误!)
Using the Code
属性:所有属性和变量都是自解释的。以下是方法及其工作方式
// Not try catch
public MainForm("code-keyword">bool UseiTunes)
{
InitializeComponent();
if (UseiTunes)
{
LoadEvents();
}
}
private void LoadEvents()
{
try
{
AnIApp.OnPlayerPlayEvent += new
_IiTunesEvents_OnPlayerPlayEventEventHandler(AnIApp_OnPlayerPlayEvent);
AnIApp.OnPlayerPlayingTrackChangedEvent +=
new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(
AnIApp_OnPlayerPlayingTrackChangedEvent);
AnIApp.OnPlayerStopEvent += new
_IiTunesEvents_OnPlayerStopEventEventHandler(AnIApp_OnPlayerStopEvent);
}
catch (Exception ex)
{
DialogResult AResult = MessageBox.Show("Error setting up itunes " +
"event handlers, do you wish to:",
"Error! - What do you wish to do?",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
if (AResult == DialogResult.Abort)
{
Application.Exit();
}
else if (AResult == DialogResult.Retry)
{
LoadEvents();
}
}
}
上面的代码包含主窗体构造函数和 `LoadEvents()` 方法。`MainForm` 构造函数采用参数 `UseiTunes`,因为如果计算机上没有安装 iTunes,那么当用户第一次启动程序时,将会发生错误,用户可以选择重试,因此程序将不会尝试设置 iTunes 事件处理程序。`LoadEvents()` 方法只是为所需的 iTunes 事件设置事件处理程序。在 `try`/`catch` 块中,如果设置事件处理程序失败,则用户可以选择重试(这将重新调用该方法并再次尝试),中止(这将退出程序),或忽略(这将继续并且不会再次尝试设置事件处理程序——这将导致 iTunes 功能不可用)。这些 `try/catch
` 块出现在我认为需要它们的地方。现在你已经看到了一些代码及其工作方式。你可以下载程序或源文件,因为其余部分相当容易理解。
历史
- 2009 年 2 月 9 日:初始发布
- 2009 年 2 月 10 日:更新了源文件和演示
- 2009 年 6 月 21 日:更新了源文件