基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )

文章目录

    • ASIO
      • 场景
      • 解决方案
    • Dante Virtual Sound
    • PortAudio
    • LAME3
    • 录音软件

今天给大家分享一个之前做的ASIO多通道音频录音机程序,可以实时对多达64通道的ASIO音频进行录制MP3或WAV。

好了,话不多说,先给大家看东西。蓝雨[email protected]原创,禁止转载。
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第1张图片

整个录音软件采用Qt编写,使用了开源库PortAudio和开源MP3编码器LAME的v3.100版本。

ASIO

ASIO是专业声卡驱动模式的一种简称。由 Steinberg 公司开发。应用很广泛的个人电脑声卡专业驱动。它的全称是Audio Stream Input Output,直接翻译过来就是音频流输入输出接口的意思。通常这是专业声卡或高档音频工作站才会具备的性能。采用ASIO技术可以减少系统对音频流信号的延迟,增强声卡硬件的处理能力。同样一块声卡,假设使用MME驱动时的延迟时间为750毫秒,那么当换成ASIO驱动后延迟量就有可能会降低到10毫秒以下。——百度百科

ASIO是由德国Steinberg公司所提出的音频流输入输出应用程序,为音频API标准之一。现今贩售的高级声卡多具备此一规格,亦有支持Windows和Mac OS的驱动,已成为业界大多采用的标准。与Mac OS X的Core Audio是同等级的技术。另外Linux方面,也具备低延迟内核。Windows和Mac OS皆拥有支持ASIO的驱动程序。ASIO可实现低延迟、高同步、高吞吐率。其开发目的是为了改善过去OS所搭载的驱动无法进行多通道传输,而提出的改善方案。ASIO可依照机器所能处理的情况下进行多通道、采样率、比特资料处理。——维基百科

我们一般的PC机是不具备ASIO声卡以及ASIO声卡驱动的。不用担心,Audinate公司(全球领先的专业数字网络音频技术供应商)旗下的Dante平台为我们提供了一站式的软件服务。让我们用普通PC机也可以体验到专业级别的视听感受。这里简单用两段话介绍一下Dante是什么。

场景

从小型的礼拜堂和会议室,到大型的摇滚巡演和体育场馆,音频系统都需要麦克风、混音器、处理器、放大器和扬声器之间的连接。这通常意味着需要使用很长的专用模拟电缆,这些模拟电缆既笨重,又难以操作,而且一次只能向一个设备发送一种信号。更换电缆既费力又费钱,而且整条线上会始终伴有噪音和干扰声。再加上视频的话,会更加麻烦,甚至会需要更多种类的专用电缆来进行安装、管理和维护。

解决方案

Dante 用计算机网络替代了 所有 这些连接,轻松地通过纤细的以太网电缆以完美的数字保真度发送 视频或 数百路音频通道。 所有的连接现在均可使用软件管理,从而使路由快速、可读、可靠。 由于所有设备共享同一网络,因此可在 任何 设备之间发送信号,无论它们位于站点的哪个位置,都不需要改变线路。 Dante系统很容易扩展,就像在网络中添加打印机一样。 只需将其它设备连接到任何可用的网络插口,即可使用。

Dante 是更高级的音频视频系统,可将以往所有的连接类型融为一体。Dante 既提供了极为优越的性能,又提高了这些系统的使用性和扩展性,降低了部署成本。

以上是Audinate官网对Dante的介绍。而今天我们要分享的就是一个ASIO音频设备的录音软件,可以同时对多达64路通道的ASIO音频进行录制并编码成MP3或WAV格式。

Dante Virtual Sound

首先,为了能接收音频数据,我们需要先安装Dante Virtual Sound虚拟声卡。直接从官网下载安装即可。该软件提供14天免费试用。虚拟声卡装好后,长这个样子:
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第2张图片
可以设置音频接口、通道数、延迟、网卡接口(音频流数据来自以太网上的其他ASIO设备),也可以在选项里面设备ASIO的相关参数。点击Start启动虚拟声卡后,以太网上的Dante管理器就可以发现这台设备,并进行音频的输入和输出。其实我们熟知的QQ音乐就可以选择输出设备到ASIO虚拟声卡。将QQ音乐播放的音频通过网络输出到其他ASIO设备。
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第3张图片
基本上装上Dante Virtual Sound虚拟声卡后,就可以从虚拟声卡接收数据了。也就具备了从虚拟声卡设备的音频通道进行录音的可能。多台设备使用虚拟声卡还需要Audinate公司的另外两款产品Dante Via 和Dante Controller。基本下载就可使用。后期需付费,还不便宜。

PortAudio

PortAudio,业界使用极为广泛的一个免费、跨平台(Windows/Macintosh OS X/Unix)、开源的音频IO库。使用PortAudio可以很方便的进行音频相关的编程,因为其API极其简单又功能丰富。支持各种操作系统的原生音频APIs:
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第4张图片
PortAudio基本其API都在portaudio.h头文件当中,使用起来也极其简单,官方文档上还提供了丰富的Demo可供参考。官方Tutorial的内容基本就涵盖了使用的几个方面:

  • Writing a Callback Function
  • Initializing PortAudio
  • Opening a Stream Using Defaults
  • Starting, Stopping and Aborting a Stream
  • Closing a Stream and Terminating PortAudio
  • Utility Functions
  • Enumerating and Querying PortAudio Devices
  • Blocking Read/Write Functions

LAME3

LAME,一款MP3高品质编码器程序,目前最好的MP3编码引擎。LAME编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性,配合VBR和ABR参数,音质几乎可以媲美CD音频,但文件体积却非常小。

录音软件

有了以上基础后,我们简单看一下录音软件的流程图:
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第5张图片
其中编码器线程循环从环形队列读取PCM格式的音频数据并送入选择的编码器(MP3/WAV编码器)。编码器将编码输出的音频文件写入本地文件。

看一下直观的录音效果图,由于机器上安装的DVS license过期了,Dante Via也过期了,这里就只看一个使用MME录音麦克风的效果吧。
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第6张图片
录音生成的mp3文件按通道号和时间进行命名:
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第7张图片
最终软件以¥8000的价格交付给了某企业。运行于其服务器上,可以同时对网络中的多路ASIO音频进行录制。且在没有信号的声道上可以自动暂停录音。

大家有任何疑问欢迎与我交流,我的邮箱是[email protected],也可以关注我的微信公众号:私人定制coder
基于PortAudio+LAME3实现的ASIO多通道音频录制(mp3、WAV )_第8张图片

你可能感兴趣的:(c++,Windows,Network,私人定制)