码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 六、RTMP协议 时间戳


    RTMP时间戳

    基本介绍

    • RTMP中时间戳的单位为毫秒(ms)
    • 时间戳为相对于某个时间点的相对值
    • 时间戳的长度为32bit,不考虑回滚的话,最大可表示49天17小时2分钟47.296秒
    • Timestamp delta单位也是毫秒,为相对于前一个时间戳的一个无符号整数; 可能为24bit或32bit

    Message时间戳

    Timestamp:
    Four-byte field that contains a timestamp of the message.
    The 4 bytes are packed in the big-endian order.
    • RTMP Message的时间戳 4个字节
    • 大端存储

    【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
    【文章福利】:

    免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

      

    Chunk时间戳

    Chunk Format

    用wireshark转包分析发现,rtmp流的chunk视频流(或音频流)除第一个视频时间戳为绝对时间戳外,后续的时间戳均为timestamp delta,即当前时间戳与上一个时间戳的差值。
    比如帧率为25帧/秒的视频流,timestamp delta基本上都为40ms。

    通常情况下,Chunk的时间戳(包括绝对时间戳和Timestamp delta)是3个字节。
    但时间戳值超过0xFFFFFF时,启用Extended Timestamp(4个字节)来表示时间戳
    。

    通常情况下 -- 3字节

    三字节的timestamp可能为绝对timestamp或timestamp delta。

    timestamp delta (3 bytes):
    For a type-1 or type-2 chunk, the difference between the previous chunk’s timestamp and the current chunk’s timestamp is sent here.
    If the delta is greater than or equal to 16777215 (hexadecimal 0xFFFFFF), this field MUST be16777215, indicating the presence of the Extended Timestamp field to encode the full 32 bit delta. Otherwise, this field SHOULD be the actual delta.

    timestamp delta的值超过16777215 (即16进制的0xFFFFFF)时,这时候这三个字节必须被置为: 0xFFFFFF,以此来标示Extended Timestamp(4字节)将会存在,由Extended Timestamp来表示时间戳。

    时间戳超过0xFFFFFF时 -- 4字节

    • Extended Timestamp为4个字节。

    • 当Chunk Format中Message Header中的三字节时间戳的值为0xFFFFFF,即时间戳或timestamp delta超过16777215 (0xFFFFFF)时,Extended Timestamp才存在。
  • 相关阅读:
    从指定路径加载 Python 模块
    金融行业备份容灾:如何满足严格行业标准同时实现成本效益优化?
    Leetcode1662:检查两个字符串数组是否相等
    Docker入门学习(笔记1)
    Flutter笔记:拖拽手势
    JS逆向实战27——pdd的anti_content 分析与逆向
    数据驱动成功:小程序积分商城的数据分析
    状态模式 行为型模式之六
    笔记 | 非素数个数(朴素筛查 || 埃式筛查法)
    【智慧医疗】Springboot+Vue+Element-UI前后端分离的医疗管理平台
  • 原文地址:https://blog.csdn.net/irainsa/article/details/127888861
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号