http-live-streaming - Http Live Streaming ts 段不以关键帧开始

标签 http-live-streaming keyframe mpeg2-ts

我正在使用苹果的 http 实时流媒体将实时视频流式传输到 ipad/iphone。其中一个重要步骤是将传输流分段为多个 ts 片段以及播放列表。根据苹果的文档,推荐的ts段持续时间是10秒。然而,较长的持续时间总是意味着更多的延迟,因此我尝试将此持续时间减少到 2 甚至 1 秒。

Apple文档还要求在关键帧边界之间进行分割,这意味着每个ts段都应该以关键帧开始,这样才能独立播放。冲突的部分来了,传输流每隔一两秒就有一个关键帧几乎是不可能的,而且也是浪费的。所以我的问题是,如果 ts 段不以关键帧开头,http 直播仍然可以工作吗?

最佳答案

视频流很容易每隔一两秒就有一个关键帧。例如,广播电视通常每半秒就有一个关键帧。编码器的配置参数将被称为“GOP”(图片组)大小或关键帧间隔。

更频繁的关键帧会降低编码效率(需要更多字节才能达到相同的质量),但确实提高了查找性能。

直接回答您的问题:不。如果 ts 段不以关键帧开头,HLS 将无法正常工作。这是有两个原因。

  1. 必须能够查找任何段并具有可立即解码的有效数据。

  2. 必须能够在任何段边界处的不同比特率之间切换。不能引用不同的流,因为缓存的数据将无效。

关于http-live-streaming - Http Live Streaming ts 段不以关键帧开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640072/

相关文章:

使用客户端证书的 iPhone https 授权

ios - HLS 冗余流和不良网络导致 AVPlayer 行为奇怪

ffmpeg - 简单的 hls 服务器 - 从本地 NAS 流式传输

streaming - 从哪里开始/拆分 mpeg2-ts

video - 使用 ffmpeg 从 mpegts 文件中提取特定流的字节

ios - AVPlayer seekToTime : doesn't use buffer

CSS 关键帧动画在中间暂停然后再次恢复?

html - 如何让CSS动画完成后不反转?里面的例子

ffmpeg 返回 'frame_pts' 作为无法识别的选项

resolution - 如何在 H.264 MPEG-2 TS 中查找分辨率和帧率值?