gpt4 book ai didi

mpeg-2 - 从 PTS 生成 PCR

转载 作者:行者123 更新时间:2023-12-04 09:42:51 27 4
gpt4 key购买 nike

我正在尝试从 PTS 创建 PCR,如下所示。

        S64 nPcr = nPts * 9 / 100;  
pTsBuf[4] = 7 + nStuffyingBytes;
pTsBuf[5] = 0x10; /* flags */
pTsBuf[6] = ( nPcr >> 25 )&0xff;
pTsBuf[7] = ( nPcr >> 17 )&0xff;
pTsBuf[8] = ( nPcr >> 9 )&0xff;
pTsBuf[9] = ( nPcr >> 1 )&0xff;
pTsBuf[10]= ( nPcr << 7 )&0x80;
pTsBuf[11]= 0;

但问题是 VLC 只播放第一帧而不播放任何其他帧。
我收到警告“跳过早期图片”。

任何人都可以帮助我从 PTS 转换为 PCR..

最佳答案

首先,PCR 有 33+9 位,PTS 有 33 位。 33 位部分(称为 PCR_base)以 90kHz 运行,PTS 也是如此。其余 9 位称为 PCR_ext,运行频率为 27MHz。

因此,这是计算 PCR 的方法:

S64 nPcr = (S64)nPts << 9;

请注意,复用流的 PTS 和 PCR 之间应该有一个时间偏移,它通常在几百毫秒的范围内,具体取决于流。

相应的解码器需要一些时间来解码数据并在相应的 PTS 给定的时间准备好呈现,这就是 PTS 总是“领先”于 PCR 的原因。 ISO-13818 和一些 DVB 规范给出了有关缓冲和(解)复用的细节。

关于你的位移我不确定,这是我的代码片段。注释可能有助于将位移到正确的位置,R 代表保留。
data[4] = 7;
data[5] = 1 << 4; // PCR_flag

// pcr has 33+9=42 bits

// 4 3 2 1 0
// 76543210 98765432 10987654 32109876 54321098 76543210
// xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xRRRRRRx xxxxxxxx
// 10987654 32109876 54321098 76543210 9 8 76543210
// 4 3 2 1 0
// b6 b7 b8 b9 b10 b11

data[ 6] = (pcr >> 34) & 0xff;
data[ 7] = (pcr >> 26) & 0xff;
data[ 8] = (pcr >> 18) & 0xff;
data[ 9] = (pcr >> 10) & 0xff;
data[10] = 0x7e | ((pcr & (1 << 9)) >> 2) | ((pcr & (1 << 8)) >> 8);
data[11] = pcr & 0xff;

关于mpeg-2 - 从 PTS 生成 PCR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com