【问题标题】:Reduce/remove buffer lag on <video> element (iOS)减少/删除 <video> 元素上的缓冲延迟 (iOS)
【发布时间】:2014-04-11 18:40:25
【问题描述】:

我们有一个 FFMPEG 流正在流式传输到移动设备。我们使用 HTML5 &lt;video src="..." webkit-playsinline&gt; 标签来显示视频内联(在实时流媒体应用程序中)。我们已设法将 FFMPEG 端的延迟降至最低,但在 iOS 端仍有延迟,播放器可能会缓冲几秒钟。

有什么办法可以减少客户端延迟?

我们需要尽可能接近实时,跳过是可以接受的。

【问题讨论】:

标签: ios html video html5-video


【解决方案1】:

如果您使用的是 HTML5 视频标签,则 iOS 设备将使用 Quicktime 播放视频。 Apple 无法控制其 Quicktime 播放器的缓冲区设置等内部机制。对于 Apple TV 上的一个项目,我什至与 Apple 库比蒂诺的一个人一起工作,他们只是不允许访问您在他们的设备上需要的信息。

通常如果您使用HLS:

这是一个实时交付系统吗?

没有。它具有与包含流段的媒体文件的大小和持续时间相对应的固有延迟。至少一个片段必须完全下载才能被客户端查看,并且可能需要两个片段以确保片段之间的无缝转换。此外,编码器和分段器必须从输入创建文件;此文件的持续时间是媒体可供下载之前的最小延迟。推荐设置的典型延迟约为 30 秒。

什么是延迟?

大约 30 秒,建议设置。请参阅问题 #15。

对于 iOS 上的直播场景,您最好在实际播放器之前调整流媒体链: 捕获 -> 转码 -> 上传 -> 流服务器 -> 交付 -> 播放

使用 ffmpeg,您可以在转码级别调整 zero lantency streaming,我知道您已经这样做了。之后,使用完善的流媒体服务器(如 Wowza 和 CDN 交付)将帮助您到达那里(当然需要一定的成本 - 假设您需要一个流媒体服务器,但您可能不需要)。

如果您的 iOS 应用程序完全是原生的,您可以查看 MPMoviePlayerController。我对 iOS 中的本机应用程序代码没有经验,所以我让你决定是否值得花时间(我仍然怀疑这是否可能,因为底层的 Quicktime/HLS 层)。

我还遇到了this,这听起来很有趣,但我没有测试过,即使使用这种方法,你也会面临限制。

即使它可能不是您正在寻找的答案,我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 2012-06-25
    • 2016-11-19
    • 1970-01-01
    • 2018-04-10
    • 2021-10-22
    • 2014-06-12
    • 2021-09-29
    相关资源
    最近更新 更多