首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android多媒体之SoundPool+pcm流的音频操作

零、前言 今天比较简单,先理一下录制和播放的四位大将 再说一下SoundPool的使用和pcm转wav 讲一下C++文件如何在Android中使用,也就是传说中的JNI 最后讲一下变速播放和变调播放...四类.png ---- 1.AudioRecord(基于字节流录音) 优点: 对音频的实时处理,适合流媒体和语音电话 缺点: 输出的是PCM的语音数据,需要自己处理字节数据 如果保存成音频文件不能被播放器播放...PCM采集的数据需要AudioTrack播放,AudioTrack也可以将PCM的数据转换成其他格式 ---- 1.1:音频来源:int audioSource ?....mp3,.3gp,.aac,.mp4,.webm) 操作简单,不须自己处理字节流,传入文件即可 缺点: 无法实现实时处理音频,输出的音频格式少。...如两倍速时,采样频率*2,波的周期减半,本来2s的波,1s就能放完 由于声音频率变化,声音的效果也随之变化 如2倍速时:频率快,高音,声音尖,0.5倍速时:频率慢,低音,声音沉 2倍速是就像一些短视频的倍速变声配音

2.8K20

【FFmpeg】SDL 音视频开发 ⑦ ( SDL 播放 PCM 音频数据 | 提取 PCM 格式数据 | 设置音频参数 | 打开音频设备 | 设置播放回调函数 | 播放音频数据 | 关闭音频设备 )

, 是高保真数据 , 没有任何声音损失 , 一旦转为 aac / mp3 格式 , 就会不可逆的损失部分声音信息 , 如 : 高频信号 / 低频信号 / 时域掩盖信息 / 频域掩盖信息 等 都在音频压缩时被删除...描述信息 , 文件的第一个字节就是 第一个采样的数值数据 , 播放 PCM 数据时必须知道该音频的 采样率 通道数 采样位数 等参数 ; 这里使用 FFmpeg 命令行工具从视频中提取 PCM 数据..., 采样率 是 每秒钟采集多少个音频样本 ; -ac 2 : 设置音频通道数为 2 , 双声道 立体声 ; -f s16le : 指定输出格式为 s16le , 这是音频的原始 PCM 数据格式 ,...ar 44100 -ac 2 -f s16le 44100_16bit_2ch.pcm 命令 , 可以播放上述提取的 PCM 音频数据 ; 二、SDL 播放 PCM 流程 SDL 播放 PCM 音频 主要分为以下几个步骤...库中的 PCM 音频播放 回调函数类型 , 当 SDL 播放完当前音频缓冲区中的数据后 , 会自动回调该函数 , 为音频设备提供后续音频播放数据 , 该函数的主要作用如下 : 提供音频数据 : 每当音频设备需要更多的数据时

42910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

    设置编码器的输出格式 : 这里设置输出格式 0, 就是 FAAC 将 PCM 采样进行编码, 编码出的格式是 AAC 原始数据 , 即没有解码信息的 ADIF 和 ADTS 的 AAC 纯样本裸数据 ;...PCM 音频样本个数 FAAC 编码器最多一次可以接收的样本个数 unsigned long *mMaxOutputBytes 参数 : 输出数据最大字节数...Format ) , 只有一份音频解码信息 , 存储在文件开头 这种格式适合存储音频文件 , 节省空间 , 但是必须从开始播放才可以 , 从中间位置无法播放 ; 音频数据传输流格式...RTMP 推流时, 不使用上述两种格式 推流视频时, 先将 SPS, PPS 解码数据包的信息推流到服务器上 推流音频时, 也是将解码相关的数据先推流到服务器中...音频数据标签 和 后续 AAC 音频数据标签 这里设置输出格式 0, 就是 FAAC 将 PCM 采样进行编码, 编码出的格式是 AAC 原始数据 即没有解码信息的 ADIF

    4.5K20

    iOS AVDemo(1):音频采集,免费获取全部源码丨音视频工程示例

    其中可以封装:音频采集后、编码后、解码后的数据(如:PCM 数据、AAC 数据);视频编码后的数据(如:H.264 数据)。...:音频参数,如:数据格式、声道数、采样位深、采样率等。...// 按照上面采集音频参数的设置:PCM 为声道交错格式、每帧的声道数为 2、采样位深为 16 bit。这样每帧的字节数是 4 字节(左右声道各 2 字节)。...2、采集音频存储为 PCM 文件 我们在一个 ViewController 中来实现音频采集逻辑并将采集的音频存储为 PCM 数据。...3、用工具播放 PCM 文件 完成音频采集后,可以将 App Document 文件夹下面的 test.pcm 文件拷贝到电脑上,使用 ffplay 播放来验证一下音频采集是效果是否符合预期: $ ffplay

    1.1K40

    10.QT-QAudioOutput类使用

    本章需要用到的类如下: QAudioDeviceInfo类提供音频输出设备 QAudioFormat类提供音频参数设置 QAudioOutput类提供了用于将PCM原始音频数据发送到音频输出设备的接口。...QAudioOutput::bufferSize() const; //获取缓冲区大小,默认为35280,需要start()后,才分配buff int QAudioOutput::bytesFree() //返回音频缓冲区中可用的空闲字节数...int QAudioOutput::periodSize(); //周期大小(以字节为单位),每播放一次音频数据所需多少个数据量                     //periodSize用来防止缓冲区欠运行和确保不间断回放所需的数据量...,正在解析中 break; } } 4.补充说明 由于QAudioOutput支持的输入数据必须是原始数据,所以播放mp3,WAV,AAC等格式文件,需要解封装后才能支持播放...所以接下来,我们使用ffmpeg+QAudioOutput来实现一个简单的音频播放器

    2.8K20

    iOS下解码AAC并播放

    前言 今天我们介绍一下如何在iOS进行AAC解码,并使用AudioUnit播放解码后的PCM数据。 基本流程 iOS系统对音频处理做了三层封装。包括应用层、服务层和硬件层。如下图所示: ?...在iOS下进行音频解码及播放的大体流程如下: 打开 AAC 文件。 获取音频格式信息。如通道数,采样率等。 从 AAC 文件中取出一帧 AAC 数据。...下我们再看一下如何将解码后的 PCM 数据播放出来。 播放 PCM 我们使用 iOS 中的 AudioUnit 工具来播放 PCM。AudioUnit的使用步骤如下: 设置音频组件描述。...其作用是通过该描述信息,可以在iOS中找到相关的音频组件。 根据描述查找音视组件。 创建 AudioUnit 实例。 设置 AudioUnit 属性。 播放 PCM。...从 AAC 文件中读取一个 AAC 音频帧。 通过 AudioToolbox 解决 AAC 到 PCM。 通过 AudioUnit 播放 PCM。 循环执行 3-5步,直到文件结束。

    3.5K21

    Android 音频PCM数据的采集和播放,读写音频wav文件

    本文目的:使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件 准备工作 Android提供了AudioRecord和MediaRecord。...PCM表示的是音频文件中随着时间的流逝的一段音频的振幅。Android在WAV文件中支持PCM的音频数据。 WAV WAV,MP3等比较常见的音频格式,不同的编码格式对应不通过的原始音频。...PCM打包成WAV PCM是原始音频数据,WAV是windows中常见的音频格式,只是在pcm数据中添加了一个文件头。...初始化AudioTrack时,要根据录制时的参数进行设定。 代码示例 工具类WindEar实现音频PCM数据的采集和播放,与读写音频wav文件的功能。...wav文件的header /** * 音频录制器 * 使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件 * 检查权限

    3.5K30

    语音项目——Android录音学习

    AudioRecord:主要实现对音频实时处理以及边录边播功能,相对MediaRecorder比较专业,输出是PCM语音数据,如果保存成音频文件,是不能够被播放器播放的,所以必须先写代码实现数据编码以及压缩...2、优、缺点 录音方式 优点 缺点 AudioRecord(基于字节流录音) 可实现语音的实时处理,边录边播,对音频的实时处理,AudioTrack更接近底层。...输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用AudioTrack进行处理。API还有待完善,常见的暂停功能都不支持。...但 PCM语音数据,如果保存成音频文件,是不能够被播放器播放的。 2、播放PCM文件 Audacity工具可以导入pcm原始文件,并且提供了波形图查看和播放功能。...操作流程是: 文件 => 导入 => 原始数据 => 设置PCM数据格式=> 导入 具体效果图如下: ? ?

    3.3K10

    科普常识:常见音频参数解析

    如果在计算机加上相应的音频卡—就是我们经常说的声卡,我们可以把所有的声音录制下来,声音的声学特性如音的高低等都可以用计算机硬盘文件的方式储存下来。...反过来,我们也可以把储存下来的音频文件用一定的音频程序播放,还原以前录下的声音。 二、采样频率         指每秒钟取得声音样本的次数。...但音频帧跟编码格式相关,它是各个编码标准自己实现的。因为如果以PCM(未经编码的音频数据)来说,它根本就不需要帧的概念,根据采样率和采样精度就可以播放了。...因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。        ...降低采样指标是不可取的,因此专家们研发了各种压缩方案。最原始的有DPCM、ADPCM,其中最出名的为MP3。所以,采用了数据压缩以后的码率远小于原始码。

    2.9K00

    音视频入门之音频采集、编码、播放

    今天我们学习音频的采集、编码、生成文件、转码等操作,我们生成三种格式的文件格式,pcm、wav、aac 三种格式,并且我们用 AudioStack 来播放音频,最后我们播放这个音频。...通常我们选择ENCODING_PCM_16BIT和ENCODING_PCM_8BIT PCM代表的是脉冲编码调制,它实际上是原始音频样本。...答:按照流程走完了,数据是进去了,但是现在的文件里面的内容仅仅是最原始的音频数据,术语称为raw(中文解释是“原材料”或“未经处理的东西”),这时候,你让播放器去打开,它既不知道保存的格式是什么,又不知道如何进行解码操作...而AudioTrack只能播放已经解码的PCM流,如果对比支持的文件格式的话则是AudioTrack只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。...通常我们选择ENCODING_PCM_16BIT和ENCODING_PCM_8BIT PCM代表的是脉冲编码调制,它实际上是原始音频样本。

    3.6K00

    【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

    , 解析出原始的音视频数据进行播放 ; 视频采样编码封装 的过程 是下图 红色矩形框内的过程 : 二、音频采集处理流程 音频文件从录音到生成文件的全过程 : 采集音频帧 : 麦克风 硬件 负责 采集音频...音频编码 ; 视频编码 : 在 采样帧队列 ( Frame Queue ) 中的 PCM 原始音频数据 , 体积非常大 , PCM 就是 WAV 格式的音频 , 没有经过任何压缩 , 音频必须要进行编码...44100 \times 2 \times 2 字节大小 ; 音频包队列 : 将 采样帧 编码 后 , 放到 音频包 中 , 然后将若干 音频包 放到 " 音频包队列 ( Packet Queue..., 解析出原始的音视频数据进行播放 ; 音频采样编码封装 的过程 是下图 红色矩形框内的过程 : 三、音视频文件解封装播放流程 ---- 拿到 音视频 文件后 , 播放该文件 , 需要经过以下步骤才能播放出来...字幕 等效果 ; 音视频播放 : 处理后的音频 送到 扬声器 / 耳机 等设备中进行播放 ; 处理后的视频 送到 显示器 设备中播放 ;

    77610

    【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

    只有 知道该数据的 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始的音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩...-ar 48000 -ac 2 -f s16le output.pcm 命令 , 播放上述 output.pcm 音频数据 ; PCM 数据是 纯 音频裸数据 , 没有该音频的 格式信息 , 需要在命令行中额外指定...采样率 , 采样位数 , 通道数 , 如果 指定错了参数 , 播放出来的就是随机噪音 ; 4、提取 PCM 音频数据 - 使用 -sample_fmt 参数 执行 ffmpeg -i input.mp4...命令 , 播放上述 提取的 output.wav 音频数据 ; WAV 格式的文件可以直接使用 ffplay 播放 , 不需要设置 采样率 / 采样位数 / 通道数 等 额外参数 ; 将上述提取的 WAV...二、查询文档方法 1、PCM 采样位数查询 上面播放 PCM 格式的音频文件 , 涉及到了设置 PCM 采样位数 , 可以通过如下的命令进行查询 ; 执行 ffmpeg -muxers | findstr

    2.6K10

    使用 AudioTrack 播放音频轨道

    播放解码后的音频数据(PCM)。...量化深度的大小影响到声音的质量,显然,位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。...「WAV 文件头/图片来自Google」 PCM 是音频处理中频繁接触的格式,通常我们对音频的处理都是基于 PCM 流,如常见的音量调节, 变声, 变调等特性。...AudioTrack 是播放音频的另外一种方式 「如果你感兴趣还可以了解下 SoundPool」, 并且只能用于播放 PCM 数据。 AudioTrack API 概述 : 1....写入数据 /** * @param audioData 保存要播放的数据的数组 * @param offsetInBytes 在要写入数据的audioData中以字节表示的偏移量 *

    2.1K31

    音视频之音频相关概念介绍

    信号本身有一个频率,而采样函数也有一个频率,根据Nyquist-Shannon采样定理,如果要正确获取原始信号的信息,那么采样频率至少需要是原始信号频率的2倍。...采样位数 在用数字信号表示音频信号的时候,某个信号可以用8位数字,也就是1个字节表示,也可以用2个字节标记。用的位数越多,表示的信号等级也就越多,目前用的最多的是2个字节。...采样时长 按照前面的介绍,就可以理解单位时间内采样的音频数据大小计算了,1s的音频数据大小是: image.png f是采样频率,Channels是声道数,BytesPerSample是采样字节数。...耳返 耳返就是在采集端建一个回路,可以将采集的数据实时播放出来。 PCM PCM(pulse code modulation)脉冲编码调制,就是原始的音频信号,未经过压缩那种。...在分析音频问题的时候,用的最多的方法就是导出各个阶段的PCM数据,看是哪个阶段出的问题。这儿的阶段就是采集,重采样,3A,混音,上行,下行,重采样,混音,播放。

    1.3K10

    从wav到Ogg Opus 以及使用java解码OPUS

    WAV PCM是原始语音,依据采样率的定义,我们知道要播放PCM,需要知道采样率,因此需要一个文件格式可以封装PCM,wav就是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息...wav文件前44个字节,定义了采样率,channel等参数,播放器通过这个数据就可以播放PCM数据了。...MP3 wav 很好的解决了PCM播放的问题,但是PCM实在是太大了,因此出现了mp3等音频格式,通过一定的压缩算法压缩语音,以便于互联网传输分享。...OPUS一般是分帧编码,比如一个320采样点(640字节)的数据,编码后为70多个字节,和PCM一样,编码后的OPUS不能直接播放: 无法从文件本身获取音频的元数据(采样率,声道数,码率等) 缺少帧分隔标识...Opus: 以低和高可变比特率处理语音,音乐和通用音频(每通道≈6-510kbit / s) 无损 FLAC 处理文件和高保真音频数据 未压缩 OggPCM 处理未压缩的PCM音频,与WAV类似

    3.3K31

    python WAV音频文件处理—— (1)读写WAV文件

    如果你用音频软件(如Audacity)打开WAV文件,可能看到这样的波形 Audacity中的波形--振幅随时间变化 WAV 文件的结构 WAV 音频文件格式是一种二进制格式,结构如下: WAV文件格式...Header中的参数说明: • Encoding:编码。样音频信号的数字表示。可用的编码类型包括未压缩的线性脉冲编码调制 (PCM) 和一些压缩格式,如 ADPCM、A-Law 或 μ-Law。...为了忠实地表现音乐,大多数 WAV 文件使用立体声 PCM 编码,其中 16 位有符号整数以 44.1 kHz 采样。这些参数对应于标准 CD 质量的音频。...混合和立体声 为了合成立体声, 我们需要制造左右两个声道的声音,并在每一帧交替播放。...到目前为止,您一直使用单个字节(8位)来表示每个音频样本,以保持简单。

    72010

    音频基础知识 - PCM 浅析

    PCM浅析 最近有个需求:对音频裁剪时,裁剪条的纵坐标必须是音频音量,以帮助用户更好的选择音频区域,所以就需要快速准确的提取出音频的音量列表。...数字音频:通过采样和量化获得的离散的、数字化的音频信号,即:计算机可以处理的二进制的音频数据。 相反的,当通过扬声器播放声音时,计算机内部的数字信号通过D/A转换,还原成了强弱不同的电压信号。...所以为了更好的归一化处理,我们会对FFmpeg解码出的PCM进行重采样,统一采样成AV_SAMPLE_FMT_S16P格式,即:每个采样点是两字节的有符号short类型,并且按照Planar方式存储。...PCM播放 PCM是原始采样数据,必须指定采样率、声道数和采样位数(大小端)才能播放。...PCM数据:文件 -> 导入 -> 原始数据,然后选择对应的采样率、声道数、采样位数和大小端就可以播放了。

    4K21

    miniaudio:音频开源库的首选

    软件开发中遇到需要播放音频文件时,可以使用操作系统提供的API也可以依赖于第三方库,通常第三方库多因其简单易用的接口而成为首选。miniaudio便是游戏的音频开源库之一。...miniaudio 是一个轻量级的音频播放、采集、播放+采集的库,专注于提供简单易用的 API 和跨平台的音频播放功能。...=反而底层接口,开发者可以获得操作音频原始数据的机会。 接下来将分别使用上层接口、底层接口来播放本地文件以及录制声音。...但是底层接口,使得我们获得了在回调函数data_callback操作pcm数据的可能,当然若没有修改pcm的需求时,可以直接使用上层的接口。...总结 miniaudio作为一个header-only且MIT协议的开源库,极大地方便了在项目中的集成。同时,miniaudio支持播放、采集、采集同时播放的功能,可视为音频开源库的首选。

    20410

    腾讯云流式TTS语音合成客户端实现

    pcm原始音频流,本文将从鉴权开始,详细介绍流式tts的客户端实现。...消息体由数量未定的块组成,并以最后一个大小为0的块为结束。 每一个非空的块都以该块包含数据的字节数(字节数16进制以表示)开始,跟随一个CRLF (回车及换行),然后是数据本身,最后块CRLF结束。...,数据分为两种,opus压缩和pcm原始音频流,题主了解到opus拥有较好的压缩比(10:1),可以很好的节省传输时间和网络带宽。...opus源码地址 TTS数据解析 这里主要参考官网的java示例,循环读取数据,按以下格式说明不断读取头/序号/长度/音频数据,直到到达数据末尾。...TTS完成解析的数据都经由YoutuOpusDecoder类进行播放,此处主要封装了两个功能,第一个功能是封装了AudioTrack播放pcm原始音频,第二个是将解析完成的音频不断送入播放器 完整代码如下

    9.2K41

    音频基础知识

    PCM技术就是把声音从模拟信号转化为数字信号的技术,即对声音进行采样、量化的过程,经过PCM处理后的数据,是最原始的音频数据,即未对音频数据进行任何的编码和压缩处理。...原始模拟音频数据如下 按照固定频率进行采样,得到 最后,对采样后的数据选择合适精度进行量化: 采样 是指把物理信号转化为数字信号的过程。...压缩 PCM数据是最原始的音频数据,完全无损,所以PCM数据虽然音质优秀但体积庞大,为了解决这个问题先后诞生了一系列的音频格式,这些音频格式运用不同的方法对音频数据进行压缩,其中有无损压缩和有损压缩两种...ALAC、APE、FLAC 有损压缩:消除冗余信息,如人耳能听到的声音为 20Hz - 20000Hz 以内,所以可以将此范围外的声音去除掉。...overrun,录制时,数据都满了,应用来不及取走;underrun,需要数据来播放,应用来不及写入数据 以FFmpeg中常见的PCM数据格式 s16le 为例:它描述的是有符号16位小端PCM数据

    1.5K30
    领券