减少/删除<video>元素(iOS)</video>上的缓冲区延迟

时间:2014-04-11 18:40:25

标签: ios html5 video html5-video

我们有一个FFMPEG流正在流式传输到移动设备。我们正在使用HTML5 <video src="..." webkit-playsinline>标记来显示内嵌视频(在实时流媒体应用中)。我们已经设法将FFMPEG端的延迟降低到最小值,但iOS端仍然存在延迟,玩家可能会缓冲几秒钟。

有没有办法减少客户端延迟?

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

1 个答案:

答案 0 :(得分:2)

如果您使用的是HTML5视频代码,那么iOS设备将使用Quicktime播放视频。 Apple无法控制内部机制,例如Quicktime播放器的缓冲设置。对于Apple TV上的一个项目,我甚至与Apple的Cupertino的一个人合作,他们只是不允许任何访问他们在他们的设备上需要的信息。

通常,如果您使用HLS

  

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

     

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

     

什么是延迟?

     

大约30秒,推荐设置。见问题#15。

对于iOS上的实时流媒体方案,您最好在实际播放器之前调整流媒体链: 捕获 - &gt;转码 - &gt;上传 - &gt;流服务器 - &gt;交付 - &gt;播放

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

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

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

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