【问题标题】:ffmpeg limit number of segment fileffmpeg 限制段文件的数量
【发布时间】:2018-02-04 06:55:12
【问题描述】:

我正在学习生成 hls 流

目前我的 ffmpeg 命令看起来像

ffmpeg -analyzeduration 100000000 -probesize 1000000 \
-i https://nasa-i.akamaihd.net/hls/live/253565/NASA-NTV1-Public/master_500.m3u8 \
-c:v copy -g 90 -c:a aac \
-strict -2 \
-strftime 1  -use_localtime 1 -g 90 \
-hls_time 20 \
-hls_list_size 15 \
-hls_wrap 16 \
-hls_segment_filename mydir/%Y-%m-%d_%H-%M-%S.ts \
-f hls $4/index.m3u8 \
-hls_flags delete_segments \

我只想拥有 15 个 ts 文件,每个文件 20 秒。

问题是:

  1. 它仍然生成超过 15 个文件,从不删除旧文件。而 index.m3u8 文件内容不断更新,只列出了 15 个 ts。

  2. 当我重新启动命令时,index.m3u8 仅从 1 个文件开始,而不是更新它的列表。

【问题讨论】:

    标签: ffmpeg http-live-streaming m3u8


    【解决方案1】:

    一些事情:

    1) -hls_flags delete_segments 出现在输出文件名之后,这里是播放列表。所以没有应用。如果您指定了,它将应用于下一个输出。将其移到 m3u8 名称之前。

    2) 由于您是在复制视频,-g 无效。它也是重复的。删除两者。

    3) 如果您使用 hls_wrap,请将其设置为 15 并删除 hls_flag。如果要使用该标志,请删除 hls_wrap。由于 delete_segment 的工作方式,旧文件会在“片段的持续时间加上播放列表的持续时间。”之后被删除。因此,您最终会得到至少 2 x list_size 段。

    【讨论】:

    • 根据您的启示完成,删除未使用的 -g ,删除标志......并将 hls_wrap 15 放在 -hls_segment_filename 和 m3u8 之前。但仍然有更多 2 x hls_list_size .....
    • 我正在尝试将报告日志粘贴到 pastebin .... 我认为这对它来说太大了。好的,在这里,在我运行命令后立即复制... pastebin.com/GnSgaq1w
    • 这按预期显示了 50 秒的输出和 3 个文件。需要运行它,直到它创建 15 个以上的段。
    • 我认为我的连接不够好,无法使用 pastebin。所以这里是ufile.io/03f6l,生成的ts文件数是35
    • 由于您的 TS 文件名是时间格式的,ffmpeg 不会重新打开第一个文件进行覆盖。您必须使用 delete_segments。
    【解决方案2】:

    你应该设置 -hls_list_size 为 0(0 为最大值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 2015-11-22
      • 2011-09-28
      • 2020-03-13
      • 2012-11-10
      • 2011-11-15
      相关资源
      最近更新 更多