[FFmpeg + Android AudioRecorder 音频录制编码] 前文利用 FFmpeg 对 Android Camera2 采集的预览帧先进行渲染,然后利用 OpenGL 添加滤镜,最后将渲染结果进行编码生成...本文将利用 Android AudioRecorder 采集 PCM 音频,然后利用 FFmpeg 对其编码生成 aac 文件。...提前预告下,在该系列的下一篇文章将介绍 FFmpeg 同时对 Android Camera 采集的预览帧和 AudioRecorder 采集的音频数据进行编码,生成一个 mp4 文件。...[FFmpeg + Android AudioRecorder 音频录制编码] AudioRecorder 使用 这里利用 Android AudioRecorder API 采集音频 PCM 裸数据,...代码实现 FFmpeg 编码音频数据跟编码视频数据实现一样,Android AudioRecorder 通过 jni 将 PCM 数据传递到 Native 层队列中,供 FFmpeg 编码使用。
本文将利用 Android AudioRecorder 采集 PCM 音频,然后利用 FFmpeg 对其编码生成 aac 文件。...提前预告下,在该系列的下一篇文章将介绍 FFmpeg 同时对 Android Camera 采集的预览帧和 AudioRecorder 采集的音频数据进行编码,生成一个 mp4 文件。 ?...FFmpeg + Android AudioRecorder 音频录制编码 AudioRecorder 使用 这里利用 Android AudioRecorder API 采集音频 PCM 裸数据,然后通过...音频的编码流程 AudioRecoder 采集的 PCM 音频放入音频队列中,子线程音频编码循环不断从队列中取数据进行编码,最后将编码数据写入媒体文件。...代码实现 FFmpeg 编码音频数据跟编码视频数据实现一样,Android AudioRecorder 通过 jni 将 PCM 数据传递到 Native 层队列中,供 FFmpeg 编码使用。
文章目录 一、 音频数据采集、编码 二、 AAC 高级音频编码 三、 FAAC 编码器 四、 Ubuntu 18.04.4 交叉编译 FAAC 编码器 一、 音频数据采集、编码 ---- 1 ....音频数据采集 : Android 中有两种方式可以采集音频数据 ; ① Java 层使用 AudioRecord ; ② Native 层使用 OpenSL ES ; 2 ....音频数据编码 : ① 视频数据回顾 : 手机使用 Camera 采集 NV21 格式的图像数据 , x264 编码库将图像数据编码成 H.264 格式的视频数据 ; ② 音频数据编码 : 手机端采集 PCM...音频采样数据 , FAAC 编码库将 PCM 采样编码成 AAC 格式的音频数据 ; 二、 AAC 高级音频编码 ---- 1 ....高级音频编码 ( Advanced Audio Coding , AAC ) : ① MPEG-2 AAC 编码 : 初期 AAC 编码时基于 MPEG-2 有损数字音频压缩编码标准 , 称为 MPEG
声波 这里为啥讲到了声波,讲到了我们的中学物理上的知识,因为我想大家能从根本理解后面音频编码的各种参数以及原因。当然这些知识网上都能搜到,我只是整合一下。...FFmpeg编码PCM文件 需求:通过FFmpeg将PCM文件编码成AAC文件,最终的文件我们可以进行播放。 有朋友奇怪为什么要讲将PCM编码为AAC,而不是用Android设备采集再编码输出?...我这样介绍是有特殊考虑的,因为从音频采集到编码输出中间会有很多的坑,如果直接上手这一步,可能会出现各种问题。...s", "编码器打开失败!...\n"); return -1; } 有朋友可能出现编码器打开错误,如果在第三步设置格式时使用的AV_SAMPLE_FMT_S16,那就会打开失败,因为FFmpge默认编码器支持的输入格式只能是
文章目录 一、 FAAC 编码器编码 AAC 音频采样数据 二、 封装 RTMP 音频数据头 三、 封装 RTMP 音频数据类型 四、 拷贝 AAC 音频数据到 RTMPPacket 数据包中 五、 设置数据包大小...六、 设置绝对时间、数据类型、RTMP 通道、头类型 七、 FAAC 编码器编码代码示例 一、 FAAC 编码器编码 AAC 音频采样数据 ---- 1 ....44100 Hz 采样 , 16 位采样位数 , 立体声 ; ② AE 含义 : AAC 格式 , 44100 Hz 采样 , 16 位采样位数 , 单声道 ; 参考博客 【Android RTMP】...音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 ) 、四、 音频解码配置信息、 2....---- AAC 音频数据类型 : 如果是编码的音频采样数据 , 类型是 01 , 如果是 AAC 解码信息 , 类型是 00 ; 这里是 01 类型 , AAC 音频采样数据 ; // 编码出的声音
文章目录 一、 FAAC 编码器编码 AAC 音频解码信息 二、 封装 RTMP 音频数据头 三、 封装 RTMP 音频数据类型 四、 拷贝 AAC 音频数据到 RTMPPacket 数据包中 五、 设置数据包大小...六、 设置绝对时间、数据类型、RTMP 通道、头类型 七、 FAAC 编码器编码代码示例 一、 FAAC 编码器编码 AAC 音频解码信息 ---- 推流 AAC 音频数据之前 , 需要先将 AAC...44100 Hz 采样 , 16 位采样位数 , 立体声 ; ② AE 含义 : AAC 格式 , 44100 Hz 采样 , 16 位采样位数 , 单声道 ; 参考博客 【Android RTMP】...音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 ) 、四、 音频解码配置信息、 2....---- AAC 音频数据类型 : 如果是编码的音频采样数据 , 类型是 01 , 如果是 AAC 解码信息 , 类型是 00 ; 这里是 00 类型 , AAC 音频解码信息类型 ; //
PCM编码 PCM就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。简而言之PCM就是对模拟信号先抽样,再对样值幅度量化,编码的过程。...例如听到的声音就是模拟信号,然后对声音采样,量化,编码产生数字信号。...相对自然界声音信号,任何音频编码都是有损的,在计算机应用中,能达到高保真的就是PCM编码,因此PCM约定成俗成了无损编码,对于声音而言,我们通常采用PCM编码。...对于音频常见术语有采样率,采样大小,声道,比特率等。
编码结构图 前言 iOS下Apple为我们提供了非常方便的音频编解码工具AudioToolbox。该工具中包含了常见的编解码库,如AAC、iLBC、OPUS等。...今天我们就介绍一下如何使用 AudioToolbox 进行AAC音频的编码工作。 AAC编码的基本流程 在 iOS 中进行AAC编码的流程比较简单,按以下几步即可完成。...当然,这与创建编码器的函数也有关。该函数的前两个输入参数就是音频输入格式和输出格式。...这里用到了一个小技巧,设置编码器的输入格式是通过传入的第一个音频数据包来获得的。因为,在iOS中每个音视频的输入数据中都包含了必要的参数。而iOS也为我们提供了提取这些数据的方法,非常方便。...另外,通过本文你可以了解到,其实在iOS下,其它音频编码的流程与AAC编码的流程都是一样的,我们只需要调整不同的参数即可。
FAAC 编码器输入、输出格式 七、 FAAC 设置音频编码参数代码 Android 直播推流流程 : 手机采集视频 / 音频数据 , 视频数据使用 H.264 编码 , 音频数据使用 AAC 编码...: 开始进行音频直播推流操作 , 先采集音频 , 将音频编码为 AAC 格式 , 将编码后的音频打包成 RTMP 包 , 然后推流到服务器中 ; NV21 格式图像编码为 H.264 视频 , 需要设置...x264 编码器参数 , 对应 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据...音频编码器 ; 3 ....configurationPtr->outputFormat = 0; 参考 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头
文章目录 一、 AAC 音频格式解析 二、 FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3....AAC 音频数据标签 三、 FLV 音频数据标签头 四、 音频解码配置信息 1. AAC 音频数据 2. 第 1 字节 AF 数据解析 3....音频数据类型 一、 AAC 音频格式解析 ---- 1 ....推流数据分析 : 当前的需求是需要将 FAAC 编码后的 AAC 数据推流到 RTMP 服务器中 , 推流时 , 需要推流的 AAC 格式不是上述两种格式 , 而是纯 AAC 裸数据 ; 3 ....分析 FLV 格式中的 AAC 音频格式数据 分析 FLV 格式中的 AAC 音频格式数据 : 下图中的第 2 个音频数据标签 , 存储了音频特殊配置 , 之后的 AAC 音频数据标签都是普通的音频采样数据
但压缩技术却颠倒了它们的出现顺序:压缩数字视频比压缩数字音频要早10年。所以和之前我所写的文章《视频编码四十年》[1]不同,本文的标题是《音频编码三十年》。...类似地,USAC能够编码多声道音频信号,并且能够以最佳方式编码语音内容。 DRC MPEG-D DRC(Dynamic Range Control,动态范围控制)技术可以让听者能够控制音频水平。...3D Audio MPEG-H 3D音频发布于2015年,一如既往,它也是MPEG系列工具(系统、视频和音频)中的一部分。它提供了沉浸式音频内容的高效编码:编码范围通常在11~22个内容声道。...作为MPEG最佳传统,这些标准在某种意义上是通用的,可用于纯音频或者音频+视频应用程序。随着新一代音频编码标准构建在前代编码标准之上,这些编码标准通常可进行扩展。...下图展示了这三十年的音频编码之路。
这里是 Android 第二篇:Android 音频编码 Demo。...这个 Demo 里包含以下内容: 1)实现一个音频采集模块; 2)实现一个音频编码模块; 3)串联音频采集和编码模块,将采集到的音频数据输入给 AAC 编码模块进行编码和存储; 4)详尽的代码注释,帮你理解代码逻辑和原理...; 1、音频采集模块 在这个 Demo 中,音频采集模块 KFAudioCapture 的实现与 Android 音频采集 Demo 中一样,这里就不再重复介绍了,其接口如下: KFAudioCapture.java...start 在 _setupCodec 中执行,开启音频编码。 2)停止与清理编码实例,release 。 stop 在 release 中执行,关闭音频编码。...编码线程异步处理数据,从 mList 取出数据塞入尽量多的数据给编码器,这样跳出循环条件为塞入编码器失败或者 mList 为空。
音频解码就是将mp3 aac等格式这些文件解析为pcm格式的过程。...= 0) { LOGE("打开文件失败!")...解码 将解码数据封装在AVFrame <-- 拿到编码的数据AVPacket <-- 读取数据源 <-- 解码文件参数设置 //3.1 AVPacket初始化 AVPacket *...int out_nb_samples = pCodecContext->frame_size; //音频采样格式 量化精度 AVSampleFormat out_sample_fmt...读取编码数据到AVPacket 然后将数据解码存储到AVFrame 转换存储数据 //4.1 读取编码数据到AVPacket int got_picture; int index
折腾了几天的AAC编码和解码,最开始用的是ffmpeg的接口,实现好实现,但是调试总是有各种问题,最后还是使用faac-1.28/faad2-2.7实现了AAC的编码和解码功能,使用这两个库的原因,是因为手里有另一套代码工程...,已经实现了AAC的编码和解码,所以就直接拿来用了。...avctx->channels = channels; avctx->channel_layout = av_get_default_channel_layout(channels); // 音频编码规格
蓝牙耳机设备在工作时,前端会先依托 PCM 将音频信号先量化成数字信号,接着按照不同的蓝牙音频编码压缩打包数据,再调制到特定的频率上发射。...接收端(耳机)先解调恢复基带数字信号,接着读取其中的音频数据,然后恢复成音频信号,进而放大后驱动耳机。 ? ?...1、SBC(Sub-band coding,子带编码) SBC是A2DP(Advanced Audio Distribution Profile,蓝牙音频传输协议)协议强制规定的编码格式。...所有的蓝牙都会支持这个协议,所以所有的蓝牙音频芯片也会支持这个协议。SBC编码在传输时的码率,根据sony官网宣传给出的资料,是328Kbps,44.1KHZ。这个码率其实和高品质的MP3差不多。...2、ACC/AAC(Advanced Audio Coding,高级音频编码) AAC(Advanced AudioCoding),中文名:高级音频编码,是一种专为声音数据设计的文件压缩格式。
/media/AudioTrack.java) android_media_AudioTrack.cpp (frameworks/base/core/jni/android_media_AudioTrack.cpp...这些“音频策略”的制定,主导者就是AudioPolicyService 在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。...查看Android.mk audio.primary....APP给AudioTrack提供音频数据有2种方式: 一次性提供(MODE_STATIC)、边播放边提供(MODE_STREAM) 问: 音频数据存在buffer中, 这个buffer由谁提供?...8 音频数据的传递 APP创建AudioTrack, playbackThread创建对应的Track 它们之间通过共享内存传递音频数据 APP有2种使用共享内存的方式: MODE_STATIC:
它还能直接与每个平台上的音频系统(Android上的openSL,iOS / macOS上的CoreAudio,Windows上的WASAPI)进行交流协作,以最大限度地减少输出延迟并尽可能地提高处理效率...从编码到客户端 空间音频编码和其文件格式的世界正处于迅速发展不断变革的状态。...我们不能强制所有设备都同时支持一种格式,因此我们为iOS,Android和网络浏览器准备了不同的格式。...出于这个原因,在iOS上我们更喜欢把MP4格式文件作为视频载体,在Android和Web浏览器上我们更喜欢使用WebM。...在iOS和Android上,与单声道或立体声音轨不同,解码10声道AAC音频不直接受本机支持或单纯依赖硬件加速。
在上一章我们讲到了MediaCodec的工作流程,以及如何利用MediaCodec进行H264编码。这一章的内容同样是MediaCodec,只不过是编码音频为AAC,整个流程大同小异。 ...上一章我们利用MediaCodec编码视频时,使用了Surface,所以可以不直接操作输入缓冲区队列。但是编码音频的时候,由于无法使用Surface,所以需要直接操作输入缓冲区队列。 ...这里我们需要通过AudioRecord采集PCM数据,然后把采集到的数据送进编码器进行编码。所以首先我们要初始化一个AudioRecord对象。 要使用录音,需要申请录音权限。... 然后初始化AudioRecorder对象,初始化完成后就可以开始录制音频了...parameter.audio.sampleRateInHz, AudioFormat.CHANNEL_IN_MONO, parameter.audio.pcm, bufferSize) /** * 开始录制音频
简单总结了 Android 开发中的一些代码规范,供开发者参考。 1 命名规范 大驼峰命名(UpperCamelCase):每个单词的第一个字母都大写。...不推荐使用谷歌的前面加 m 的编码风格。 控件变量 使用小驼峰命名。 建议使用 控件缩写+逻辑名称 格式,例如 btnLogin、 etUserName 。
如果是 mp3、aac 等压缩音频,则需提前解码成 PCM 数据,Android 端可以通过 MediaExtractor 及 MediaCodec 解码得到 PCM 。...但调整音调、节拍仅靠 Android api 就无能为力了,只能集成第三方库来实现,常见的音频处理库有 Fmod 、 SoundTouch。...如果需要保存处理后的音频到文件,那么......我就请你再认真的思考一下,你的需求真的必须要保存处理后的音频吗?...假设一个聊天 app 要实现语音消息变声,那这段语音只会在你的应用中播放,那就都可以通过 Fmod 播放器变声播放啊,要知道 Fmod 可是一个跨平台的音频引擎,不论是 Android、iOS 还是 Web...通过 SoundTouch 处理得到变声后的 PCM,再结合 AudioTrack 实现播放; 如果你要将一个 mp3 变声后保存下来,那就在得到变声后的 PCM 后,结合 MediaCodec 将其编码保存下来
领取专属 10元无门槛券
手把手带您无忧上云