轻松 MP3 录制(也可使用 iTunes)






4.58/5 (4投票s)
类库和工作程序,可轻松录制 MP3、wav 和原始 pcm 文件。还可以与 iTunes 集成。
- 下载应用程序 - 182.07 KB
- 下载项目 - 425.88 KB
(包含在两者中)
引言
一年前,我和我姐姐想把我们购买的所有 iTunes 内容备份成 MP3 格式。于是我编写了这个程序,并写了一篇文章介绍它。但是,这个程序本身很难使用,而且代码很笨拙,因为我当时并没有花心思清理代码。不过,最近我需要制作一个易于使用的版本。于是,在改进应用程序设计的同时,我也顺便改进了代码。结果,我创建了一个包含三个有用类(以及一些内部使用的辅助类)的库。这两个类是 Recorder
和 iTunes Recorder Extension
。Recorder
是基础录音类,它使用 Istrib
库(可从此处获取)来录制内容。它可以轻松地集成到任何希望录制内容的应用程序中。iTunes Recorder Extension
类顾名思义,更加具体。它提供了一个易于使用的对象,将 iTunes 及其库与 Recorder
类和 Istrib
库连接起来。
Using the Code
使用我的代码非常简单。你只需创建一个 Recorder
对象或 iTunesRecorderExtension
对象。然后设置一些对象并调用其中一个 Start
函数。
在本文中,我将重点介绍 iTunesRecorderExtension
对象,因为我的应用程序就是使用的这个对象,尽管 Recorder
类也同样易于使用。
要创建 iTunesRecorderExtension
对象,只需执行以下操作:
iTunesRecorderExtension TheRecorder = new iTunesRecorderExtension(true, "A Folder Path");
有两个参数:
DoUseLog
-bool
ALogFolderPath
-string
如果你想使用我的 Log
类,则 DoUseLog
应设置为 true
。Log
对象是一种以日志格式读取和写入文本文件的简单方法。当你让日志写入一条记录时,它会自动添加长日期和时间,并将记录分隔开,以便于阅读。如果你想使用日志,还必须为其提供一个日志文件夹路径。这是一个 string
,包含你希望日志存储的文件夹路径。对于 iTunesRecorderExtension
,有两个日志:Recorder
日志(来自底层的 Recorder
对象)和 Application
日志(来自 iTunesRecorderExtension
,用于存储信息)。Recorder
日志记录每次录音开始的时间以及录制的曲目。此外,Recorder
对象遇到的任何错误都会被记录下来。Application
日志记录整体录音的开始和结束时间,以及 Recorder
对象返回的任何错误和自身的错误。
要使用该类,你必须执行三项操作:
- 选择
SoundCaptureDevice
(声音捕获设备) - 提供一个文件夹名称来存储录制的曲目
- 指示它开始录制
要选择一个 sound capture device
,你应该在屏幕上使用组合框,因为程序不支持区分哪个设备正在播放声音,哪些只是其他未使用的声卡等。
以下代码将可用的设备添加到组合框,可以在应用程序启动时的加载函数中调用:
List<object> Objects = new List<object>();
for (int i = 0; i < TheRecorder.AvailableDevices.Count; i++)
{
Objects.Add(TheRecorder.AvailableDevices[i]);
}
SoundCaptureDevicesCmb.Items.AddRange(Objects.ToArray());
以下代码将用户选择的设备传输到 iTunesRecorderExtension
对象:
TheRecorder.Device = (Istrib.Sound.SoundCaptureDevice)
(SoundCaptureDevicesCmb.Items[SoundCaptureDevicesCmb.SelectedIndex]);
要告诉 iTunesRecorderExtension
对象将录制的曲目保存在哪里,你只需要一行代码:
TheRecorder.OutputFolder = OutputFolderBox.Text;
文件名会自动生成。文件也会按子文件夹排序。顶层是艺术家,下一个子文件夹是专辑,然后是曲目文件。(**注意**:如果艺术家和/或专辑为空/null,则将它们设置为文本'Blank
'!)
最后,你必须告诉 iTunesRecorderExtension
开始录制。这可以通过两种方式完成:一种是立即录制,另一种是等到指定的时间开始录制,并在另一个指定的时间停止录制。我开发了第二种方法,因为这样我就可以在不熬夜的情况下进行隔夜录制!
第一种方式如下:
TheRecorder.StartNow((Istrib.Sound.SoundCaptureDevice)
(SoundCaptureDevicesCmb.Items[SoundCaptureDevicesCmb.SelectedIndex]));
(**注意**:即使你已经设置了声音捕获设备,也必须再次传递它,以确保已设置。)
第二种方式同样简单,只有两个额外的参数:StartTime
和 EndTime
。StartTime
是录制开始的时间(精确到小时和分钟,而非天或秒)。EndTime
是录制结束的标称时间。录制会在这个时间停止,但是,录制会一直继续,直到当前播放的曲目播放完毕(即达到 EndTime
)。这确保你不会只录制到一半的曲目,但是,如果你正在录制长篇有声读物,你可能需要在设置 EndTime
之前计算出录制结束的大致时间!
开始和结束的代码如下所示:
TheRecorder.StartWaiting(dateTimePicker1.Value, dateTimePicker2.Value,
(Istrib.Sound.SoundCaptureDevice)
(SoundCaptureDevicesCmb.Items
[SoundCaptureDevicesCmb.SelectedIndex]));
TheRecorder.StopWaiting();
就是这么简单! ;D
我包含的其他一些属性是 Recording
和 Waiting
。Recording
返回应用程序是否仍在录制,即使 EndTime
已达到/过去。Waiting
返回应用程序是否正在等待 StartTime
或 EndTime
被达到(不区分)。