VAC(Virtaul

Audoo Cable),大家可以在下面“http://software.muzychenko.net/eng/vac.html ”下到Demo版的可执行文件。

该软件是俄国人写的,说实话,该软件的代码可读性很差,甚至是相当糟糕(或许作者有意将代码写成这样的),同时也很佩服作者能把那样难读的代码写到如此功能。

应用:

通常情况下,虚拟声卡驱动主要应用到截取声音,理论上可以做到截取几乎所有软件的声音,包括(但不限于)Windows自身的声音(如:警告提示等);Media

Player、PowerDVD、录音机和MP3播放器等流行软件,注意:这里所说的是几乎所有的声音,具体原因将在下面说明。

下面将以VAC的应用简单说明下如何实现音频截取功能(时间关系,这里仅说明Playback的截取)。

首先,VAC是一个虚拟声卡驱动,所谓虚拟声卡有两个含义,其一他是一个声卡驱动,其而,该声卡驱动没有对应相应硬件(说到这里我想指出一个很多人的错误概念,经常听人把DDK中的kbdfilter等驱动说成是虚拟键盘驱动,其实这个概念是不正确的,kbdfilter实际是一个键盘filter驱动,而并无“虚拟”的概念。)。

了解了VAC的具体含义后,我们再来看VAC如何实现声音截取功能的,我们还得先成音频播放和录音说起。

通常我们在进行录音和回放的时候,应用程序中我们可以选择wave API或者DirectSound等来实现,无论应用使用什么接口去实现,最终的数据流都将经过驱动到达声卡从而达到发音的目的,所以这里就仅以wave API来做说明。

通常我们播放声音是通过waveOutOpen打开声音设备,然后调用waveOutPrepareHeader、waveOutWrite

将数据写声卡,当播放结束后,我们将收到MM_WOM_DONE消息或者事件被触发(具体是消息还是事件是根据waveOutOpen的fdwOpen

和dwCallback

决定的,这里就不多说了),然后我们可以waveOutUnprepareHeader来回收使用的资源,并将新的数据写入,这样声音就可以播放出来了,同样的道理我们可以实现录音(当然使用的API有所不同)。

大家都知道,当我们在调用waveOutOpen打开声卡的时候,有给一个uDeviceID,这个ID是用来标识别音频设备的,从0到N(最大设备ID),通常的软件都是使用缺省的音频设备,当安装了VAC后,系统中将有另外一个声卡,也就是说这里的device

id将增加一个,正常情况下,即使我们安装了VAC,系统缺省的音频设备仍然是原始声卡,所以这个时候播放器并不能将声音发送到VAC,而是原始声卡,为了让声音能发送到VAC,我们需要改变这个数据流向,方法就是:我们将系统缺省设备设置为VAC,这样数据被发送到了VAC中,因为VAC并不对应声卡,所以我们将听不到声音了,当然这个并不是我们所需要,为了不影响使用,我们将必须将数据回写到真实声卡,在VAC中,它是通过waveIn来采集到其它软件写入的声音,然后通过waveOut来回写声卡实现的(具体实现代码很简单,我就不在这里show了)。

说到这里,我想大家已经很清楚前面说到通过VAC我们可以抓到“几乎所有的声音”的原因了,如还不明白的请大家仔细思考下应该可以想到原因。

上面简单说明了下虚拟声卡的应用和应用原理,详细细节还需要大家仔细琢磨和实践。

有兴趣的朋友可以去下一个VAC来玩玩,也可以去修改msvad实现你自己的VAC功能。

vac虚拟声卡我linux,虚拟声卡驱动应用及其原理简要说明相关推荐

  1. 虚拟主机 windows linux,虚拟主机用Linux的好还是windows的好?

    站长们在建网站初大多都会在虚拟主机选择上有很多疑问,我的网站是选用linux虚拟主机还是windows虚拟主机呢?哪个更好呢? 这里天下数据给大家做一下全面的科普. windows空间和linux空间 ...

  2. windows虚拟主机和linux虚拟主机的区别有哪些?

    很多个人站长和中小企业在做网站的时候,会选择虚拟主机.虚拟主机用的操作系统多为Windows系统,很多人一提到操作系统立马联想到Windows系统.其实除了Windows系统外,还有很多的操作系统.其 ...

  3. linux建立虚拟硬盘,创建linux虚拟硬盘.doc

    创建linux虚拟硬盘 创建linux虚拟硬盘 ------------------------ || 创建linux虚拟硬盘 || ------------------------ 创建虚拟硬盘 1 ...

  4. linux声卡测试命令,linux添加声卡驱动使用命令行音频播放器的方法

    首先linux系统需要有声卡 哪怕是虚拟声卡,我用的是virtualbox,intel 80x AC97 声卡. 安装声卡驱动,在linux内核的找到声卡对应的驱动 可以集成到内核,或者安装为模块,为 ...

  5. linux alsa声卡命令,Linux ALSA声卡驱动之一:ALSA架构简介

    一.  概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查 ...

  6. arm linux免驱usb声卡,arm linux利用alsa驱动并使用usb音频设备

    一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: 接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa- ...

  7. linux虚拟实验服务,Linux虚拟服务器(LVS)实验文档PDF

    这个Linux虚拟服务器(LVS)实验文档时我看过最好的实验文档,里面介绍了LVS/nat LVS/DR LVS/TUN以及综合实验,讲解了常用的算法和调度. 由于 ARP 的对应关系,是通过广播学到 ...

  8. linux虚拟串口创建,linux虚拟串口编程

    环境: unbuntu14 虚拟机,已设置可联网 目的1:在linux环境下读写虚拟串口(2虚拟串口连接) 步骤: 一,创建虚拟串口 1.安装虚拟软件 apt-get install socat 2. ...

  9. linux alsa声卡命令,Linux ALSA声卡介绍及使用

    一. 介绍 ALSA 标准是一个先进的linux声音体系.它包含内核驱动集合,API库和工具对Linux声音进行支持.ALSA 包含一系列内核驱动对不同的声卡进行支持,还提供了libasound的AP ...

  10. linux虚拟主机_Windows虚拟主机和linux虚拟主机有什么区别?

    不少租用虚拟主机的用户在问一个同样的问题:windows空间和linux空间哪个好?这里给大家做一下全面的科普. 一.windows空间和linux空间的区别 系统的不同 ①windows空间则是由w ...

最新文章

  1. 【 C 】指向数组的指针(数组指针)(行指针)
  2. 补psp进度(11月4号-9号)
  3. Go 变量及基本数据类型2
  4. 【Ubuntu】 Ubuntu18.04修改主机名
  5. docker三剑客之docker-machine
  6. ShellAPI 调用搜索引擎
  7. 关于对于工作方式的一些总结。
  8. 「 机器人学 」“增量式/绝对式编码器”讲解
  9. 免费SSL证书的制作
  10. 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
  11. tracert 原理
  12. 关于Latex出现Package CJK Error
  13. 查询oracle所有回收站,oracle 回收站
  14. 寻找IT行业中的引爆点
  15. GIS添加图层、查询详细
  16. 什么是API?(详细解说)
  17. 小觅智能视觉培训计划走进上海交通大学
  18. Session、Cookie和Token的简介、技术核心和实现原理
  19. 数据溢出与除数为0错误
  20. Quartus计算机组成与设计实验原理图整理(十)——二进制补码加法器实验

热门文章

  1. 【源码更新】活动报名登记预约问卷表单系统微信小程序支持导入导出自定义表单填报字段
  2. IDEA打包war部署到Tomcat
  3. STM8S自学笔记-005 精准延时
  4. haneWIN Software NFS工具的使用
  5. 对JSP内置对象的部分总结
  6. Java软件工程师职业规划
  7. layerdate时间控件的用法
  8. ORA-03113:通信通道的文件结尾-完美解决方案
  9. 前端:分享几个前端素材网站
  10. MyBatis是什么?使用它作为持久层框架有什么优点?