I want to extract AAC from MP4 in android.
Assumption : I think createHeader function may be out of for loop.
private byte[] createHeader(ByteBuffer byteBuf) throws IOException {
byte[] buf = new byte[7];
int dataSize = byteBuf.limit();
// dataSize -= 1;
long bits = 0;
bits = writeBits(bits, 12, 0xFFF); // A
bits = writeBits(bits, 1, 0);// B
bits = writeBits(bits, 2, 1); // C
bits = writeBits(bits, 1, 1);// D
buf[0] = (byte) (bits >> 8);
buf[1] = (byte) (bits);
bits = 0;
bits = writeBits(bits, 2, 0); // E
bits = writeBits(bits, 4, 4); // F : assume 4 =44100 from
bits = writeBits(bits, 1, 0); // G
bits = writeBits(bits, 3, 2); // H
bits = writeBits(bits, 1, 0); // I
bits = writeBits(bits, 1, 0); // J
bits = writeBits(bits, 1, 0); // K
bits = writeBits(bits, 1, 0); // L
bits = writeBits(bits, 13, (dataSize + 7)); // M
// bits = writeBits(bits, 2, (dataSize + 7) & 0x1800); // half M
// bits = writeBits(bits, 11, (dataSize + 7) & 0x7FF); // other Half M
bits = writeBits(bits, 11, 0x7FF); // O
bits = writeBits(bits, 2, byteBuf.limit());// P
buf[2] = (byte) (bits >> 32);
buf[3] = (byte) (bits >> 24);
buf[4] = (byte) (bits >> 16);// P
buf[5] = (byte) (bits >> 8);// Q
buf[6] = (byte) (bits);
return buf;
}
I tried using code given by you and "createheader" function as above to get aac file from mp4 but it generate messy file.
I tried with set header before loop but same problem.
Pls help
Thanks,
kalpesh