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

时间: 2024-07-29 21:17:26

libfaac个个参数说明的相关文章

Solr基础理论与维护管理快速上手(含查询参数说明)

1. solr基础 因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语.更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容.通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引. 在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引.Document 包括一个或多个 Field.Field 包括名称.内容以及告诉 Solr 如何处理内容的元数据.例如,Fi

《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 一.综述 SuperIO(SIO)定位在PC终端(上位机)应用,它只有一个服务实例,配置参数是全局属性.但是,ServerSuperIO(SSIO)与SuperIO(SIO)定位不一样,SSIO定位在服务器端,不管是串口通讯模式,还是网络通讯模式,都支持多服务实例,所以每个服务实例都有自己的配置参数,全部配置参数的定义在ServerConfig.cs文件中. 如下图示意: 二.配置参数说明 1 2 3 4

memcache【命令行参数说明】

Memcache 命令行参数说明 1.启动Memcache 常用参数 -p <num>      设置TCP端口号(默认不设置为: 11211) -U <num>      UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr>  绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -d                    以daemon方式运行 -u <username>

jquery dialog 参数说明

var dialog = art.dialog({ title: '欢迎', content: '欢迎使用artDialog对话框组件!', icon: 'succeed', follow: document.getElementById('btn2'), ok: function(){ this.title('警告').content('请注意artDialog两秒后将关闭!').lock().time(2); return false; }, button: [ { name: '同意',

jQuery Jcrop API参数说明(中文版)

Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 minSize/maxSize设置 支持改变选区或移 动选区时的回调(Callback) 支持用键盘微调选区 通过API创建互动,比如动画效果 支持CSS样式 版本及Demo jQuery v1.5.1+ Jcrop v0.9.9 Demo地址:http://code.ciaoca.com/jque

redis配置文件参数说明及命令操作

redis下载地址:https://github.com/MSOpenTech/redis/releases. Redis 的配置文件位于 Redis 安装目录下,文件名为redis.windows.conf,以前好像是 redis.conf,不过我下载的版本是redis.windows.conf,当然你也可以自己创建自己的配置文件,启动redis服务的时候后面跟上配置文件名称就可以了,比如redis-server.exe redis.windows.conf,这样就可以运行相应的配置文件 .

R语言之词云:wordcloud&amp;wordcloud2安装及参数说明

一.wordcloud安装说明 install.packages("wordcloud"); 二.wordcloud2安装说明 install.packages("devtools"); devtools::install_github("lchiffon/wordcloud2",type="source") 错误提示: 解决办法: install.packages("htmltools"); 三.word

转载《SimpleAdapter的参数说明》

SimpleAdapter的参数说明 第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要 第二个参数表示生成一个Map(String ,Object)列表选项 第三个参数表示界面布局的id  表示该文件作为列表项的组件 第四个参数表示该Map对象的哪些key对应value来生成列表项 第五个参数表示来填充的组件 Map对象key对应的资源一依次填充组件 顺序有对应关系 注意的是map对象可以key可以找不到 但组件的必须要有资源填充  因为 找不到key也会返回null

java OPENCV 连通域, Imgproc.findContours 例子,参数说明

http://stackoverflow.com/questions/29491669/real-time-paper-sheet-detection-using-opencv-in-android/29492699#29492699 at srcImg; //you may want to apply Canny or some threshold before searching for contours List<MatOfPoint> contours = new ArrayList&