我想知道如何在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
}*/
}