FAAC编码问题

红茶加红糖 2012-01-13 04:25:34
要做一个实时采集pcm码流,并且编码生成aac文件。

码流采集参数:44100hz、2通道、立体声。可以将采集到的音频数据存储为wav文件。

但是将采集到的音频数据编码时,编码后的音频文件失真严重,基本听不清楚原音

采集过程省略

myFormat = faacEncGetCurrentConfiguration(hEncoder);
myFormat->aacObjectType = LOW;
myFormat->mpegVersion = MPEG2;
myFormat->useTns = 0;//DEFAULT_TNS;
myFormat->shortctl=SHORTCTL_NORMAL;
myFormat->inputFormat=FAAC_INPUT_16BIT;
myFormat->outputFormat=1;//ADTS_STREAM;
//myFormat->bitRate???这个应该怎么设

if (!faacEncSetConfiguration(hEncoder, myFormat))
{
fprintf(stderr, "Unsupported output format!\n");
}

pcmbuf = (short*)malloc(samplesInput*sizeof(short));//samplesInput = 2048
bitbuf = (unsigned char*)malloc(maxBytesOutput*sizeof(unsigned char));//maxBytesOutput = 1536

while(1)
{
r = snd_pcm_readi(handle, data, count);
printf("r = %d\n",r);//有时候为1225,有时候为-EPIPE

samplesRead = read_int16(pcmbuf, samplesInput, data_buf);

bytesWritten = faacEncEncode(hEncoder,(int32_t *)pcmbuf ,samplesRead ,bitbuf,maxBytesOutput);

if (bytesWritten < 0)
{
fprintf(stderr, "faacEncEncode() failed\n");
break ;
}

fwrite(bitbuf, 1, bytesWritten, outfile);
}

大家帮忙看看,这个流程对不对,哪里有问题呀???
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
250 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
红茶加红糖 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rightorwrong 的回复:]

你看带的示例程序,设置一些选项,就是正常播放了
解码的时候需要读好像是2048字节进行解码
[/Quote]

需要设置哪些选项??
teleinfor 2012-01-14
  • 打赏
  • 举报
回复
谢谢哦!
samzc2010@gmail.com

[Quote=引用 3 楼 greenti 的回复:]
引用 1 楼 teleinfor 的回复:
保存为wav文件的部分能够参考下不?我最近弄wav文件的保存。


你留个邮箱吧,周末发给你
[/Quote]
rightorwrong 2012-01-13
  • 打赏
  • 举报
回复
你看带的示例程序,设置一些选项,就是正常播放了
解码的时候需要读好像是2048字节进行解码
红茶加红糖 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 teleinfor 的回复:]
保存为wav文件的部分能够参考下不?我最近弄wav文件的保存。
[/Quote]

你留个邮箱吧,周末发给你
teleinfor 2012-01-13
  • 打赏
  • 举报
回复
保存为wav文件的部分能够参考下不?我最近弄wav文件的保存。
teleinfor 2012-01-13
  • 打赏
  • 举报
回复
保存为wav文件的部分能够参考下不?我最近弄wav文件的保存。

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧