首页 > 解决方案 > 带有FFmpeg的HLS,浏览器按顺序跳过m3u8

问题描述

我正在用 C++ 编写一个程序,接收 2 秒长的 mp4 视频并将其实时转换为 m3u8 和相同持续时间的 ts 文件。

问题是当我在 PC 上使用浏览器检查它时,它没有正确加载 m3u8。

例如,当我开始观看 m3u8 时,它首先加载带有 #EXT-X-MEDIA-SEQUENCE:1 的 m3u8,然后继续加载第一个 m3u8,然后突然跳到 #EXT-X-MEDIA-SEQUENCE:4 或更大。

流式传输仍然有效,但由于该问题,它非常不稳定。它一起加载一些 ts,然后在加载已经加载的相同 m3u8 时什么也不加载,然后跳过 3 个或更多 m3u8 并一次又一次地一起加载 ts 文件。

ffmpeg -loglevel level+warning -i SOURCE.mp4 -an -filter:v fps=fps=10 -f hls -hls_list_size 7 -strftime 1 -hls_segment_filename '1.ts' -hls_flags append_list+omit_endlist DEST.m3u8

这是我程序中的 ffmpeg 命令,使用 hls_segment_filename 选项覆盖 ts 文件,因此我将文件数限制在 100 以下,并且每 2 秒运行一次。

也许,我覆盖它太快而无法加载?

标签: c++ffmpeghttp-live-streaming

解决方案


推荐阅读