时间戳原理

时间戳由时间基准和时间戳值组成。

时间基准:对时间单位(s)划分的标准。

例如,1/25表示每秒分为25个单位,每个单位时间间隔包含1个单位。

3001/90000表示每秒分为90000单位,每个单位时间间隔包含3001个单位。

时间戳值:基于时间基准的时间表示,也即多少个单位时间间隔。

1)时间戳的作用是用于精确标记音视频流的相对位置和持续时间。

2)基于时间基准使用时间戳,而不是直接使用整数值的意义在于,时间戳可以避免不能够整除的情况。

3)不同的时间基准之间的时间戳转换存在误差,应该避免不必要的转换。

如果的确需要转换,应该保证转换后的时间戳不小于转换前。

4)不同时间基准直接的时间戳比较,应该首先转换到划分更细的单位上(1/1hns)进行。

5)系统时钟相当于1/1000的时间戳,音视频播放同步,实际就是流自身的时间戳与系统时间戳的一个比较。

由于时间戳转换存在误差,所以播放同步实际也是存在误差。所以不要纠结于等号,而是尽量设置一个可容忍的误差时长。

时间: 2025-01-18 15:44:02

时间戳原理的相关文章

python time

import time #time.time() 获取时间戳 print time.time() #将时间戳转成元组 #time.localtime() now_time_1 = time.localtime(time.time()) print now_time_1 #time.strptime(time_str, 格式) 格式匹配字符串的时间格式 now_time_2 = time.strptime("2017 01 01", "%Y %m %d") print

分布式系统理论基础 - 时间、时钟和事件顺序

十六号…… 四月十六号.一九六零年四月十六号下午三点之前的一分钟你和我在一起,因为你我会记住这一分钟.从现在开始我们就是一分钟的朋友,这是事实,你改变不了,因为已经过去了.我明天会再来. —— <阿飞正传> 现实生活中时间是很重要的概念,时间可以记录事情发生的时刻.比较事情发生的先后顺序.分布式系统的一些场景也需要记录和比较不同节点间事件发生的顺序,但不同于日常生活使用物理时钟记录时间,分布式系统使用逻辑时钟记录事件顺序关系,下面我们来看分布式系统中几种常见的逻辑时钟. 物理时钟 vs 逻辑时

节流和防抖的实现

1 防抖 + 定义:合并事件且不会去触发事件,当一定时间内没有触发这个事件时,才真正去触发事件 + 原理:对处理函数进行延时操作,若设定的延时到来之前,再次触发事件,则清楚上一次的延时操作定时器,重新定时 + 场景:keydown事件上验证用户名,输入法的联想 + 实现: function debounce(fn, delay) { var timer; return function() { var that = this; var args = arguments; clearTimeout

后端技术:分布式系统理论 - 从放弃到入门

分布式系统理论 - 从放弃到入门随承载用户数量的增加和容灾的需要,越来越多互联网后台系统从单机模式切换到分布式集群.回顾自己毕业五年来的工作内容,同样有这样的转变. 毕业头两年负责维护运行在刀片机上的业务,在机房里拔插单板的日子是我逝去的青春.设备之间通过VCS组成冷备,但即使有双机软件保护,宕机.网络丢包等问题发生时业务仍会受影响.这样的系统架构下为保证SLA,有时候需要深入 Linux系统内核或硬件层面分析机器重启的原因. 接下来负责维护承载在分布式集群上的业务,相比前面的工作,这个阶段主要

时间戳的原理

时间戳由时间基准和时间戳值组成. 时间基准:对时间单位(s)划分的标准. 例如,1/25表示每秒分为25个单位,每个单位时间间隔包含1个单位. 3001/90000表示每秒分为90000单位,每个单位时间间隔包含3001个单位. 时间戳值:基于时间基准的时间表示,也即多少个单位时间间隔. 1)时间戳的作用是用于精确标记音视频流的相对位置和持续时间. 2)基于时间基准使用时间戳,而不是直接使用整数值的意义在于,时间戳可以避免不能够整除的情况. 3)不同的时间基准之间的时间戳转换存在误差,应该避免不

QML被系统缓存的原理是比较时间戳

Gunnar Roth January 25, 2017 at 17:07 Afaik the cached qml file contains a checksum of the original qml and the qml dll. if any of this changes it will be discarded. Simon January 25, 2017 at 19:12 Basically Gunnar is correct. We look at the time sta

架构师之路--视频业务介绍,离线服务架构和各种集群原理

先聊聊业务.我们媒资这边目前的核心数据是乐视视频的乐视meta和专门存储电视剧,综艺节目,体育赛事这种长视频的作品库.乐视视频的数据都是多方审核的,需要很多运营.但是作品库部分却是弱运营的,运营都不超过10个人.结果做了两个app,日活都有四五百万的样子.我们其实都有各样的技术储备,很容易可以抓取人家数据,自己套上一个壳子在线解码.但是我们逼格很高,都不这么做的.乐视是个非常注重版权的公司.我名下都有近百个专利了. 撇开这个项目,先看这边一般web项目的常用JVM配置. <jvm-arg>-X

inode工作原理及软连接与硬链接

 inode工作原理及软连接,硬链接 inode: 在linux文件系统中,不管什么类型的文件,保存在磁盘分区中时,系统都会分配一个编号,叫做索引节点index node,简称inode inode里面存储了文件的很多参数: 文件类型,权限.UID,GID,属主,属组 链接数(指向这个文件名路径名称个数) 该文件的大小和不同的时间戳 指向磁盘上文件的数据指针 .... 在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)

[转]JVM 堆内存设置原理

堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大. Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Young Generation).年老代和年轻代的划分对垃圾收集影响比较大. 年轻代 所有新生