回放流与直播流的区别
回放流的特点
- 回放流是非实时的,不依赖时间戳。
- 回放流不会丢帧,因为它不依赖时间戳。
- 回放流有seek逻辑(需要业务端发送接口让服务器端seek,依赖服务器)
- 回放流可以倍率播放(需要业务端发送接口让服务器端倍率推流,依赖服务器)
seek逻辑可以看seek操作
倍率播放可以看倍率播放
直播流的特点
- 直播流是实时性的,高度依赖时间戳。
- 直播流会根据时间戳来计算延迟,如果延迟超过了设置的值,就会丢帧。
- 直播流没有seek逻辑,只能从当前时间开始播放。
- 直播流没有倍率播放逻辑,只能正常速度播放。
关于自己实现的进度条如何更新时间
业务端需要自己实现进度条,那么如何更新时间呢?
可以通过监听播放器提供的currentPts事件,来获取当前播放时间。
let startPts = null;
let duration = 0;
player.on('currentPts', (pts) => {
console.log('当前播放时间', pts);
if(startPts === null) {
startPts = pts;
}
// 播放时长,可以结合业务上面的开始时间,来计算当前播放时长
duration = pts - startPts;
})
注意每当seek的时候,startPts需要重新赋值为null,否则会导致计算错误。