PCM to AAC conversion using mediacodec

前端 未结 2 660
刺人心
刺人心 2021-01-31 18:51

I am using a media codec class in Android (Jelly Bean) to encode PCM format to AAC. The file was encoded but no music player is able to play that file. I was not able to find an

相关标签:
2条回答
  • 2021-01-31 19:13

    You'll need to choose a container for it. I prefer adts.

    Copy the the payload data into an aray that is large enough for your container, just add on your bits. So after scouring the internet for my solution I worked some snippet into place

    method 'fillInADTSHeader'

        profile =( configParams[0]>>3 )&0x1f;
    
        frequency_index = (this.configParams[0]&0x7) <<1 | (this.configParams[1]>>7) &0x1;
    
        channel_config = (this.configParams[1]>>3) &0xf;
    
        int finallength = encoded_length + 7;       
        ENCodedByteArray[0] = (byte) 0xff;
        ENCodedByteArray[1] = (byte) 0xf1;
        ENCodedByteArray[2] = (byte) ( ((profile - 1) << 6) + (frequency_index << 2) +(channel_config >> 2));
        ENCodedByteArray[3] = (byte) (((channel_config & 0x3) << 6) + (finallength >> 11));
        ENCodedByteArray[4] = (byte)( (finallength & 0x7ff) >> 3);
        ENCodedByteArray[5] = (byte) (((finallength & 7) << 5) + 0x1f) ;
        ENCodedByteArray[6] = (byte) 0xfc;
    

    Using something like

                byte chunkADTS[]=new byte[info.size + 7];
                fillInADTSHeader(chunkADTS,info.size);
                outputBuffers[bR].get(chunkADTS,7,info.size);
                buffer.pushData(chunkADTS);
    

    Should play in shoutcast, etc...

    0 讨论(0)
  • 2021-01-31 19:21

    There's an android AAC Library https://github.com/timsu/android-aac-enc

    Try passing your buffers through this library. It might help.

    0 讨论(0)
提交回复
热议问题