searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

直播流时间戳纠正

2024-11-27 09:37:30
2
0

不同播放器对时间戳异常的兼容性不同,不同客户流的时间戳情况也不同,为了降低误纠正,一般只对明显异常场景进行纠正。

整体纠正方案如下:

duration:前后帧的时间戳差

delt:前后同类型帧的时间戳差

  微小的回退或突增不触发纠正

原因:有些客户原始流时间戳虽回退或突增,但实际音画是同步的,如触发纠正delt或者duration发生改变,可能导致音画不同步

  头部时间戳走自己的逻辑

原因:一般播放器不要求头部时间戳一定要递增,一般只要求起始的音视频头时间戳一致即可,不排除客户端逻辑特殊,故提供给用户选择,可通过跟随后一帧时间戳也可以实现时间戳递增。

  音视频纠正核心逻辑如下:

duration在正常范围内时,纠正后时间戳=上一帧纠正后的时间戳+duration(纠正前);

duration不在正常范围内时,但delt正常时,纠正后的时间戳=上一同类型纠正后的时间戳+Delt(纠正前)

durationdelt不在正常范围内时,纠正后的时间戳=max(上一同类型帧,上一帧)纠正后的时间戳+上一同类型帧在阈值范围内的delt

通过上述逻辑,可以实现在保证时间戳正常递增情况下,原始流的duration或者delt恢复正常时,即可快速恢复,不会因为时间戳纠正而扩大影响时长导致原始流音画不同步。

0条评论
作者已关闭评论
杨****敏
4文章数
0粉丝数
杨****敏
4 文章 | 0 粉丝
杨****敏
4文章数
0粉丝数
杨****敏
4 文章 | 0 粉丝
原创

直播流时间戳纠正

2024-11-27 09:37:30
2
0

不同播放器对时间戳异常的兼容性不同,不同客户流的时间戳情况也不同,为了降低误纠正,一般只对明显异常场景进行纠正。

整体纠正方案如下:

duration:前后帧的时间戳差

delt:前后同类型帧的时间戳差

  微小的回退或突增不触发纠正

原因:有些客户原始流时间戳虽回退或突增,但实际音画是同步的,如触发纠正delt或者duration发生改变,可能导致音画不同步

  头部时间戳走自己的逻辑

原因:一般播放器不要求头部时间戳一定要递增,一般只要求起始的音视频头时间戳一致即可,不排除客户端逻辑特殊,故提供给用户选择,可通过跟随后一帧时间戳也可以实现时间戳递增。

  音视频纠正核心逻辑如下:

duration在正常范围内时,纠正后时间戳=上一帧纠正后的时间戳+duration(纠正前);

duration不在正常范围内时,但delt正常时,纠正后的时间戳=上一同类型纠正后的时间戳+Delt(纠正前)

durationdelt不在正常范围内时,纠正后的时间戳=max(上一同类型帧,上一帧)纠正后的时间戳+上一同类型帧在阈值范围内的delt

通过上述逻辑,可以实现在保证时间戳正常递增情况下,原始流的duration或者delt恢复正常时,即可快速恢复,不会因为时间戳纠正而扩大影响时长导致原始流音画不同步。

文章来自个人专栏
直播小知识
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0