使用FAAC进行AAC编码
首先FAAC和FAAD的下载地址在前面的博文里有。
FAAC和FAAD有win32的编译工程,相对其他开源项目来说,win32的编译很简单了
FAAC,FAAD的编码和解码也封装的非常好,使用上很简单。
打开FAAC编码器
m_faacHandle = faacEncOpen(isamplerate, ichannels, &m_uSampleInput, &m_uOutputBytes);
if( 0 == m_faacHandle )
return false ;
faacEncConfigurationPtr faacCfg;
faacCfg = faacEncGetCurrentConfiguration(m_faacHandle);
if (faacCfg->version != FAAC_CFG_VERSION){
return false ;
}
//* 设置配置参数
faacCfg->aacObjectType = LOW; //LC编码
faacCfg->mpegVersion = MPEG4; //
faacCfg->useTns = 1 ; //时域噪音控制,大概就是消爆音
faacCfg->allowMidside = 0 ; //
faacCfg->bitRate = m_nBitRate/m_uChannelNums;
faacCfg->bandWidth = 0 ; //频宽
faacCfg->outputFormat = isADTS; //输出是否包含ADTS头
faacCfg->inputFormat = FAAC_INPUT_16BIT;
//faacCfg->shortctl = 0 ;
faacCfg->quantqual = 50 ;
//* 获取解码信息.
//unsigned char* ucBuffer = NULL;
//unsigned long ulDecoderSpecificInfoSize;
//faacEncGetDecoderSpecificInfo(m_faacHandle, &ucBuffer, &ulDecoderSpecificInfoSize);
if (!faacEncSetConfiguration(m_faacHandle, faacCfg)){
return false ;
}
m_uSampleInput这个参数要注意,需要在编码时使用。是faac所使用的音频样片数量
随后就可以解码了
int iBytesWritten = faacEncEncode(m_faacHandle, (int32_t*)input, m_uSampleInput , output, outlen );
判断下iBytesWritten初始编码的几帧数据会返回0,0是数据被缓冲,并不是错误。
解码相对编码更简单。
但是遇到个问题,就是编码单声道的数据,解码会返回双声道,这对打开播放设备播放时造成了一定的
困扰。因为前期是将音频编码参数优先发送出来,接收端收到参数后会打开播放设备,现在得在数据解码后再打开
播放设备。
使用FAAC进行AAC编码相关推荐
- 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...
- 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频采样数据 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...
- 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频解码信息 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频解码信息 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...
- 采集音频和摄像头视频并实时H264编码及AAC编码
0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术, ...
- 采集音频和摄像头视频并实时H264编码及AAC编码[转]
0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术, ...
- 音频之各种有损编码器的比较,AAC编码器之选择,频谱、差值比较,编码器下载
音频有损编码有:aac,mp3,ogg(vobis),opus等.这里只讨论主流编码格式,aac编码器有faac,qaac,fhgacc,neroacc,fdkacc,falabaac等,其封装格式有 ...
- 音频编解码·实战篇(1)PCM转至AAC(AAC编码)
音频编解码·实战篇(1)PCM转至AAC(AAC编码) 作者:柳大·Poechant 博客:blog.csdn.net/poechant 邮箱:zhongchao.ustc@gmail.com 日期: ...
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司 ...
- RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播 摘要: RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播 RTMP(Real Time Messaging Pro ...
最新文章
- 2007年上半年 网络工程师 上下午试卷【附带答案】
- 【JavaWeb】Access restriction The type is not accessible due to restriction on required library
- swingbench oracle rac,使用Swingbench压力测试Oracle RAC
- bigdecimal 保留两位小数_Python的保留小数及对齐
- ruhe anzjhuang mysql_Mysql配置安装过程
- 【华为云技术分享】Reactive模式优势与实践
- nginx ---- 配置成系统服务
- 利用SQLite在android上实现增删改查
- paip.分成系统会员推广分销系统的设计
- 见证云原生创变!CNBPS 2019云原生技术实践峰会圆满落幕
- TrueCrypt加密:TrueCrypt Mount卸载加密卷(3)
- 12个“无用”之美,你有没有被惊艳到?
- linux如何关闭netbios服务,Samba 'nmbd' NetBIOS名称服务守护程序拒绝服务漏洞
- VS Code 中解决 C++ 代码编写时的爆红
- windows使用WiFi-direct连接手机等设备
- Node.js结合Express框架项目搭建
- 使用Cytoscape画PPI网络图
- Hi3516A/Hi3516D SDK 安装以及升级使用说明
- ads1258_ADS1258高精度多通道模/数转换芯片
- 新加坡首富张勇的烦恼