如何循环MPEG TS流



我正在寻找一种将TS文件作为无限循环的http流进行流式传输的方法。我试着只是连接文件,但这会导致播放损坏。

我有读取TS数据包标题的基本代码,但我不确定数据包与底层视频流的关系。帧是否与数据包对齐(这样我就可以通过重复正确的数据包来循环它),或者我必须对原始TS流进行完全解复用/重新复用才能使其工作?

托管http流的服务将在一个基于Amlogic S802的Android STB上运行,是否可以通过Java通过Android版本的ffmpeg传输这些数据,或者任何解决方案都必须是纯Java?

TS文件包含时间戳(PTS和DTS),有些播放器确实依赖它们,有些则不依赖。

例如,如果从HLS流中获取.ts文件并将它们连接起来,它们通常会正常播放,因为时间戳在块中是连续的。

在您的情况下,您可以尝试在ffmpeg中使用连接格式或过滤器-https://trac.ffmpeg.org/wiki/Concatenate

您也可以手动解析TS数据包,但我建议使用libav库的解复用器来提取视频和音频数据包。

如果你在安卓系统上运行,那么你可以看看谷歌对TsExtractor-https://github.com/google/ExoPlayer/blob/master/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java

相关内容

  • 没有找到相关文章

最新更新