回放流与直播流的区别

回放流的特点

  1. 回放流是非实时的,不依赖时间戳。
  2. 回放流不会丢帧,因为它不依赖时间戳。
  3. 回放流有seek逻辑(需要业务端发送接口让服务器端seek,依赖服务器)
  4. 回放流可以倍率播放(需要业务端发送接口让服务器端倍率推流,依赖服务器)

seek逻辑可以看seek操作

倍率播放可以看倍率播放

直播流的特点

  1. 直播流是实时性的,高度依赖时间戳。
  2. 直播流会根据时间戳来计算延迟,如果延迟超过了设置的值,就会丢帧。
  3. 直播流没有seek逻辑,只能从当前时间开始播放。
  4. 直播流没有倍率播放逻辑,只能正常速度播放。

关于自己实现的进度条如何更新时间

业务端需要自己实现进度条,那么如何更新时间呢?

可以通过监听播放器提供的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,否则会导致计算错误。