vac虚拟声卡我linux,虚拟声卡驱动应用及其原理简要说明
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,虚拟声卡驱动应用及其原理简要说明相关推荐
- 虚拟主机 windows linux,虚拟主机用Linux的好还是windows的好?
站长们在建网站初大多都会在虚拟主机选择上有很多疑问,我的网站是选用linux虚拟主机还是windows虚拟主机呢?哪个更好呢? 这里天下数据给大家做一下全面的科普. windows空间和linux空间 ...
- windows虚拟主机和linux虚拟主机的区别有哪些?
很多个人站长和中小企业在做网站的时候,会选择虚拟主机.虚拟主机用的操作系统多为Windows系统,很多人一提到操作系统立马联想到Windows系统.其实除了Windows系统外,还有很多的操作系统.其 ...
- linux建立虚拟硬盘,创建linux虚拟硬盘.doc
创建linux虚拟硬盘 创建linux虚拟硬盘 ------------------------ || 创建linux虚拟硬盘 || ------------------------ 创建虚拟硬盘 1 ...
- linux声卡测试命令,linux添加声卡驱动使用命令行音频播放器的方法
首先linux系统需要有声卡 哪怕是虚拟声卡,我用的是virtualbox,intel 80x AC97 声卡. 安装声卡驱动,在linux内核的找到声卡对应的驱动 可以集成到内核,或者安装为模块,为 ...
- linux alsa声卡命令,Linux ALSA声卡驱动之一:ALSA架构简介
一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查 ...
- arm linux免驱usb声卡,arm linux利用alsa驱动并使用usb音频设备
一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: 接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa- ...
- linux虚拟实验服务,Linux虚拟服务器(LVS)实验文档PDF
这个Linux虚拟服务器(LVS)实验文档时我看过最好的实验文档,里面介绍了LVS/nat LVS/DR LVS/TUN以及综合实验,讲解了常用的算法和调度. 由于 ARP 的对应关系,是通过广播学到 ...
- linux虚拟串口创建,linux虚拟串口编程
环境: unbuntu14 虚拟机,已设置可联网 目的1:在linux环境下读写虚拟串口(2虚拟串口连接) 步骤: 一,创建虚拟串口 1.安装虚拟软件 apt-get install socat 2. ...
- linux alsa声卡命令,Linux ALSA声卡介绍及使用
一. 介绍 ALSA 标准是一个先进的linux声音体系.它包含内核驱动集合,API库和工具对Linux声音进行支持.ALSA 包含一系列内核驱动对不同的声卡进行支持,还提供了libasound的AP ...
- linux虚拟主机_Windows虚拟主机和linux虚拟主机有什么区别?
不少租用虚拟主机的用户在问一个同样的问题:windows空间和linux空间哪个好?这里给大家做一下全面的科普. 一.windows空间和linux空间的区别 系统的不同 ①windows空间则是由w ...
最新文章
- 【 C 】指向数组的指针(数组指针)(行指针)
- 补psp进度(11月4号-9号)
- Go 变量及基本数据类型2
- 【Ubuntu】 Ubuntu18.04修改主机名
- docker三剑客之docker-machine
- ShellAPI 调用搜索引擎
- 关于对于工作方式的一些总结。
- 「 机器人学 」“增量式/绝对式编码器”讲解
- 免费SSL证书的制作
- 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
- tracert 原理
- 关于Latex出现Package CJK Error
- 查询oracle所有回收站,oracle 回收站
- 寻找IT行业中的引爆点
- GIS添加图层、查询详细
- 什么是API?(详细解说)
- 小觅智能视觉培训计划走进上海交通大学
- Session、Cookie和Token的简介、技术核心和实现原理
- 数据溢出与除数为0错误
- Quartus计算机组成与设计实验原理图整理(十)——二进制补码加法器实验