2013-04-15 122 views
0

我正在研究媒体播放器应用程序:播放ISDB-T音频和视频。 我正在使用GStreamer进行解码&的渲染。计算TS文件持续时间

为了使AV同步工作完美,我应该规范文件读取:这样数据将不会被推到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

如果您在传输流中的编码和PES层足够的认识,那么你可以阅读TS内的时间戳和自己进行计算。 它需要寻找文件的末尾,搜索最后的时间戳,并在文件开头减去同一程序的第一个时间戳。

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会给出持续时间在秒