文章目录

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

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

好了,话不多说,先给大家看东西。蓝雨qinglanyu_jun@foxmail.com原创,禁止转载。

整个录音软件采用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天免费试用。虚拟声卡装好后,长这个样子:

可以设置音频接口、通道数、延迟、网卡接口(音频流数据来自以太网上的其他ASIO设备),也可以在选项里面设备ASIO的相关参数。点击Start启动虚拟声卡后,以太网上的Dante管理器就可以发现这台设备,并进行音频的输入和输出。其实我们熟知的QQ音乐就可以选择输出设备到ASIO虚拟声卡。将QQ音乐播放的音频通过网络输出到其他ASIO设备。

基本上装上Dante Virtual Sound虚拟声卡后,就可以从虚拟声卡接收数据了。也就具备了从虚拟声卡设备的音频通道进行录音的可能。多台设备使用虚拟声卡还需要Audinate公司的另外两款产品Dante Via 和Dante Controller。基本下载就可使用。后期需付费,还不便宜。

PortAudio

PortAudio,业界使用极为广泛的一个免费、跨平台(Windows/Macintosh OS X/Unix)、开源的音频IO库。使用PortAudio可以很方便的进行音频相关的编程,因为其API极其简单又功能丰富。支持各种操作系统的原生音频APIs:

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音频,但文件体积却非常小。

录音软件

有了以上基础后,我们简单看一下录音软件的流程图:

其中编码器线程循环从环形队列读取PCM格式的音频数据并送入选择的编码器(MP3/WAV编码器)。编码器将编码输出的音频文件写入本地文件。

看一下直观的录音效果图,由于机器上安装的DVS license过期了,Dante Via也过期了,这里就只看一个使用MME录音麦克风的效果吧。

录音生成的mp3文件按通道号和时间进行命名:

最终软件以¥8000的价格交付给了某企业。运行于其服务器上,可以同时对网络中的多路ASIO音频进行录制。且在没有信号的声道上可以自动暂停录音。

大家有任何疑问欢迎与我交流,我的邮箱是qinglanyu_jun@foxmail.com,也可以关注我的微信公众号:私人定制coder

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

  1. vlc录制网络流_基于PortAudio+LAME3实现的ASIO多通道音频录制mp3

    今天给大家分享一个之前做的ASIO多通道音频录音机程序,可以实时对多达64通道的ASIO音频进行录制MP3或WAV. 好了,话不多说,先给大家看东西. 整个录音软件采用Qt编写,使用了开源库PortA ...

  2. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存

    pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存 目录 输出结果 代码实现 输出结果 代码实现 # -*- codi ...

  3. php项目网页音乐播放器插件,基于HTML5 canvas和Web Audio的音频播放器插件

    wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件.通过wavesurfer.js你可以使用它来制作各种HTML5音频播放器,它可以在各种支持 Web A ...

  4. 基于TI C55x架构的定点TMS320VC5509A音频专用DSP处理器开发板规格书

    TL5509-EVM是一款基于广州创龙TI C55x架构的定点TMS320VC5509A低功耗核心板SOM-TL5509设计的高端DSP开发板,底板采用沉金无铅工艺的2层板设计,它为用户提供了SOM- ...

  5. python 循环播放音乐_pyaudio:基于pyaudio利用Python编程实现播放音频mp3、wav等格式文件...

    基于pyaudio利用Python编程实现播放音频mp3.wav等格式文件 T1.while循环输出数据流的方法def play(): chunk=1024 #2014kb wf=wave.open( ...

  6. 基于C语言实现PCM音频流或音频文件重采样(48K到16K)

    基于C语言实现PCM音频流或音频文件重采样(48K到16K) 由于云厂商SDK需要的音频采样率是16K的,而SFU回调上来的流是48K的,所以我们还需要对PCM音频数据进行重采样处理. ​ 转换的原理 ...

  7. pyaudio:基于pyaudio利用Python编程实现播放音频mp3、wav等格式文件

    基于pyaudio利用Python编程实现播放音频mp3.wav等格式文件 目录 输出结果 实现代码 输出结果 实现代码 T1.while循环输出数据流的方法 def play():chunk=102 ...

  8. Camera,音频录制与Vitamio框架

    总览 一.Camera 1.概述 2.所需权限声明 3.使用内置的摄像头应用程序 具体步骤 案例 二.音频录制-MediaRecord 1.使用步骤 2.所需权限 3.简单示例 4.优缺点以及注意事项 ...

  9. React Native 音频录制例子来解惑入门

    React Native 音频录制例子来解惑入门 React Native 音频录制例子来解惑入门 前言 React Native工程目录结构 从indexandroidjs开始讲起 说说怎么用开源项 ...

最新文章

  1. distill bert 相关问题
  2. 自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)
  3. TLS/SSL测试工具
  4. 怎么获取排他网关下的所有userTask?
  5. layui 多个文件上传控件 整合缩减代码
  6. spring WebSocket详解
  7. 两个gcc_KDD 2020 | GCC:图上的Contrastive Coding
  8. gcc编译多个源代码文件的过程(引出makefile)
  9. JavaScript中的点击事件
  10. MySQL基于日志还原数据
  11. H264视频编码原理基础分析
  12. origin柱状图坐标标签_使用Origin绘制双Y轴柱状图的方法
  13. 目前最全的汉语拼音表 (另附韦氏拼音表, 非常规拼音表)
  14. PS教程:一分钟搞定 超简单PS皮肤美白方法
  15. DIY树莓派小车(一)树莓派4B+TB6612FNG驱动直流电机
  16. 网站注册登录等短信验证码
  17. 微服务 ZooKeeper ,Dubbo ,Kafka 介绍应用
  18. Python金融大数据分析:用pandas处理金融时间序列数据的基础知识
  19. A记录和CNAME记录的区别及介绍
  20. Android学习笔记 56. TabLayout 选项卡布局

热门文章

  1. 你还在用挂历记录大事件?试试这款动态日历表!
  2. linux设备和驱动匹配的方法,Linux使用设备树的i2c驱动与设备匹配方式
  3. ASA5520升级内存记录
  4. 如何看待软件开发 ?
  5. 针对可视化平台页面组件的数据库设计
  6. 37种传感器(十四)之循迹模块+Stduino NanoUNO
  7. 「自控原理」5.2 频域稳定判据、频域分析
  8. [ZT稍长]毫不含糊地反对通货膨胀
  9. mac版思维导图软件,思维导图怎么画
  10. MFC窗口置顶代码实现