HTML5 播放下一个视频,没有延迟
HTML5 Play next video without delay
所以我正在尝试在不使用 MediaSource 扩展的情况下分段流式传输视频。(因为并非所有浏览器都支持 MSE)。现在我正在尝试通过加载两个视频元素并在适当的时候播放下一个来做到这一点。但这在切换之间有一个非常小的延迟。我试图继续检查视频的当前时间,并在一小部分播放下一个视频元素后。但这并不那么好(音频重叠或延迟)
请注意,视频是从 Blob 存储预加载和加载的。因此,加载不应延迟播放。
如何在不使用 MediaSource 扩展的情况下使这个(或其他没有闪存的解决方案)流畅播放?
最好的办法是使用两个视频元素,一个放在另一个之上。第一个应该是播放视频的当前部分(或块)。第二个视频元素应加载包含下一个区块的 blob 并暂停。它也应该是隐藏的(您可以设置display:'none'
或z-index:-99999
)。然后,当第一个视频元素结束时(调度end
事件),调用第二个视频元素的 play()
方法,显示它,并隐藏第一个视频元素。冲洗并重复。
这就是LifemirrorPlayer所做的。
如果流的块被完美编码和剪切,那么这种技术就有效。通常不会。常见问题包括:
-
同步音频流可能是最困难的。播放二三十个块后,音频通常会失去与视频的同步。这对观众来说非常烦人,很难检测和修复(我实际上不知道任何解决方案)。
-
视频元素不会结束。这通常是由编码器将过多(或太少)的内容放入块中引起的。它也可能是由不正确的块切割、错误的编码器或解码器引起的。
-
交换两个视频元素时闪烁。这取决于浏览器。但是,大多数浏览器都可以很好地处理此问题,并且交换快速流畅。
相关文章:
- 视频HTML没有'无法在Internet Explorer 11上工作
- 播放当前视频时如何停止其他视频?JavaScript
- 可以简化嵌套的延迟Q Promises解析吗
- 使用Facebook live API创建实时视频对象时的隐私设置
- Brightcove获取/显示HTML中的当前视频标题和描述
- onclick函数需要双击,因为类分配延迟
- Twilio-显示所有连接参与者的远程参与者视频
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- 更多延迟动画
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何检查用户在html5视频播放器中观看了完整的视频
- 单击播放按钮后延迟视频
- html 5视频的卸载播放延迟
- safari中的html5视频自动播放延迟
- 在页面的其余部分完成加载后,延迟加载html5视频
- Youtube延迟自动启动视频
- Flowplayer自动播放播放列表与视频之间的延迟
- 如何在WordPress网站上延迟YouTube视频的JavaScript解析
- HTML5 播放下一个视频,没有延迟
- 如何设置 HTML5 视频的音频延迟(取消同步)