计算TS文件持续时间

时间:2013-04-15 14:51:26

标签: gstreamer duration mpeg transport-stream

我正在开发媒体播放器应用程序:播放ISDB-T音频和视频。 我正在使用GStreamer进行解码和放大渲染。

为了让AV Sync完美运行,我应该规范文件读取:这样数据就不会被推送到Gstreamer既不太快也不太慢。

If I know the duration of TS file before hand, then I can regulate my reads. But how to calculate the TS file duration ?

因为,我需要使用多个TS文件验证应用程序,无法使用某个实用程序计算持续时间并不断更改文件读取 - 如何在程序中实现?

谢谢,

Kranti

2 个答案:

答案 0 :(得分:2)

如果您对传输流中的编码和PES层有足够的了解,那么您可以读取TS中的时间戳并自行计算。 它需要搜索文件的末尾,搜索最后的时间戳,并在文件的开头减去同一程序的第一个时间戳。

答案 1 :(得分:0)

在大多数情况下,每个PES头包含一个PTS和/或DTS,它以90kHz频率测量。所以步骤可能包括:

  1. 找到您需要从MPEG TS中解复用的程序。
  2. 找到流的PID。
  3. 找到第一个找到PID的TS包,并将payload_start_indicator设置为1;这将是PES帧的开始,它将包含一个PES头。
  4. 解析PES标头以查找流的起始PTS。
  5. 从末尾向后解析文件,以查找具有相同PID和payload_start_indicator集的数据包,该数据包将包含最后一个PTS。 找到他们的差异,除以90000将给出持续时间秒。