【问题标题】:Prevent FFMPEG from skipping expired frames防止 FFMPEG 跳过过期帧
【发布时间】:2017-11-27 16:58:58
【问题描述】:

我正在使用 ffmpeg 保存带有 .m3u8 url 的实时流。我经常看到以下消息。这会导致输出视频冻结。

skipping 5 segments ahead, expired from playlists

我怎样才能告诉 ffmpeg 只写帧而忽略它们已过期?我宁愿看一段断断续续的视频,也不愿让它冻结。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    老问题,但是WTH...也许它可以帮助某人。

    如果我对情况的理解正确,则该消息意味着 ffmpeg 正在跳过 5 个完整块(“段”)的下载。

    这不是关于“过期帧”,而是“我已安排下载但不再在播放列表上发布的块”。

    5 个块/段可能长达几秒钟,而不仅仅是 5 帧。这就是你看到冻结的原因。

    也许您可以尝试对输入使用一些过滤器,这样输出多路复用器可能会填补分段间隙。看一下叠加过滤器,例如:https://ffmpeg.org/ffmpeg-filters.html#Examples-82

    【讨论】:

    • 好的。所以我正在做的是保存直播视频。那么我如何告诉 ffmpeg 检索所有段,即使它们“过期”并按照它们应该出现的顺序将它们写入文件。不通过 ffmpeg 流式传输这些视频会产生清晰的视频,不会冻结。
    • 不想投反对票,但这个答案有什么帮助?
    • 每次我尝试使用ffmpeg(通常通过youtube-dl)记录它时,我经常查看一个存在此问题的站点。网络播放器没有这样的问题,所以我很清楚跳过的片段是可用的,并且缺少在录制中显示为冻结的动作。您可以在 ffmpeg 日志输出中每个 URL 末尾的 ts 编号中看到这一点。对于通常的进程,每个数字相差 1,但有时相差更大,即跳过的数字。但我不知道如何让ffmpeg 不跳过这些片段。也许我需要深入研究ffmpeg 源代码。
    猜你喜欢
    • 2019-01-13
    • 1970-01-01
    • 2013-04-30
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多