video - 基于 PCR 的 MpegTSFile 查找

标签 video mpeg-2 mpeg2-ts

我想实现 MpegTs 文件播放的查找功能。 任何人都可以建议我如何将 PCR 转换为时间(以 mescs 为单位)。 我知道 PCR 用于查找(我在 VLC 中见过),但想知道如何做到这一点。

亲切的问候, 文

最佳答案

PCR 是一个时钟,代表编码器端的 27 Mhz 时钟。因此 PCR 时钟的每个滴答声代表 1/27 微秒。

第一步是能够解析 PCR 数据包。 PCR 刻度由特定的 PID 维护(主要是视频,但也可以是音频或替代数据包)。当数据包中存在PCR时,它属于Adaptation字段,类型为2或3。可以引用thiswiki了解如何解析 PCR。

一旦获得数据包的 PCR 值 -(使用 64 位整数),您就获得了该数据包的时间戳 P0。现在你可以精确地说 10 秒,当你收到下一个 PCR 数据包时,带有时间戳,P1 其中

P1 = P0 + 10 * 27 * 10^6

因此,当您看到另一个包含时间戳 P1 或更多的此类数据包时,您可以确定已经过去了 10 秒。

请注意,在某些情况下,PCR 可能会发现不连续性,因此,在 PCR 碱基移位点需要进行更多计算。

关于video - 基于 PCR 的 MpegTSFile 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443615/

相关文章:

html - 在浏览器中播放包含 MPEG-2 和/或 H.264 的 MPEG-2 传输流

mpeg-2 - 从 PTS 生成 PCR

node.js - 是否可以从单个流字节范围 block 创建新的 mp4 文件?

video - 如何将 openRTSP 中的 MP4 文件编码优化到与 FFmpeg 相同的级别?

javascript - Jquery/Javascript 视频替换

c++ - FFMPEG:多路复用不同持续时间的流

c# - 通过 .NET 访问 MPEG 传输数据包

audio - 在 directshow 图中设置音频样本的时间戳