audio:音频系统

dongshenscut dongshenscut     2023-03-31     113

关键词:

1. Codec – (Coder-Decoder)

英文缩写:Codec, 支持视频和音频压缩(CO)与解压缩( DEC ) 的编解码器或软件。CODEC技术能有效减少数字存储占用的空间,在计算机系统中,使用硬件完成CODEC可以节省CPU的资源,提高系统的运行效率。

Codec对AD变换后的音视频数字信号的传输进行编码、压缩,在接收端对信号解码。一般用在视频会议、流媒体、视频应用等场合。

CODEC就是多媒体数字信号编解码器,主要负责数字->模拟信号转换(DAC)和模拟->数字信号的转换(ADC)。不管是音频加速器好,还是I/O控制器好,他们输入输出的都是纯数字信号,我们要使用声卡上的Line Out插孔输出信号的话,信号就必须经过声卡上的CODEC的转换处理。可以说,声卡模拟输入输出的品质和CODEC的转换品质有着重大的关系,音频加速器或I/O控制器决定了声卡内部数字信号的质量,而CODEC则决定了模拟输入输出的好坏。

2. 物理结构

音频编解码器Codec负责处理音频信息,包括ADC,DAC,Mixer,DSP,输入输出以及音量控制等所有与音频相关的功能。

            Codec与处理器之间通过I2C总线和数字音频接口DAI进行通信。

            I2C总线 - 实现对Codec寄存器数据的读写。

    DAI - 实现音频数据在CPU和Codec间的通信。

以Codec作为研究对象,它的输入有Mic(Microphone),PhoneIn电话信号等,输出有耳机HP(HeadPhone),扬声器Speaker和PhoneOut电话信号。另外需要注意在Codec与CPU端间也有音频数字信号的输入输出。

技术图片

 3. 应用情景

3.1. 播放音乐

技术图片

 3.2. 录音 

 技术图片

 3.3. 打电话

技术图片

 3.4. 接电话

技术图片

 3.5. 通过蓝牙打电话

技术图片

 3.6. 通过蓝牙接电话

技术图片

 4. Android音频系统架构

Android的音频系统拥有一个比较标准和健全的架构,从上层应用,java framework服务AudioMananger,本地服务AudioFlinger,抽象层AlsaHAL,本地库,再调用external的Alsa-lib外部支持库,最后到底层驱动的codec,可谓"五脏俱全"。

技术图片

js解决音频audio在ios系统下无法自动播放问题

...踩坑必须!!!点击后才调用xxx.play()这个方法但是我们音频链接数据如果是网络请求而来的,那我们可以这样做:1.在无播放链接的情况下先调用一次xxx.play(),然后暂停xxx.pause()2.请求到数据以后,替换链接3.判断readyState的值0=HA... 查看详情

android9audio系统笔记:音频路由实现——从audiotrack到audiohal(代码片段)

...#xff0c;以AudioTrack创建为例创建AudioTrack的路由选择如何定制音频路由1、policy路由配置2、修改AudioControl的sContextToBusMap对应关系小结上一篇介绍了AudioFlinger的初始化,接下来对音频路由进行介绍。 查看详情

android9audio系统笔记:audioflinger音频流处理流程(代码片段)

好久没写了,今天碰巧有个小伙伴问我关于音频流这一块的,久了还有点记不起来,我就顺便写一下,后面就不用又找一遍代码了,所谓好记性不如烂笔头。所以,这里是关于如何从AudioTrack写入数据到audio... 查看详情

android9audio系统笔记:audioflinger音频流处理流程(代码片段)

好久没写了,今天碰巧有个小伙伴问我关于音频流这一块的,久了还有点记不起来,我就顺便写一下,后面就不用又找一遍代码了,所谓好记性不如烂笔头。所以,这里是关于如何从AudioTrack写入数据到audio... 查看详情

webrtc音频系统之audio技术栈简介-2(代码片段)

...ACM是audiocodingmodule的简称。WebRTC的audiocoding模块可以处理音频接收和发送,acm2目录是接收和发送的API实现。每个音频发送帧使用包含时长为10ms音频数据,通过Add10MsData()接口提供给音频编码模块,音频编码模块使用对... 查看详情

html5audio(音频)

[HTML5Audio(音频)HTML5提供了播放音频文件的标准。互联网上的音频直到现在,仍然不存在一项旨在网页上播放音频的标准。今天,大多数音频是通过插件(比如Flash)来播放的。然而,并非所有浏览器都拥有同样的插件。HTML5规定... 查看详情

audio音频

...实现很多高大上的功能 audio 相关的api<audiosrc=”音频的地址”>备用 查看详情

十:audio音频

...说明idString video组件的唯一标识符srcString 要播放音频的资源地址loopBooleanfalse是否循环播放controlsBooleantrue是否显示默认控件posterString 默认控件上的音频封面的图片资源地址,如果controls属性值为false则设置poster无效nameS... 查看详情

[h5]audio音频

<body><audiosrc="../../audio/一笑倾城.mp3"controls="controls">您的浏览器暂不支持播放</audio><br/><br/><br/><!--方法2,自定义界面显示--><audioid="audio"src="../../audio/演员.mp3">您 查看详情

audio_音频

PC平台下doubango声音播放流程: 其中jitter_buffer_put和jitter_buffer_get两个函数是调用libspeexdsp中的函数。  查看详情

利用js和audio标签读取音频文件并计算音频时长(代码片段)

...上的内容实现了具体解决方案3.*参考*二、场景:查看音频文件的时长1.尝试2.解决方案3.*参考*附测试地址和代码一、场景:系统需要动态修改声音文件并播放声音1.尝试(1)import方式直接引入音频文件尝试过awaitimport(“路径... 查看详情

audio子系统之audiorecord.read(代码片段)

...udioRecord.startRecording》中已经介绍了AudioRecord如何开始录制音频,接下来,继续分析AudioRecord方法中的read的实现      函数原型:     publicintread(byte[]audioData,intoffsetInBytes,intsizeInBytes)      &... 查看详情

使用 iPython.display.Audio 生成一系列音频

】使用iPython.display.Audio生成一系列音频【英文标题】:GenerateseriesofaudiotonesusingiPython.display.Audio【发布时间】:2015-12-1318:17:40【问题描述】:我想在iPython中生成连续的音频。我见过pyo,但我只能让它在terminal中工作……如果可能... 查看详情

将 unsigned char 音频转换为 short

】将unsignedchar音频转换为short【英文标题】:Convertunsignedcharaudiotoshort【发布时间】:2018-07-2105:34:33【问题描述】:试图将unsignedchar转换为短。数据是音频。我的系统是LittleEndian。我正在做的是这样的:shortbuf1[audio_size/2];for(size_ti=... 查看详情

html5音频audio

在HTML5标准网页里面,我们能够运用audio标签来完毕我们对声音的调用及播放。下面是最常常见到的运用HTML5三种基本格式:1.最少的代码<audiosrc="song.ogg"controls="controls"></audio>2.带有不兼容提醒的代码<... 查看详情

没有 <audio> 元素的 WebRTC 音频 (RTCMultiConnection)

】没有<audio>元素的WebRTC音频(RTCMultiConnection)【英文标题】:WebRTCaudioheardwithout<audio>element(RTCMultiConnection)【发布时间】:2014-09-1608:02:01【问题描述】:即使在DOM中似乎没有插入音频元素,也会听到音频。场景:创建没有流... 查看详情

Core Audio(音频单元)音频会话和 MPVolumeView

】CoreAudio(音频单元)音频会话和MPVolumeView【英文标题】:CoreAudio(AudioUnits)audiosessionandMPVolumeView【发布时间】:2013-10-1115:08:07【问题描述】:我在开发一个VOIP应用程序。我使用CoreAudio音频单元来播放和录制音频。我需要能够操... 查看详情

html5音频audio属性

...tuicool&utm_medium=referralaudio的控制函数主要有:load()加载音频、视频软件,通常不必调用,除非是动态生成的元素,用来在播放前预加载play()加载并播放音频、视频文件,除非文件已经暂停在其他位置,否则默认重头开始播放pau... 查看详情