RTMP 音频推流(一)FAAC 交叉编译

AAC 音频格式

高级音频编码(Advanced Audio Coding),出现于1997年,基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC重新集成了其特性,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。相对于mp3,AAC格式的音质更佳,文件更小。

AAC的音频文件格式有 ADIF 和 ADTS。一种是在连续的音频数据的开始处存有解码信息,一种是在每一小段音频数据头部存放7个或者9个字节的头信息用于播放器解码。

RTMP推流需要的是 AAC 的裸数据。所以如果编码出 ADTS 格式的数据,需要去掉7个或者9个字节的 ADTS 头信息。
类似于推送视频,第一个包总是包含 SPS 和 PPS 的音频序列包。

一般情况下,组装的音频AAC的RTMPPacket(RTMPDump中的结构体)为:


音频rtmp包.png

FAAC

FAAC (Freeware Advanced Audio Coder)。下载页面 (FAAD2 是解码库)。

下载FAAC编码库源码:
wget https://ayera.dl.sourceforge.net/project/faac/faac-src/faac-1.29/faac-1.29.9.2.tar.gz
解压:
tar -xvf faac-1.29.9.2.tar.gz
进入解压目录,编写编译脚本 build_faac.sh:

#!/bin/bash

NDK_ROOT=/root/android-ndk-r17c
PREFIX=`pwd`/android/armeabi-v7a

TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi

FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=17 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -O0  -fPIC"

export CC="$CROSS_COMPILE-gcc --sysroot=$NDK_ROOT/platforms/android-17/arch-arm"
export CFLAGS="$FLAGS"


./configure \
--prefix=$PREFIX \
--host=arm-linux \
--with-pic \
--enable-shared=no  

make clean
make install

执行脚本,开始编译:
chmod 777 build_faac.sh
./build_faac.sh
编译产物输出在android/armeabi-v7a目录下。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文Android Studio编译部分参考自:AndroidStudio编译faac的so动态库 在音视频开发中...
    G63HH阅读 647评论 1 1
  • 最近在弄rtmp推流AAC格式的音频流,于是对AAC文件解析一个总结。 第一部分 AAC ADTS格式分析 AAC...
    耐寒阅读 10,850评论 1 6
  • 使用FAAC编码PCM为AAC 关于FAAC FAAC是一个MPEG-4和MPEG-2的AAC编码器,其特性是:可...
    吾心傲翔阅读 6,796评论 0 1
  • 学习整理的相关章节链接:基础篇_1.音视频学习框架基础篇_2. 颜色空间模型 RBG、YUV、HSV基础篇_3.图...
    Allan_Wang阅读 2,396评论 0 3
  • 前言: 记载资料多为网络搜集,侵删。 根据最近接触的整机项目做了一些整机音频相关基础知识的总结,如有不足或表述问题...
    Gawain_Knowknow阅读 8,381评论 0 4