如何在Java代码中的MPEG 2 TS标头中添加PAT和PMT

时间:2018-10-29 14:14:26

标签: android stream

我想知道如何在MPEG 2 TS的TS标头中添加PAT和PMT。我广泛阅读了有关MPEG 2 TS的规范,我成功创建了PES标头和适配字段标头,但不知道在我的TS标头中插入PAT和PMT,这是我的代码(适用于Android的Java)

private  void ADD_TS_header(byte[] packet,ByteBuffer buffer){

/*0 sync_byte                                   8 bits
    1 transport_error_indicator                   1 bit
    2 payload_unit_start_indicator                1 bit
    3 transport_priority                          1 bit
    4 PID                                        13 bits
    5 transport_scrambling_control                2 bits
    6 adaptation_field_control                    2 bits
    7 continuity_counter                          4 bits*/

    int PID_flag = 0b0000000000000; // (0x0000 >> 13)
    int adaptation_field_control_flag = 0b01; // ((0x1 & 0x3)>>1)
    packet[0] = (byte) (byte)(0x47 & 0xff);   // Octet de synchronisation vaut (byte)0x47 01000111
    packet[1] = (byte) 0x800000;             // Indicateur d'erreur de transmission
    packet[2] = (byte) 0x400000;             // Identificateur de début de la charge utile
    packet[3] = (byte) 0x200000;             // Priorité de transmission, 0 est la priorité basse, 1 est la priorité haute
    packet[4] = (byte) PID_flag;            // Un PAT est dans des paquets ayant un code PID de zéro (0x0000)
    /*          if (packet[4] == 0) {
       // add PAT and PMT from PSI

    }*/
    packet[5] = (byte) 0x00;                           // Contrôle du brouillage de la transmission, 00 signifie non crypté
    packet[6] = (byte) adaptation_field_control_flag;  // indique si elle contient la région adaptative (indication field)
    packet[7] = (byte) (0xf)  ;
    /*         if (packet[6] == 11 || packet[6] == 10) {
    add_adaptation_field() exist;
      }else{
      not adaptation field such as in this case
     }*/
}

0 个答案:

没有答案