C++实现CD抓轨转WAV

现在介绍一下C++实现CD抓轨转WAV,CD抓轨的方法有好几种,现在介绍其中一种。我们 可以通过API函数CreateFile获得设备句柄,再用API函数DeviceIoControl来实现对设备 的访问获取信息。再此还会用到WAVE文件结构WAVEFORMATEX,再把读到的信息写到文件里 生成WAVE格式的文件。

我们要用到的头文件有: ntddcdrm.h(NTDDK开发包) winioctl.h Mmreg.h

1、搜索光驱

我们可以用GetDriveType来判断设备类型,5为CDROM类型。返回类型可以参看MSDN,里 面有详细介绍。

2、打开设备

用CreateFile获得设备句柄,例子如下:

HANDLE m_hDevice;
  CString FileName=”F:”;
  m_hDevice =CreateFile("\\\\.\\"+FileName,  // 文件名路径
  GENERIC_READ,  // 读写方式
  FILE_SHARE_READ | FILE_SHARE_WRITE,  // 共享方式
  NULL,  // 默认的安全描述符
  OPEN_EXISTING,  // 创建方式
  0,  // 不需设置文件属性
  NULL);  // 不需参照模板文件

3、读取CD参数

得到了设备句柄,我们就可以用DeviceIoControl来获息相关信息.

DeviceIoControl函数原型:

BOOL DeviceIoControl(
  HANDLE hDevice,  // 设备句柄
  DWORD dwIoControlCode,  // 控制码
  LPVOID lpInBuffer,  // 输入数据缓冲区指针
  DWORD nInBufferSize,  // 输入数据缓冲区长度
  LPVOID lpOutBuffer,  // 输出数据缓冲区指针
  DWORD nOutBufferSize,  // 输出数据缓冲区长度
  LPDWORD lpBytesReturned,  // 输出数据实际长度单元长度
  LPOVERLAPPED lpOverlapped           // 重叠操作结构指针
  );

4、获取曲目

使用IOCTL_CDROM_READ_TOC控制码输出CDROM_TOC结构

BOOL bResult;
 DWORD dwOutBytes;
 CDROM_TOC CdromTOC;  //曲目信息结构,详细请看MSDN
 bResult=DeviceIoControl(m_hDevice,
       IOCTL_CDROM_READ_TOC,NULL,0,
       &CdromTOC,
       sizeof(CdromTOC),
       &dwOutBytes, 
       (LPOVERLAPPED)NULL);

5、获取曲目始点

DWORD CCdToWavDlg::GetStartSector(int track)
{
     return (CdromTOC.TrackData[track-1].Address[1]*60*75   +
         CdromTOC.TrackData[track-1].Address[2]*75 +
         CdromTOC.TrackData[track-1].Address[3])-150;
}

时间: 2024-12-13 09:18:55

C++实现CD抓轨转WAV的相关文章

如何把CD抓轨成WAV文件教程

如何把CD抓轨成WAV文件教程 1. 首先,执行Exact Audio Copy(以下简称EAC)主程序,打开EAC的主界面; 2. 接着打开菜单栏EAC项中的"驱动器选项",准备对"抓轨模式"进行设置 注解:这项很关键,直接影响到抓轨出来的音频质量 3. "抓轨模式"设置:推荐使用精确流.禁用缓存.不使用C2的安全模式,抓轨. 注解: A.暴发模式抓轨只读取一次,其它模式读两次,两次抓的数据一样才通过,不一样就重新抓,抓到都一样才通过,所以安全

Cool Edit怎么CD抓轨

  1.直接打开法; 这种方法的操作简单无比,直接在单轨模式下的File(文件)菜单中选择Open(打开)文件,然后如图选择打开后缀名为.cda的CD音频文件格式.就可以直接把CD中的音乐文件打开了,并且可以一次选取打开多个文件.打开后的波形文件可以直接编辑,修改,和普通的wav文件没什么区别.然后你可以通过save as(另存为)把它作为wav文件或者mp3文件等保存到你的硬盘上. 2.抓取文件法; 第一种方法虽然简单,但是不为用户提供更多的抓轨选项,对于一些老的光驱,可能会在打开文件的时候出

如何把cd转换成mp3

  如何把cd转换成mp3 1.把CD放入光驱之后,点击酷狗播放器右边"我的应用"下的"格式转换";如(图1) 2.点击"添加文件",添加CD路径中的.cda文件或者直接使用"CD抓轨"功能;如(图2) 3.在"转换格式"中选择对应的音频格式,然后在"转换设置"中调整"目标文件夹"位置即可;如(图3) 4.点击右下角的"开始转换",就会自动把CD转

酷狗把CD转换成MP3格式教程

给各位酷狗软件的使用者们来详细的解析分享一下酷狗把CD转换成MP3格式的教程. 解析分享: 1.把CD放入光驱之后,点击酷狗播放器右边[我的应用]下的[格式转换];如(图1)   2.点击[添加文件],添加CD路径中的.cda文件或者直接使用[CD抓轨]功能;   3.在[转换格式]中选择对应的音频格式,然后在[转换设置]中调整[目标文件夹]位置即可;   4.点击右下角的[开始转换],就会自动把CD转换成MP3文件了.   好了,以上的信息就是小编给各位酷狗的这一款软件的使用者们带来的详细的酷

怎样截取视频中的音乐

平时在网上下载的视频,有时很喜欢其中一段音乐,需要仅仅这一段喜欢的音乐被单独保留下来,这时候,就需要截取视频中的音乐,那么,如何截取视 频中的音乐呢?这种视频向音频的转换当然需要全功能的音视频转换软件来实现了.今天,为大家介绍使用<超级转换秀>截取视频中的音乐. 步骤方法 1.导入要截取音乐的视频 超级转换秀是一款综合性的音视频转换软件,集成视频转换.音频转换.音视频混合转换.音视频驳接.CD抓轨.添加字幕等基础视频剪辑功能于一 体.要实现截取视频中的音乐,通过超级转换秀的"音频转换

超级转换秀如何截取影视电视剧中的插曲

什么是超级转换秀? <超级转换秀>是梦幻科技品牌旗下优秀力作.超级转换秀是国内 首个集成视频转换.音频转换.CD抓轨.音视频混合转换. 音视频切割/驳接转换.叠加视频水印.叠加滚动字幕/个性文字/图片等 于一体的优秀影音转换工具.其内置国际一流的解压技术,转换质量 一流,同时支持各种CPU的MMX,3D Now!,SSE1/2/3/4以及最新多核 技术等指令系统的全面优化,让您拥有更快速的转换速度.其支持的 功能之多,几乎可以满足您所有的转换要求并成为您的转换工具首选. 截取的步骤和方法: 1

超级转换秀中如何为视频加边框

超级转换秀是一款国内首个集成视频转换.音频转换.CD抓轨.音视频混合转换.音视频切割/驳接转换.叠加视频水印.叠加滚动字幕/个性文字 /图片等于一体的视频转换软件.并且它还支持各种CPU的MMX/3D Now!/SSE/SSE2/SSE3以及最新多核技术等指令系统的全面优化,让用户拥有更快速的转换速度.其主要功能有:支持将CD音乐直接转换为 WAV/MP3/WMA/OGG等数字音乐,支持批量转换处理,支持多光驱:支持WAV/MP3/OGG/WMA/APE/AAC/M4A/AC3 /RMA等格式的

Windowsphone和安卓手机对比评测体验

  wp好不好?Windowsphone和安卓手机对比评测体验 wp与android手机对比.从系统的架构来看,WP和iOS一样属于封闭的系统,这方面与Android开放性不同.封闭系统在软件安装.文件资料交换方面没有开放性系统方便,因此,安全系数会比开放系统高得多.另一个方面,由于封闭系统在未越狱的情况下,安装软件只可以通过官方市场,严格的审核制度也保证了应用程序的质量和可靠性. 从系统的操控来看,WP和iOS在运行速度和操控流畅度方面要优于Android,在硬件的依赖性方面也要好于Andro

【Linux技术】ubuntu常用命令【转】

转自:http://www.cnblogs.com/lcw/p/3159462.html   查看软件xxx安装内容:dpkg -L xxx查找软件库中的软件:apt-cache search 正则表达式查找软件库中的软件:aptitude search 软件包查找文件属于哪个包:dpkg -S filename查找文件属于哪个包:apt-file search filename查询软件xxx依赖哪些包:apt-cache depends xxx查询软件xxx被哪些包依赖:apt-cache r