c++ - 带有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 秒运行一次。
也许,我覆盖它太快而无法加载?
解决方案
推荐阅读
- javascript - 如果自动选中复选框对象为空
- hadoop - SemanticException 无法获取表
- python - 未应用 Django Celery 更改
- c++ - 在 C++ 中管理字符串
- javascript - 即使第一个图像100%可见,如何仅在滚动时才使延迟加载处于活动状态?
- javascript - 如何为基本的 HTML/JS 游戏创建屏幕游戏?
- node.js - Node.js SparkPost 无法通过传输 API 发送附件
- java - 我在将数组列表返回到 downloadsurl() 方法时遇到问题
- flutter - 将原生广告添加到列表视图后,有时在颤振应用程序中会出现 IllegalStateException
- python-3.x - 烦人的while循环