如何使用时间戳来搜索.m2ts文件?

时间:2015-09-02 13:37:37

标签: timestamp low-level mpeg mpeg2-ts transport-stream

我有.m2ts视频文件(VBR,持续时间= 1小时)。
如果我想从20分钟开始播放此文件,我需要知道应该从哪个字节读取此文件。
M2TS是标准TS,在同步字节(0x47)之前有4字节时间戳,但我不明白如何使用它。请在我的视频文件中查看同步字节之前的时间戳:
0D 9E E2 02
35 8B 62 28
1D 77 E2 4F
05 64 62 76
二维50 E2 9C
15 3D 62 C3
3D 29 E2 E9
25 16 63 10
有人可以解释如何使用时间戳来搜索.m2ts文件吗?

1 个答案:

答案 0 :(得分:3)

M2TS 没有 4字节的时间戳。

它具有的是4字节TP_extra_header,包含2-bit复制权限指示符加上30-bit到达时间戳(ATS),分辨率为27 MHz

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | C |                         ATS                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                       TS [188 bytes]                          |
   |                                                               |
   | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |

由于BDAV格式用于存储,因此它使用可变速率(VBR)传输流而不是广播中发现的典型恒定速率(CBR)流来节省空间。记录到达时间,以便能够convert the variable stream into a constant rate和T-STD兼容播放。

此时间戳将每隔(2^30 - 1) / 27000000 ~= 39.768秒翻转一次。

例如:1D77E24F ∧ 3FFFFFFF是十进制494395983 / 27000000 ~= 18.32秒。

我对BD并不熟悉,但我认为有关m2ts文件的更多信息会保存在clpimpls附带的文件中。如果您只有m2ts文件,那么您必须通过PCR寻找。