/* * unsigned long nSampleRate, // 采样率,单位是bps * unsigned long nChannels, // 声道,1为单声道,2为双声道 * unsigned long &samplesInput, // 传引用,得到每次调用编码时所应接收的原始数据长度 * unsigned long &maxBytesOutput // 传引用,得到每次调用编码时生成的AAC数据的最大长度 */ enc = faacEncOpen(samplerate, channels, &samplesInput, &maxBytesOutput);
在使用aac编码之前 由已知采样率和声道 首先获取 每次aac编码所应接收的原始数据长度即上面代码中第三个参数 samplesInput
还有每次编码时输出的aac数据最大长度 即上面代码中第四个参数 maxBytesOutput
音频编码:
int enc_result = faacEncEncode(enc, (int32_t *) pcm_buffer, samplesInput, out, enc_size);
在真正音频aac编码时,该接口使用的pcm_buffer[] 也就是输入的原始数据要等于之前获取的每次aac编码所应接收的原始数据长度 也就是上面获取的 samplesInput 的长度
enc_size 就是上面获取的每次编码时输出的aac数据最大长度 也就是上面获取的 maxBytesOutput
上面 out[] 大小就是 maxBytesOutput 的长度
备注:在音频编码的时候只需要原始的pcm数据,那些时间戳跟真正aac编码没有太大关系。时间戳可能会跟音频aac编码后的数据一起进行下一步操作。
时间: 2024-10-18 16:51:04