How to develop your own Skype call recording software for Windows with Skype desktop API?

Skype is a free voice software, which can point to point with computers for free voice calls, and it charges the low cost with calls directly to the fixed telephone or mobile phone, Skype offers excellent quality and won the favor of many users all over the world, I am a faithful user of Skype, below is my Skype screenshots:

Why we need a Skype call recording system?

I often use Skype with my Taiwan compatriots when I was in mainland, sometimes my business requires a call recording on Skype: www.purecalifornia.co.uk for retaining purpose, I have this in my mind about that time, however, Skype official did not provide call recording capabilities, we have to find our own way to figure it out, luckily I can build my own "Skype recorder" with C++, this is the reason why I love programming.

How to develop your own call recorder for Skype with Skype public API?

The programming ideas and source code contributions out and encourage one another, hoping to give the programming friends who are interested to provide a little help, then I‘ll be satisfied.

At the beginning of writing this program, I tried using a conventional tape recording of a sound recording, since it is a Skype call recording, we are hoping to own and each other‘s voice sound simultaneously recorded. First of all, we want each other‘s voice can be recorded, it can only choose "Stereo Mix" channel recording, but this time the sound "microphone" channel will be discarded, which means that the other party will not hear me in Skype speak; secondly, we have to be my own voice recorded, also open the "microphone" channel recording, but during a Skype call, "microphone" channel has been occupied by Skype, which means our program cannot be recorded again, it seems the normal recording mode does not work in such case.

Inside of Skype public API

So, I think the underlying Windows audio processing mechanism, any voice audio data processing software to the end are inseparable from the underlying Windows audio Win32 API function, see the following screenshot:

With these functions, I find a way to use the Windows system hooks to detour original address of these audio functions used by Skype voice calls. The Skype program calls these APIs before they come into my Win32 API functions, I will obtain the Skype‘s audio data "secretly" with a copy parts passed to my own application, then the function returned to Skype, so you can mysteriously call in the voice data taken out, together with their own mp3 compression module to save the audio data to a disk file.

Key to record the audio data from a Skype call

All the above is the whole idea of recording Skype, now I am going to introduce the code.

Since our program needs to be embedded into the Skype program, so we can only use the form dll to write this program, now I need to modify the class to write a Win32 API function address, where I direct reference to the book "Windows core programming", I had the source code provided in this class that can modify the address Win32 API function when we modify the address after a good API function, Skype calls previously six function system automatically , then call our function, see the code:

At this point, Skype audio streams in a Skype call (the other party and myself speak voice) have been "stolen", as long as it can be compressed into mp3 format, it is ok to download the file to playback, I use the "hw_mp3_enc. DLL library" to encode the recording stream, the quality is great, and it can be used to make a telephone recording as well.

There is an interesting feature for Skype call recording, it’s possible to insert the other side of the sound into the left channel, which means my own voice is on the right track, just like two people face to face in the dialogue. Since it is not difficult to understand, we can learn it from the above code, in fact, the input and output of audio data are acquired independently, they are incorporated into the mp3 files by saving the input data in the left channel and output of data storage for the right channel.

Now that is called "Skype call recorder", besides having a recording function, there is an automatic reply function included, in order to achieve this function, we need to have two steps:

A) When the incoming call is ringing, switching the recording channel to the "stereo mixing", and play the prepared audio file into the Skype call.

B) After the call is ended. Using the waveInPrepareHeader function to replace recorded sound from the microphone, using this method is difficult to control, but can find a lot of strange effect, such as phone voice, etc.

There is something else need to pay attention, which is the program hooks, by intercepting the Skype audio data, and it’s execution efficiency is very high, for slow processing operations (such as: mp3 compressed data, data saving, etc.) is the best working in the other thread processing, otherwise it will affect the quality of Skype calling, cause intermittent feeling, and call recording data may be lost.

时间: 2024-09-26 15:01:01

How to develop your own Skype call recording software for Windows with Skype desktop API?的相关文章

How to compare different Skype call recording software on a Windows PC and MAC OSX?

Skype is now the strategy for videoconferencing since first coming on the VoIP landscape more than a decade past, greater furthered with a $8.5-million buyout three years past from the powerful technology large recognized as Ms. It is an excellent pr

Skype for Bussiness需要的Windows补丁

在Windows Server 2012R2上安装Skype for Bussiness的先决条件中有一条就是首先要安装KB2982006补丁. 安装这个补丁之前首先要按照顺序安装KB2969339,KB2919355:这样才能安装KB2982006.不然会提示此更新不适用于你的计算机.

Azure虚拟机部署Skype for Business Server 三、部署Skype前端服务器

上一篇已经准备好AD,DNS,参照创建AD虚拟机的方法再创建Skype后端数据库服务器.前端服务器. 题外话:原来打算使用Auzre SQL数据库服务,但无法管理SQL实例服务器,还没有好的方法做到虚拟网络内部通讯,暂且又要部署一台虚拟机安装SQL数据库. 如上所述,参照上一篇创建AD虚拟机的方法,创建两台服务器部署SQL和Skype. 创建SQL数据库服务器SFB-SQL01,创建Skype前端服务器,创建完成如下图: 创建存储共享文件夹iso,上传SQL.Skype ISO安装包 打开存储帐

Skype for Business实战演练之八:安装Skype for Business Server 2015

所有前面所做的工作都是为了能正确安装Skype for Business Server 2015,所有的前提工作都做好后,下面就开始安装Skype for Business Server 2015. 1. 插入安装光盘,然后运行安装向导. 2. 在部署向导中,点击安装或更新Skype for Business Server 系统. 3. 步骤1:安装本地配置存储 a. 点击运行 b. 选择直接从中央管理存储中检索,点击下一步. c. 执行完成后,点击完成. 4. 步骤2:安装或删除Skype f

支持高DPI的录屏技术

高DPI导致的问题: 录制软件的识别的分辨率(1280*720)小于屏幕真实分辨率(1920*1080),导致只能录制屏幕的一部分.Gilisoft Screen Recorder 有客户反馈了这个问题. 解决办法: DWORD oldp; DWORD api_base = (DWORD)GetProcAddress(GetModuleHandleW(L"gdi32.dll"),"GetDeviceCaps"); VirtualProtect((void*)api_

5 best Skype recorder that you don't want to miss

One of the biggest advantages of Skype is its simple and mostly free video calling function. But what if you need to record a video call, or if you would simply keep personal conversations remember? Wondering how to record Skype video? It's much simp

Skype for Business Server 2015系列(一)概述和准备工作

对于Lync,相信熟悉微软产品的小伙伴都比较了解了,作为微软旗下的即时通讯软件,面向企业用户,全球500强中的70%都在使用Lync.在今年4月份的时候,微软将 Lync 更名为 Skype for Business,作为 Office 2013 四月更新的一部分,正式开始推送.微软称Skype for Business将集合 Skype 和Lync的优势(如Skype界面熟悉感和Lync企业级功能)界面和图标更像Skype,提供了全新的客户端体验. 作为服务器端的Skype for Busin

Skype For Business online混合部署(二)--混合部署配置

Skype for business 2015与Office 365 Skype for business online的混合部署如下过程: 1. 在本地以管理员登录 Skype for business2015控制面板,定位到:仪表板,单击:登录Office 365 2. 输入Office 365管理员帐户和密码,点击:确定 3. 登录 成功 4. 单击:使用SFB Online设置混合部署 5. 查看混合部署的需求,满足条件后,单击下一步 6. 混合向导配置过程中报错:未配置与Office

Skype for business之Skype会议直播

什么是 Skype 会议直播? Skype 会议广播 是 Skype for Business 一个新组件. 作为 Office 365 和 Skype for Business Online 的一部分,Skype 会议广播 使你可以为一大批线上观众制作.主持和直播会议. Skype 会议广播 的工作原理 可以面向多达 10,000 个与会者计划 Skype 会议广播. 可以使用 Skype 会议广播 日程安排和管理门户来安排会议. 可以使用 Skype for Business 内熟悉的会议体