如何使用自定义值创建原始 mpeg header

how to create raw mpeg header , with custom values

我正在尝试使用 C++ 创建 mpeg header: Header 十六进制值:0X4700311d 所以同步字节是:0x47 泰 : 0 普斯 : 0 优先级:0 进程号:0x0031 技术监督委员会:0x0 亚足联:0x1 抄送:13

mpeg header 的结构应该是什么样的?

有没有办法创建一个 4 字节的 char 数组,然后根据 header 赋值,如果我想稍后修改 pid?

我试过用这个header:

unsigned char _syncByte;
unsigned char _tei : 1;
unsigned char _payloadStart : 1;
unsigned char _priority : 1;
int16_t _pid;
unsigned char _scramblingCtl : 2;
unsigned char _adaptationField : 2;
unsigned  char _counter;

但在 visual studio 2015 内存面板中,值不同。

uint32_t header = 0;
header |= 0x47 << 24;
header |= (TransportErrorIndicator & 1) << 23;
header |= (PayloadUnitStartIndicator  & 1) << 22;
header |= (TransportPriority & 1) << 21;
header |= (PacketIdentifier & 8191) << 8;
header |= (TransportScrambling & 3) << 6;
header |= (AdaptationFieldControl & 3) << 4;
header |= (ContinuityCounter & 15);

注意字节顺序。