我正在使用苹果的 http 实时流媒体将实时视频流式传输到 ipad/iphone。其中一个重要步骤是将传输流分段为多个 ts 片段以及播放列表。根据苹果的文档,推荐的ts段持续时间是10秒。然而,较长的持续时间总是意味着更多的延迟,因此我尝试将此持续时间减少到 2 甚至 1 秒。
Apple文档还要求在关键帧边界之间进行分割,这意味着每个ts段都应该以关键帧开始,这样才能独立播放。冲突的部分来了,传输流每隔一两秒就有一个关键帧几乎是不可能的,而且也是浪费的。所以我的问题是,如果 ts 段不以关键帧开头,http 直播仍然可以工作吗?
最佳答案
视频流很容易每隔一两秒就有一个关键帧。例如,广播电视通常每半秒就有一个关键帧。编码器的配置参数将被称为“GOP”(图片组)大小或关键帧间隔。
更频繁的关键帧会降低编码效率(需要更多字节才能达到相同的质量),但确实提高了查找性能。
直接回答您的问题:不。如果 ts 段不以关键帧开头,HLS 将无法正常工作。这是有两个原因。
必须能够查找任何段并具有可立即解码的有效数据。
必须能够在任何段边界处的不同比特率之间切换。不能引用不同的流,因为缓存的数据将无效。
关于http-live-streaming - Http Live Streaming ts 段不以关键帧开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640072/