> 音频编解码(软编码)
FFMpeg视频软件编解码的。B站的ijkplayer等。
音频数据的编解码- /ticktick/1760191
1.Android AAC Encoder
一款轻量级的 Android aac 编码库:/timsu/android-aac-enc
2.opencore-amr-android
从 opencore 抽取出来的 amr 编解码库:/kevinho/opencore-amr-android
3.iLBC-Android
iLBC 是著名的 WebRTC 项目的音频编解码模块,iLBC-Android 是从中抽取 iLBC 模块移植到 Android 平台的个人项目,地址:/lukeweber/iLBC-Android
环形缓冲区- /Jhuster/clib/tree/master/rw_queue
JSSRC- /hutm/JSSRC
> 音频转码
MediaCodec编译pcm为aac- /tn0521/article/details/44980183
android MediaCodec 音频编解码的实现,转码- /Sharley/p/5964490.html
mp3转码成aac为例,转码实现原理:mp3->pcm->aac,首先将mp3解码成PCM,再将PCM编码成aac格式的音频文件。PCM:可以将它理解为,未经过压缩的数字信号,mp3、aac等 理解为pcm压缩后的文件。播放器在播放mp3、aac等文件时要先将mp3等文件解码成PCM数据,然后再将PCM送到底层去处理播放。 接入了一个第三方的SDK,从中下载下来的音频是AAC格式的。采样率是44.1KHZ。双声道,16Bit。那么首先我需要把他转成PCM。
编码的aac音频不能播放:在编码过程中需要为aac音频添加ADTS head。
> 音频编解码(硬编码MediaCodec)
利用Android4.1增加的API MediaCodec和Android 4.3增加的API MediaMuxer进行Mp4视频的录制。
MediaExtractor:可用于分离视频文件的音轨和视频轨道,如果你只想要视频,那么用selectTrack方法选中视频轨道,然后用readSampleData读出数据,这样你就得到了一个没有声音的视频。传入的是一个音频文件(mp3),所以也就只有一个轨道,音频轨道。
mime:用来表示媒体文件的格式 mp3为audio/mpeg;aac为audio/mp4a-latm;mp4为video/mp4v-es 此处注意前缀 音频前缀为audio,视频前缀为video 我们可用此区别区分媒体文件内的音频轨道和视频轨道
Android音频编解码和混音实现- /zhaoshaolei123/article/details/76034298
Android音频编解码和混音- /YeDaxia/MusicPlus
ACC音频有ADIF和ADTS两种,第一种适用于磁盘,第二种则可以用于流的传输,它是一种帧序列。
-- 数字音频的有关属性:
1.采样频率(Sample Rate):每秒采集声音的数量,它用赫兹(Hz)来表示。(采样率越高越靠近原声音的波形);
2.采样精度(Bit Depth):指记录声音的动态范围,它以位(Bit)为单位。(声音的幅度差);
3.声音通道(Channel):声道数。比如左声道右声道。
AudioRecord采集的是PCM数据。Android官方提供给我们的用于编解码的类是MediaCodec,它是android 4.1(API 16)才引入的,所以只能工作于andorid4.1以上的手机,如果想兼容4.1以下版本的手机,只能使用第三方库,如大名鼎鼎的ffmpeg,B站的ijkplayer等。