libfaac个个参数说明
https://blog.csdn.net/qinglongzhan/article/details/81315532?utm_source=blogxgwz0
1. 打开faac编码器引擎。
faacEncHandle FAACAPI faacEncOpen(
unsigned long sampleRate, // pcm音频采样率,8k,16k,44100等
unsigned int numChannels, // pcm音频通道,mono = 1 / stereo = 2
unsigned long *inputSamples, // 一次输入的样本数
unsigned long *maxOutputBytes);// 输出aac buffer的最大size
函数调用成功会return一个编码器faacEncHandle,同时确定输入样本数和输出aac buffer最大size;
申请输入buffer及输出buffer
int nPCMBufferSize = inputSamples * nPCMBitSize / 8; //nPCMBitSize 单次样本位数
unsinged char* pbPCMBuffer = new BYTE[nPCMBufferSize];
unsigned char* pbAACBuffer = new BYTE[maxOutputBytes];
2. 获取当前编码器配置。
faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(
faacEncHandle hEncoder); //编码器handle
函数调用成功会返回一个faacEncConfigurationPtr用来查看及设置编码器配置。
3. 修改当前编码器的配置并设置。
//copy this struct from headfile
typedef struct faacEncConfiguration{
/* config version - 配置版本,可以默认不设置*/
int version;
/* library version - 库版本,可以默认不设置*/
char *name;
/* copyright string - 版权,可以默认不设置*/
char *copyright;
/* MPEG version, 2 or 4 - MPEG版本,MPEG2 or MPEG4*/
unsigned int mpegVersion;
/* AAC object type - AAC对象类型,详细见补充说明1,取值:1-MAIN 2-LOW 3-SSR 4-LTP*/
unsigned int aacObjectType;
/* Allow mid/side coding - 是否允许mid/side coding, 详细见补充说明2,取值:0-NO 1-YES*/
unsigned int allowMidside;
/* Use one of the channels as LFE channel - 是否允许一个通道为低频通道,取值:0-NO 1-YES*/
/* LFE(low-frequencyeffects) */
unsigned int useLfe;
/* Use Temporal Noise Shaping - 瞬时噪声定形(temporal noise shaping,TNS)滤波器,取值:0-NO 1-YES*/
unsigned int useTns;
/* bitrate / channel of AAC file - AAC文件的bitrate / channel 取值:0和48000都可以,暂时不清楚这个参数作用*/
unsigned long bitRate;
/* AAC file frequency bandwidth - 频宽 取值:0, 32000,64000都可以,暂时不清楚参数作用*/
unsigned int bandWidth;
/* Quantizer quality - 编码质量,取值:efault=100 LOWER<100 HIGHER>100*/
/* 默认100,值越大音质越高 */
unsigned long quantqual;
/* Bitstream output format (取值:0 = Raw; 1 = ADTS) - 输出数据类型(是否包包含adts头),录制MP4文件时,要用raw流,ADTS详细见补充说明3*/
unsigned int outputFormat;
/* psychoacoustic model list*/
psymodellist_t *psymodellist;
/* selected index in psymodellist*/
unsigned int psymodelidx;
/*
PCM Sample Input Format - 输入pcm数据类型
0 FAAC_INPUT_NULL invalid, signifies a misconfigured config
1 FAAC_INPUT_16BIT native endian 16bit
2 FAAC_INPUT_24BIT native endian 24bit in 24 bits(not implemented)
3 FAAC_INPUT_32BIT native endian 24bit in 32 bits (DEFAULT)
4 FAAC_INPUT_FLOAT 32bit floating point
*/
unsigned int inputFormat;
/* block type enforcing -
* (SHORTCTL_NORMAL/SHORTCTL_NOSHORT/SHORTCTL_NOLONG)
*/
int shortctl;
/*
Channel Remapping
Default 0, 1, 2, 3 ... 63 (64 is MAX_CHANNELS in coder.h)
WAVE 4.0 2, 0, 1, 3
WAVE 5.0 2, 0, 1, 3, 4
WAVE 5.1 2, 0, 1, 4, 5, 3
AIFF 5.1 2, 0, 3, 1, 4, 5
*/
int channel_map[64];
} faacEncConfiguration, *faacEncConfigurationPtr;
参数设置示例:
第一步:
faacEncConfigurationPtr pConfiguration;
pConfiguration->outputFormat = 1;
pConfiguration->aacObjectType = LOW;
pConfiguration->bitRate = 48000; // or 0
pConfiguration->bandWidth = 64000; //or 0 or 32000
pConfiguration->inputFormat = FAAC_INPUT_16BIT;
/*下面可以选择设置*/
pConfiguration->allowMidside = 1;
pConfiguration->useLfe = 0;
pConfiguration->useTns = 0;
pConfiguration->quantqual = 100;
pConfiguration->outputFormat = 1;
pConfiguration->shortctl = SHORTCTL_NORMAL;
第二步:
int FAACAPI faacEncSetConfiguration( //设置编码器配置
faacEncHandle hEncoder,
faacEncConfigurationPtr config);
4.进行编码操作(PCM to AAC)
/* 请见步骤1中这部分
int nPCMBufferSize = inputSamples * nPCMBitSize / 8;
unsinged char* pbPCMBuffer = new BYTE[nPCMBufferSize];
unsigned char* pbAACBuffer = new BYTE[maxOutputBytes];
*/
先获取PCM数据,填充到pbPCMBuffer,单次获取长度为nPCMBufferSize。
int FAACAPI faacEncEncode(
faacEncHandle hEncoder,
int32_t * inputBuffer, //pcm输入buffer, pbPCMBuffer
unsigned int samplesInput, //一次输入的样本数(注意不是数据长度 ),samplesInput
unsigned char *outputBuffer, //AAC输出buffer, pbAACBuffer
unsigned int bufferSize);
函数调用成功会返回实际AAC数据大小,从pbAACBuffer中读出即可。
5. 结束关闭编码器退出。
int FAACAPI faacEncClose(faacEncHandle hEncoder);
转载于:https://www.cnblogs.com/dagao/p/10661496.html
libfaac个个参数说明相关推荐
- linux防火墙配置说明,Linux防火墙配置命令参数说明
规则操作参数说明: -A:在所选择的链末添加一条或更多规则: -D:从所选链中删除一条或更多规则.有两种方法:把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则: -R:从选中的链 ...
- 【笔记】位图(.bmp)和矢量图(Vector):位图是点阵图或光栅图,使用像素的一格一格来描述图像,放大以后每一个像素看就像是一个个的马赛克;矢量图是使用直线和曲线来描述图形,可以无限方法,不会失真
一.什么是位图 计算机能以位图和矢量图格式显示图像. 1.位图(Bitmap): 图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图像.计算机屏幕其实就是一张包含大 ...
- 液晶显示器的参数说明-购买夜晶显示器指南
准备将本人的CRT换成LCD,所以先去网上看夜晶显示器的参数说明或者购买指南等等,我在Baidu或者其他的一些搜索上找到资料很少,最后还是找到了一些,收集给需要的朋友看看吧! 正文:当我们在看液晶显示 ...
- Linux下使用 ipset 封大量IP及ipset参数说明
转载Linux下使用 ipset 封大量IP及ipset参数说明 Linux使用iptables封IP,是常用的应对网络攻击的方法,但要封禁成千上万个IP,如果添加成千上万条规则,对机器性能影响较大, ...
- VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...
- arcgis合并tif影像_微图影像地图导出拼接大图的参数说明
1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...
- dbcp 连接池参数说明
dbcp 连接池参数说明 参考: http://commons.apache.org/proper/commons-dbcp/configuration.html https://www.cnblog ...
- 从头到尾使用Geth的说明-3-geth参数说明和环境配置
1.参数说明 ETHEREUM选项:--config value TOML 配置文件--datadir "/home/user4/.ethereum" 数据库和keystore密钥 ...
- ps aux参数说明
运行 ps aux 的到如下信息: ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND smmsp ...
最新文章
- Python异常处理体系简介(1)
- C# 编码约定(C# 编程指南)
- 关闭(杀死)8080端口
- 聊聊spring cloud gateway的XForwardedHeadersFilter
- 【ES8(2017)】async / await
- Python 3 Basics
- SAP License:SAP顾问的可持续性发展
- PyTorch实战福利从入门到精通之七——卷积神经网络(LeNet)
- 『001』如何在自己的网页里引入一个聊天机器人(。・∀・)ノ
- python学习-3.一些常用模块用法
- Atitit 反模式 黑名单 异常处理 反模式(antipatterns) 目录 1.1. 记录并抛出(log and throw)	1 1.2. 抛出异常基类(Throwing Excepti
- c语言 称重系统设计,基于L—PSIII的电子称重系统的设计
- 【基础整理】Mapping representation 机器人所用地图种类及相关介绍
- python关于类、self、_init_的应用
- 脸部识别是根据什么识别的_我们需要知道面部识别失败的频率
- “毒液” 高危漏洞背后的技术较量
- LIO-SAM中的mapOptmization
- 体积 524MB,无广告!微信输入法来了
- 论文的正确打开方式—如何细读一篇论文分享
- bukgu 杂项 图穷匕见
热门文章
- csharp为何不流行_“我太南了”这些年度流行语到底是怎么选的?
- python split拆分字符串_python实现字符串完美拆分split()的方法
- mysql 修改字段注释_MySQL数据库+命令大全,人手一份的实操攻略来啦
- 人脸对齐(十九)--Regressing a 3D Face Shape from a Single Image
- java开发个人项目_个人项目-WC (java实现)
- php 修改服务器ip,php 修改服务器ip
- html5标签 不可修改,SEO优化不可忽视的5个Html代码标签
- 【知识索引】【C++入门】
- yarn 内存与CPU参数设置
- docker容器启动与停止命令