本帖最后由 wangsky2 于 2013-07-03 10:06:49 编辑

解决方案 »

  1.   

    问题还是没有解决呢。不过发现了一个新的东西opencore-amr,编译然后在用,效果就是播放的比较快,最近忙其他的,没有研究。
      

  2.   

    你这个其实就是官网上tutorial03的例子吧,我也碰到这个问题,我在ubuntu下运行,也是出现噪音,但是用ffplay播放就没问题,不知道是哪里的原因,请问你找到原因了吗?
      

  3.   

    全是杂音的原因是,解码出来的pcm是32位浮点数的,你用16位定点数的打开,所以全是杂音。
      

  4.   

    是不是这个问题呢,我最近也在搞ape软解成pcm。一下。
      

  5.   


    我遇到同样的问题,用32位打开,虽然有声音出来但夹了杂音啊,不知道有没有大神解决了呢
    首先你看看原始的声音是否有杂音,其次我的是对wma格式的有用,其他的我没有一一实验,你可以通过加一些打印看看decode时候的格式。
      

  6.   

    刚好也碰到类似问题,找到你的帖子了。
    估计你已经解决问题了,希望能帮到后来的朋友。AV_SAMPLE_FMT_S16P格式数据是每个声道分开存储的。
    对应到frame->data[0] 右声道;
    frame->data[1]左声道。
    转换成 AV_SAMPLE_FMT_S16 格式只需要复制左右声道数据就可以了。
    下面修改了一下你的代码,应该没问题了。                    short *data = (char *)malloc(frame->nb_samples);
                        short *sample_buffer = (short *)frame->data[0];
                        short *sample_buffer1=(short*)frame->data[1];
                        for (int i = 0; i < frame->nb_samples; i++)
                        {
                            data[i*2] = sample_buffer[i];
                            data[i*2+1] = sample_buffer1[i];       
                        }