MPEG 2 TS ISOMEDIA жалоба - PullRequest
       40

MPEG 2 TS ISOMEDIA жалоба

0 голосов
/ 20 октября 2018

Я записываю audio, используя android класс AudioRecord с успехом, и чтобы он проигрывался со всеми игроками, я успешно добавляю заголовки AAC ADTS и объединяю все в файл MPEG 2 TS (.ts), и он может воспроизводиться со всеми игроками (родными иVLC).

Но, к сожалению, этот файл не ISOMEDIA не совместим с чертами с GPAC.Я пытаюсь найти решение, и я обнаружил, что мне нужно добавить PES headers к моему ES stream.

пожалуйста, кто-то может знать, как добавить заголовки PES поверх заголовков ADTS в MPEG 2 TS, используя java?по коду ниже?

enter code here
private void addADTStoPacket(byte[] packet, int packetLen) {
    int profile = 2;  //AAC LC //39=MediaCodecInfo.CodecProfileLevel.AACObjectELD;
    int freqIdx = 4;  //44.1KHz
    int chanCfg = 2;  //CPE

    // fill in ADTS data
    packet[0] = (byte)0xFF; // conversion hexadecimal a decimal - il y a seize unités de 0 à F, on parle donc d'hexadécimal.
    packet[1] = (byte)0xF1; // installe l'entete ADTS dans MPEG-2 (0xF1) au lieu de MPEG-4 (0xF9)
    packet[2] = (byte)(((profile-1)<<6) + (freqIdx<<2) +(chanCfg>>2));
    packet[3] = (byte)(((chanCfg&3)<<6) + (packetLen>>11));
    packet[4] = (byte)((packetLen&0x7FF) >> 3);
    packet[5] = (byte)(((packetLen&7)<<5) + 0x1F);
    packet[6] = (byte)0xFC; // 0xFC est également correct si vous ne connaissez pas la valeur de la plénitude du tampon
}
...