【问题标题】:hls video: Why is there a difference between segment length and target duration?hls 视频:为什么片段长度和目标持续时间之间存在差异?
【发布时间】:2019-12-10 06:47:18
【问题描述】:

我正在尝试为 hls 视频准备文件。 作为播放器,我正在使用 video.js,并且正在使用 ffmpeg 将我的内容转码为多个不同大小和比特率的流。 我尝试了很多选项,但主要是我保持帧率和比特率不变,并且每秒生成 iframe,因为我想要 3s 段。

然后我用 mp4hls 对流进行分段并处理播放列表。

似乎一切正常,播放列表正确,iframe 也正确,但是:

片段的长度是 2 秒,而不是预期的 3 秒?

something like: 
...-b:v: 192k -bufsize 200k -maxrate 192k -r 30 -g 30 -x264opts no-scenecut

在 python 中: mp4hls --segment-duration 3 320x180.mp4 480x270.mp4 640x360.mp4 ....

我想知道我的工作流程中是否存在错误 或者如果我在 hls 规范中读到这是正确的 该段必须等于或小于#EXT-X-TARGETDURATION:3 有人可以向初学者解释一下,为什么段不一样 长度大于 写在播放列表中。我找不到关于这个话题的任何信息。谢谢。

【问题讨论】:

    标签: http-live-streaming duration segment


    【解决方案1】:

    所有片段不需要相同的持续时间。目标持续时间只是提示玩家应该多久更新一次清单。

    【讨论】:

    • 也就是说,播放器不需要任何分段,他只按照播放列表的指示?但是为什么我们要把文件分成块呢?
    【解决方案2】:

    这几乎总是一个帧率问题。看起来你正在使用 FFMPEG。它具有场景剪切的默认设置并计算出自己的关键帧。因此,如果您想要特别定时的片段,则需要明确设置。在我的脑海中,您需要设置 GOP 和关键帧值。类似于:

    -g 60 -keyint_min 60 -sc_threshold 0
    

    将为您提供 30fps 输入的严格 2 秒片段

    【讨论】:

      猜你喜欢
      • 2018-10-12
      • 1970-01-01
      • 2011-07-31
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多