Skype录音答录机编程思路和代码

Skype是免费的语音通话软件,不但可以点对点用电脑进行免费的语音通话,而且只需花费低廉的费用就可以直接呼叫固定电话或手机,Skype以优秀的通话质量而赢得了全世界不少用户的亲睐,我就是Skype的忠实用户,下图就是我的Skype截图:


我常常使用Skype和台湾同胞还有国外的朋友进行联系,有时因为业务需要需要将语音通话录音并保留下来,在我有这个想法的那个时候(2006年)Skype官方并没有提供录音功能,咱们是做程序的嘛,没有的功能可以自己来添加啊,这也是为什么我酷爱编程的原因。

应广大网友的要求,现将该程序的编程思路和源代码贡献出来与大家共勉,希望能给对音频编程有兴趣的朋友提供一点点帮助,那我就心满意足了。

刚开始编写这个程序的时候,我试着用常规的录音方式对声卡进行录音,既然是通话录音,我们希望能将自己的声音和对方的声音同时纪录下来。首先,我们要将对方的声音录下来,那就只能选取“立体声混音”通道进行录音,但此时“麦克风”通道的声音将被丢弃,也就是说在Skype里对方将听不到我说话了;其次,如果我们还要将我自己的声音录下来,就得开启“麦克风”通道录音,但是在Skype通话过程中,“麦克风”通道已经被Skype占用了,我们的程序无法再次进行录音,看来常规的录音方式行不通。

于是,我想到了Windows音频的底层处理机制,任何语音软件的音频数据处理到最后都离不开 Windows 的底层音频 Win32 API 函数,查一下MSDN 库就能得知,这些函数都在 MultiMed.chm 帮助文件中:

Waveform Functions
The following functions are used with waveform audio.
auxGetDevCaps
auxGetNumDevs
auxGetVolume
auxOutMessage
auxSetVolume
PlaySound
sndPlaySound
waveInAddBuffer
waveInClose
waveInGetDevCaps
waveInGetErrorText
waveInGetID
waveInGetNumDevs
waveInGetPosition
waveInMessage
waveInOpen
waveInPrepareHeader
waveInProc
waveInReset
waveInStart
waveInStop
waveInUnprepareHeader
waveOutBreakLoop
waveOutClose
waveOutGetDevCaps
waveOutGetErrorText
waveOutGetID
waveOutGetNumDevs
waveOutGetPitch
waveOutGetPlaybackRate
waveOutGetPosition
waveOutGetVolume
waveOutMessage
waveOutOpen
waveOutPause
waveOutPrepareHeader
waveOutProc
waveOutReset
waveOutRestart
waveOutSetPitch
waveOutSetPlaybackRate
waveOutSetVolume
waveOutUnprepareHeader
waveOutWrite

时间: 2024-08-08 02:32:04

Skype录音答录机编程思路和代码的相关文章

从一个舆论调查的制作谈面向对象的编程思路(五)

编程|对象 好了,现在万事俱备,只欠东风了,让我们看看现在做一个舆论调查多么简单: file : vote.aspx <%@ Page language="c#" Codebehind="vote.cs" AutoEventWireup="false" Inherits="Football.vote" %> <html>  <head>  <title>532.com.cn --

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1677155 运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下cro

CentOS6、7 LVM逻辑卷分区自动扩容Shell脚本编程思路与实例

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1619692 应用场景和已知存在的问题: 适用于CentOS6或CentOS7(可能适用于CentOS4或5等早些版本) 根文件系统(被扩展的文件系统)采用LVM进行管理,例如mount命令输出"/dev/mapper/vg_$hostname-lv_root on / type ext4 (rw)"中含有

vc-用VC++6.0做单片机上拉机编程,有没有学习资料分享一下,大神们

问题描述 用VC++6.0做单片机上拉机编程,有没有学习资料分享一下,大神们 用VC++6.0做单片机上拉机编程,有没有学习资料分享一下,大神们,教程什么的都行 解决方案 想编上位机程序,首先接触的就是上位机与单片机通讯,你可以先看看串口通讯,例子很多,百度搜搜吧.

《Hadoop与大数据挖掘》一2.6.2 Hadoop TF-IDF编程思路

2.6.2 Hadoop TF-IDF编程思路 这里不再给出TF-IDF的单机算法实现,而直接给出其Hadoop算法实现思路,如图2-52所示. 具体算法描述如下. Job1:针对每个文件集中的每个输入文件,分别统计其各个单词出现的次数,输出为<单词w|文件名f,该单词w在文件f中出现的次数f-w-count>. Job2:针对Job1的输出,统计文件f中所有单词的个数(及一共有多少个唯一的单词),输出为<单词w|文件名f,该单词w在文件f中出现的次数f-w-count |文件f中的单词

搜索引擎核心技术(PHP编程思路) --[1]_php基础

谈到网页搜索引擎时,大多数人都会想到雅虎.的确,雅虎开创了一个互联网络的搜索时代.然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的.2000年8月,雅虎采用了Google(www.google.com)这家由斯坦福大学学生创建的风险公司的技术.理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快.更准确搜索到所需要的信息. 让我们自己来设计.开发一个强劲.高效的搜索引擎和数据库恐怕短时间内在技术.资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用

零基础易语言入门教程(二)之编程思路_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

c++ 编程问题-C++关于炸弹袭击问题,求解!完全没头绪啊,麻烦各位给下思路或者代码我研究。。

问题描述 C++关于炸弹袭击问题,求解!完全没头绪啊,麻烦各位给下思路或者代码我研究.. [题目描述]: H族的领地是一片富饶之地,有丰富的资源,无数的黄金.尽管异族侵略者被压制几百多年,他们并没有放弃对这片土地的渴望.最近,他们研制了一枚重磅炸弹.试图用它摧毁H族的防御工事.H族的防御工事由多个基地构成,侵略者试图用炸弹摧毁尽量多的防御基地,现在,他们急需你的帮助.如果你能为他们解决难题,会有巨大的奖励.(该炸弹的攻击范围是一个半径为r单位的圆) [输入] 第一行为样例的个数T. 每个样例中有

ASP编程常用的代码

 ASP编程常用的代码 -------------------------------------------------------------------------------- 1. ASP与Access数据库连接: <%  dim conn,mdbfile  mdbfile=server.mappath("数据库名称.mdb")  set conn=server.createobject("adodb.connection")  conn.open