如何使用自定义值创建原始 MPEG 标头

how to create raw mpeg header , with custom values

本文关键字:原始 MPEG 标头 创建 何使用 自定义      更新时间:2023-10-16

我正在尝试使用 c++ 创建 mpeg 标头: 标头十六进制值:0X4700311d 所以同步字节是:0x47 亭 : 0 普西 : 0 优先级 : 0 PID : 0x0031 TSC : 0x0 亚足联 : 0x1 抄送 : 13

mpeg 标头的结构应该是什么样子的?

有没有办法创建一个 4 个字节的 char 数组,然后根据标头分配值,然后根据需要修改 pid?

我尝试使用此标头:

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);

小心字节排序。