CN111464256A - 时间戳的校正方法、装置、电子设备和存储介质 - Google Patents
时间戳的校正方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111464256A CN111464256A CN202010292194.2A CN202010292194A CN111464256A CN 111464256 A CN111464256 A CN 111464256A CN 202010292194 A CN202010292194 A CN 202010292194A CN 111464256 A CN111464256 A CN 111464256A
- Authority
- CN
- China
- Prior art keywords
- time interval
- frame
- media stream
- media
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012937 correction Methods 0.000 title claims abstract description 134
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000005070 sampling Methods 0.000 claims abstract description 103
- 238000009825 accumulation Methods 0.000 claims abstract description 96
- 238000012545 processing Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 14
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 6
- 108091026890 Coding region Proteins 0.000 claims description 4
- 230000000694 effects Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003936 working memory Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/04—Synchronising
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
提供一种时间戳的校正方法、装置、电子设备和存储介质。所述方法包括:获取待处理的媒体流;确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
Description
技术领域
本公开涉及媒体流处理技术领域,特别涉及一种时间戳的校正方法、装置、电子设备和存储介质。
背景技术
相关技术中,在互联网直播过程中,客户端在经过DNS(Domain Name Server,域名服务器)解析获得边缘CDN(Content Delivery Network,内容分发网络)节点的地址后,可从边缘CDN节点进行拉流,获得相应媒体流后可在本地进行解码播放。解码播放的过程会依赖媒体流中音视频帧本身携带的时间戳例如PTS(Presentation Time Stamp,显示时间戳)。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
根据本公开的一个方面,提供一种时间戳的校正方法,包括:获取待处理的媒体流;确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
根据本公开的另一个方面,提供一种时间戳的校正装置,包括:媒体流获取模块,被配置为获取待处理的媒体流;以及媒体流处理模块,被配置为:确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
根据本公开的另一个方面,提供一种电子设备,包括:处理器;以及存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行本公开中所述的方法。
根据本公开的另一个方面,提供一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行本公开中所述的方法。
从下面结合附图描述的示例性实施例中,本公开的更多特征和优点将变得清晰。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出根据本公开示例性实施例的时间戳的校正方法的流程图;
图2是示出根据本公开示例性实施例的音频时间戳的整体校正方法的流程图;
图3是示出根据本公开示例性实施例的视频时间戳的整体校正方法的流程图;
图4是示出根据本公开示例性实施例的媒体流的采样率和帧率的获取过程的示意图;
图5是示出根据本公开示例性实施例的时间戳的校正装置的结构框图;
图6是示出能够应用于本公开示例性实施例的示例性计算设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
另外,在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
相关技术中,在互联网直播过程中,客户端在经过DNS解析获得边缘CDN节点的地址后,可从边缘CDN节点进行拉流,获得相应媒体流后可在本地进行解码播放。解码播放的过程中,会依赖媒体流中音视频帧本身携带的时间戳例如PTS。当媒体流中的音视频帧的PTS是严格按照相应的音频采样率和视频帧率所体现的时间间隔而单调递增时,客户端可以正常解码播放媒体流。但是,相关技术中,客户端获取到的媒体流中的音视频帧的PTS存在因各种原因导致的回退、跳变、或与上一帧差值过大等问题,导致客户端无法实现音视频的同步播放。
对于上述问题,在相关技术中,可在客户端即媒体播放端对音视频帧的PTS进行校正。例如,当音频帧或视频帧的PTS出现回退或跳变导致音视频之间的PTS差值超过给定阈值时,对落后一方的PTS进行调整。例如,直接一步到位将落后一方的PTS调整至与领先一方的PTS相一致,或者,将落后一方的PTS在原来PTS的基础上增加一个额外的小的时间间隔,多次增加直至与领先一方的PTS相一致。
但是,上述PTS校正方式需要以提前给定的阈值进行,始终有延迟。当阈值设定的比较大,例如音频采样率和视频帧率均比较低使得阈值设定的比较大时,若音视频帧的PTS确实存在回退或跳变,会影响视频观感。此外,由于只能在音视频之间的PTS差值超过阈值的情况下进行校正处理,对于每一帧的累积误差,无法实现及时校正。
基于此,本公开提供了一种时间戳的校正方法。图1是示出根据本公开的示例性实施例的时间戳的校正方法的流程图。如图1所示,该方法例如可以包括以下步骤:步骤S101,获取待处理的媒体流;步骤S102,确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;步骤S103,基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;步骤S104,根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及步骤S105,根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
根据图1的流程图所示的时间戳的校正方法,由于在对媒体流中的媒体帧(即音频帧或视频帧)进行时间戳的校正时,可基于该媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔来确定相应的校正时间间隔,以基于该校正时间间隔对该媒体帧的时间戳进行校正,无需等到音视频之间的时间戳差值超过给定阈值的情况下才进行校正处理,因而可更为准确及时地实现音视频时间戳的校正,例如可更为准确及时地消除音视频帧的累积误差,使得音视频之间的时间戳差值始终维持在一个比较小的范围内,从而可提高音视频时间戳的校正效果,使得音视频的同步效果更好,提高用户的视频观感。
在本公开中,所涉及到的媒体帧的时间戳包括PTS。所述媒体帧的PTS(即音视频帧的PTS)可用来指示客户端即媒体播放端的播放行为,例如,可用来指示媒体播放端在哪个时刻或时段显示该媒体帧。
此外,在本公开中,所述时间戳的校正方法可由服务器端设备执行,所述服务器端设备可包括流媒体服务器等位于CDN网络中的CDN节点。相对于相关技术中的基于客户端执行音视频时间戳的校正,采用上游服务器端设备执行时间戳的校正可以省去大量的客户端侧的音视频时间戳的重复校正操作,避免客户端因在进行音视频播放时执行时间戳校正操作导致的占用客户端计算资源、提高客户端硬件门槛的问题,从而可提高客户端的兼容性。
作为替换方案,所述时间戳的校正方法也可由客户端执行。例如,当客户端的计算资源或处理资源充足时,也可由客户端来执行本公开中的时间戳的校正操作。
以下将对图1所示的时间戳的校正方法中的各步骤进行详细说明。
根据一些实施例,步骤S101中获取到的待处理的媒体流为音视频流,所述音视频流中的音频数据和视频数据可以是针对同一视频会话过程例如同一直播过程的音频数据和视频数据。另外,获取到的待处理的媒体流可为压缩包形式,可以先对其进行解压缩得到相应的音频数据和视频数据再进行之后的处理。
根据一些实施例,所述待处理的媒体流可来自媒体源站。例如,以时间戳的校正方法的执行主体为流媒体服务器为例,当客户端开始从流媒体服务器拉流时,所述流媒体服务器可从对应的媒体源站拉流,以获取相应的待处理的媒体流。根据一些实施方式,所述待处理的媒体流可以包括通过单一通道从媒体源站获取到的合流后的音频数据和视频数据。作为替换方案,所述待处理的媒体流也可以包括分别通过两条不同的通道从媒体源站获取到的音频数据和视频数据。
根据一些实施例,由于媒体流中的首个音频帧的时间戳和首个视频帧的时间戳可严格按照相应的参考时间设置(例如可被设置为同一参考时间戳),即该两个帧的时间戳是准确的,可无需进行校正。因而,本公开所述的时间戳的校正方法主要针对媒体流中的各非首个音频帧和各非首个视频帧。相应地,在步骤S102中,确定所述媒体流中的待处理的媒体帧可包括:从所述媒体流中的多个非首个音频帧和多个非首个视频帧中确定待处理的媒体帧。
根据一些实施例,以将音频帧确定为待处理的媒体帧为例,可按照所述媒体流中的所述多个非首个音频帧的前后排列顺序,从所述多个非首个音频帧中依次确定待处理的音频帧。换言之,可首先将所述多个非首个音频帧中的排序最靠前的音频帧确定为待处理的音频帧,以对其进行后续的校正时间间隔确定及相应的时间戳校正操作。之后,可继续从所述多个非首个音频帧中,选取排序第二靠前的音频帧作为待处理的音频帧,以对其进行后续的校正时间间隔确定及相应的时间戳校正操作。依次循环,直至确定所述媒体流中不再存在尚未进行时间戳校正的非首个音频帧。
类似地,在将视频帧确定为待处理的媒体帧时,也可按照所述媒体流中的所述多个非首个视频帧的前后排列顺序,从所述多个非首个视频帧中依次确定待处理的视频帧。
通过这样的方式,所述媒体流中的每个非首个音频帧和每个非首个视频帧的时间戳均可依次得到相应的校正,从而可进一步提高音视频时间戳的校正效果。
可以理解的是,在本公开中,针对音频帧的时间戳校正操作和针对视频帧的时间戳校正操作可以独立进行,相互之间没有执行顺序的要求。例如,可以先执行针对音频帧的时间戳校正操作,之后再执行针对视频帧的时间戳校正操作;或者,先执行针对视频帧的时间戳校正操作,之后再执行针对音频帧的时间戳校正操作;或者,同时执行针对音频帧和针对视频帧的时间戳校正操作等等。根据一些实施方式,为了缩短媒体流时间戳的校正处理时间以提高用户的应用体验,针对音频帧和针对视频帧的时间戳校正操作可以同时执行。
在基于步骤S102确定待处理的媒体帧(可为音频帧或视频帧)之后,即可基于步骤S103、步骤S104和步骤S105对该待处理的媒体帧进行时间戳的校正操作。
根据一些实施例,在步骤S103中,基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔,包括:基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的以分数形式表示的真实时间间隔;将所述真实时间间隔的整数部分作为所述整数级时间间隔,并将所述真实时间间隔的以分数形式表示的余数部分与所述前一同类型媒体帧对应的误差累积时间间隔之和,作为所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔(即所述待处理的媒体帧对应的误差累积时间间隔),其中,所述媒体流中的首个音频帧和首个视频帧对应的误差累积时间间隔为0。这里,待处理的媒体帧的前一同类型媒体帧指的是与该待处理的媒体帧具备相同媒体类型的前一媒体帧。
示例的,以所述待处理的媒体帧为所述媒体流中的第二个音频帧,且所述媒体流的采样率(即音频采样率)为44100hz为例,所述待处理的媒体帧和其前一同类型媒体帧(即媒体流中的首个音频帧)之间的以分数形式表示的真实时间间隔可为 (单位为ms),其中,X表示音频采样率,1024为音频采样样本个数。由于的整数部分为23,余数部分为因而所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔为23ms,所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔为所述前一同类型媒体帧(即首个音频帧)对应的误差累积时间间隔(为0)与之和,即,(单位为ms)。
或者,以所述待处理的媒体帧为所述媒体流中的第三个音频帧,所述媒体流的采样率仍为44100hz为例,所述待处理的媒体帧和其前一同类型媒体帧(即媒体流中的第二个音频帧)之间的以分数形式表示的真实时间间隔仍可为(单位为ms)。相应地,所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔仍可为23ms,所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔可为所述前一同类型媒体帧(即第二个音频帧)对应的误差累积时间间隔(为)与之和,即,(单位为ms)。
再例如,以所述待处理的媒体帧为所述媒体流中的第二个视频帧,且所述媒体流的帧率(即视频帧率)为30fps为例,所述待处理的媒体帧和其前一同类型媒体帧(即媒体流中的首个视频帧)之间的以分数形式表示的真实时间间隔可为(单位为ms),其中,Y表示视频帧率。由于的整数部分为33,余数部分为因而所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔为33ms,所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔为所述前一同类型媒体帧(即首个视频帧)对应的误差累积时间间隔(为0)与之和,即,(单位为ms)。
或者,以所述待处理的媒体帧为所述媒体流中的第三个视频帧,所述媒体流的帧率仍为30fps为例,所述待处理的媒体帧和其前一同类型媒体帧(即媒体流中的第二个视频帧)之间的以分数形式表示的真实时间间隔仍可为(单位为ms)。相应地,所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔仍可为33ms,所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔可为所述前一同类型媒体帧(即第二个视频帧)对应的误差累积时间间隔(为)与之和,即,(单位为ms)。
由于可将以分数形式表示的真实时间间隔的整数部分(即,对真实时间间隔进行向下取整所得整部部分)直接作为整数级时间间隔,并将由真实时间间隔的以分数形式表示的余数部分累积而成的误差时间间隔直接作为误差累积时间间隔(相应地也以分数形式表示),因而,可相对快速简便地确定待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔,以提高后续音视频时间戳的校正效率和校正效果。
根据一些实施例,待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔也可采用其它类似的方式确定。例如,还可确定待处理的媒体帧和其前一同类型媒体帧之间的以非分数形式(例如小数形式)表示的真实时间间隔,并将该以非分数形式表示的真实时间间隔的整数部分作为整数级时间间隔,将由该以非分数形式表示的真实时间间隔的以非分数形式表示的余数部分累积而成的误差时间间隔作为误差累积时间间隔,等等。
根据一些实施例,在步骤S104中,根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔,包括:响应于确定所述误差累积时间间隔不低于设定阈值,将所述整数级时间间隔与所述设定阈值之和作为所述校正时间间隔,并基于所述误差累积时间间隔与所述设定阈值之差,更新所述误差累积时间间隔;以及响应于确定所述误差累积时间间隔低于所述设定阈值,将所述整数级时间间隔作为所述校正时间间隔。
这样,与相关技术中仅考虑与真实时间间隔邻近的整数毫秒级的时间间隔(例如,当音频采样率为44100hz时,相邻音频帧之间的真实时间戳间隔为23.219954648526077ms,但采用的时间戳间隔仅为23ms或者24ms;当视频帧率为33fps时,相邻视频帧之间的真实时间戳间隔为33.333333333333333ms,但采用的时间戳间隔仅为33ms或者34ms)相比,由于还一并考虑误差累积时间间隔(例如由真实时间间隔的余数部分累积而成的误差累积时间间隔)以确定校正时间间隔,例如,在误差累积时间间隔不低于设定阈值时,可及时地进行累积误差的消除,从而可使得时间戳的校正结果更为准确。另外,由于本公开所述方案也无需在对每一个非首个音频帧或每一个非首个视频帧进行校对时,均立即进行累积误差的消除,因而还可同时达到保证音视频时间戳的校正效率,以达到准确性与效率的平衡的效果。
根据一些实施例,所述设定阈值为所述时间戳的最小变更单位,所述时间戳的最小变更单位例如为1ms。
相比于相关技术中的基于音视频PTS之间的给定阈值(通常为10ms~69ms等远大于音视频时间戳的最小变更单位的数值)的校正方式,由于无需等到音视频之间的时间戳差值超过该给定阈值的情况下才进行校正处理,而是在音频帧或视频帧的误差累积时间间隔达到音视频时间戳的最小变更单位时,即可及时地进行累积误差的消除,因而可更为准确及时地实现音视频时间戳的校正,从而可提高音视频时间戳的校正效果。
在根据前述步骤S103和S104确定校正时间间隔之后,即可执行步骤S105所述的基于所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正的操作。
根据一些实施例,在步骤S105中,基于所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正,包括:将所述待处理的媒体帧的前一同类型媒体帧的时间戳与所述校正时间间隔之和作为所述待处理的媒体帧的校正后的时间戳。例如,以所述待处理的媒体帧为音频帧为例,可将待处理的音频帧的前一音频帧的时间戳与所述校正时间间隔之和作为所述待处理的音频帧的校正后的时间戳。
换言之,在本公开中,在基于媒体流的采样率确定出音频前后帧之间的时间戳差值或基于媒体流的帧率确定出视频前后帧之间的时间戳差值之后,可采用严格按照差值累加的方式进行音视频时间戳的校正。
由于各需要校正的音频帧和各需要校正的视频帧均可采用上述严格按照相应差值累加的方式,依次进行时间戳的校正,因而可以使得音视频之间的时间戳差值始终维持在一个比较小的范围内,从而可提高音视频时间戳的校正效果,使得音视频的同步效果更好,提高用户的视频观感。例如,对于音频采样率和视频帧率较小的场景,会有很好的校正效果。
此外,可以理解的是,在基于上述方式完成音视频时间戳的校正之后,还可以每间隔设定时长(例如1ms~10ms等),对校正后的音频数据和视频数据之间的时间戳差值进行监控,以确定二者之间的时间戳差值是否过大(即音视频帧是否可较好地同步),过大则可报警或重新校正,对此不作赘述。
为了更清楚起见,下面将结合图2和图3对本公开中的音频时间戳的整体校正过程和视频时间戳的整体校正过程进行示意说明。
如图2所示(图2示出了根据本公开的示例性实施例的一种音频时间戳的整体校正方法的流程图),所述音频时间戳的整体校正方法可包括以下步骤:
步骤S201:从待处理的媒体流中的多个非首个音频帧中确定待处理的音频帧。
根据一些实施例,可按照所述媒体流中的所述多个非首个音频帧的前后排列顺序,将所述多个非首个音频帧中的排序最靠前的音频帧(即媒体流中的第二个音频帧)确定为第一个待处理的音频帧。
步骤S202:基于所述媒体流的音频采样率,确定所述待处理的音频帧和其前一音频帧之间的以分数形式表示的第一真实时间间隔。
步骤S203:将所述第一真实时间间隔的整数部分作为第一整数级时间间隔,并将所述第一真实时间间隔的以分数形式表示的余数部分与所述前一音频帧对应的误差累积时间间隔之和,作为第一误差累积时间间隔。
根据一些实施例,所述媒体流中的首个音频帧对应的误差累积时间间隔为0。
相应地,以所述待处理的音频帧为所述媒体流中的第二个音频帧,且所述媒体流的音频采样率为44100hz为例,所述待处理的音频帧和其前一音频帧之间的第一整数级时间间隔为23ms,所述待处理的音频帧和其前一音频帧之间的第一误差累积时间间隔为所述前一音频帧(即所述媒体流中的首个音频帧)对应的误差累积时间间隔(为0)与之和,即,(单位为ms)。
步骤S204:确定所述第一误差累积时间间隔是否不低于设定阈值,若是,则执行步骤S2051,否则执行步骤S2052。
根据一些实施例,所述设定阈值可为所述音视频时间戳的最小变更单位,例如,可为1ms。相应地,仍以所述待处理的音频帧为所述媒体流中的第二个音频帧,且所述媒体流的音频采样率为44100hz为例,由于可以确定所述待处理的音频帧和其前一音频帧之间的第一误差累积时间间隔小于1ms,因而可确定执行步骤S2052。
步骤S2051:将所述第一整数级时间间隔与所述设定阈值之和作为第一校正时间间隔,并基于所述第一误差累积时间间隔与所述设定阈值之差,更新所述第一误差累积时间间隔。
示例的,以设定阈值为1ms为例,若满足步骤S2051的执行条件,则第一校正时间间隔会被设置为(第一整数级时间间隔+1)ms,并且第一误差累积时间间隔会被变更为(第一误差累积时间间隔-1)ms。这样,可及时地进行累积误差的消除,从而可使得音频时间戳的校正结果更为准确。另外,由于本公开所述方案也无需在对每一个非首个音频帧进行校对时,均立即进行累积误差的消除,因而还可同时达到保证音频时间戳的校正效率,以达到准确性与效率的平衡的效果。
步骤S2052:将所述第一整数级时间间隔作为所述第一校正时间间隔。
示例的,仍以所述待处理的音频帧为所述媒体流中的第二个音频帧,且所述媒体流的音频采样率为44100hz为例,所述第一校正时间间隔可为23ms。另外,此种情况下,第一误差累积时间间隔将保持不变。
步骤S206:根据所述第一校正时间间隔,对所述待处理的音频帧的时间戳进行校正。
在根据步骤S2051或步骤S2052确定第一校正时间间隔之后,即可基于该第一校正时间间隔,对所述待处理的音频帧的时间戳进行校正。
示例的,以确定出的第一校正时间间隔为23ms为例,可将所述待处理的音频帧的校正后的时间戳设置为(所述待处理的音频帧的前一音频帧的时间戳+23ms)。换言之,在本公开中,在基于媒体流的音频采样率确定出音频前后帧之间的时间戳差值之后,可采用严格按照差值累加的方式进行音频时间戳的校正。
步骤S207:判断所述媒体流中是否还存在尚未进行时间戳校正的非首个音频帧,若是,则跳转至步骤S201以继续确定下一个待处理的音频帧,若否,则结束本次音频时间戳的校正操作。
根据一些实施例,在确定下一个待处理的音频帧时,仍可按照所述媒体流中的所述多个非首个音频帧的前后排列顺序,从所述多个非首个音频帧中依次确定。另外,在确定所述媒体流中不存在尚未进行时间戳校正的非首个音频帧,即确定所述媒体流的音频时间戳校正完毕后,还可将所有音频帧(其中,各非首个音频帧各自携带校正后的时间戳)进行打包和/或与完成视频时间戳校正的所有视频帧一并打包。打包后的音频包或音视频包可用于发送至所需设备,例如发送给相应的客户端等。
以上已结合图2对音频时间戳的整体校正过程进行了示意说明。以下将继续结合图3对视频时间戳的整体校正过程进行示意说明。需要说明的是,视频时间戳的校正过程与前述音频时间戳的校正过程类似,区别主要在于一个针对的是媒体流中的视频帧,另一个针对的是媒体流中的音频帧。
示例的,如图3所示(图3示出了根据本公开的示例性实施例的一种视频时间戳的整体校正方法的流程图),所述视频时间戳的整体校正方法可包括以下步骤:
步骤S301:从待处理的媒体流中的多个非首个视频帧中确定待处理的视频帧。
根据一些实施例,可按照所述媒体流中的所述多个非首个视频帧的前后排列顺序,将所述多个非首个视频帧中的排序最靠前的视频帧(即所述媒体流中的第二个视频帧)确定为第一个待处理的视频帧。
步骤S302:基于所述媒体流的视频帧率,确定所述待处理的视频帧和其前一视频帧之间的以分数形式表示的第二真实时间间隔。
步骤S303:将所述第二真实时间间隔的整数部分作为第二整数级时间间隔,并将所述第二真实时间间隔的以分数形式表示的余数部分与所述前一视频帧对应的误差累积时间间隔之和,作为第二误差累积时间间隔。
根据一些实施例,所述媒体流中的首个视频帧对应的误差累积时间间隔为0。
相应地,以所述待处理的视频帧为所述媒体流中的第二个视频帧,且所述媒体流的视频帧率为30fps为例,所述待处理的视频帧和其前一视频帧之间的第二整数级时间间隔为33ms,所述待处理的视频帧和其前一视频帧之间的第二误差累积时间间隔为所述前一视频帧(即所述媒体流中的首个视频帧)对应的误差累积时间间隔(为0)与之和,即,(单位为ms)。
步骤S304:确定所述第二误差累积时间间隔是否不低于设定阈值,若是,则执行步骤S3051,否则执行步骤S3052。
根据一些实施例,所述设定阈值可为所述音视频时间戳的最小变更单位,例如,可为1ms。相应地,仍以所述待处理的视频帧为所述媒体流中的第二个视频帧,且所述媒体流的视频帧率为30fps为例,由于可以确定所述待处理的视频帧和其前一视频帧之间的第二误差累积时间间隔小于1ms,因而可确定执行步骤S3052。
步骤S3051:将所述第二整数级时间间隔与所述设定阈值之和作为第二校正时间间隔,并基于所述第二误差累积时间间隔与所述设定阈值之差,更新所述第二误差累积时间间隔。
示例的,以设定阈值为1ms为例,若满足步骤S3051的执行条件,则第二校正时间间隔会被设置为(第二整数级时间间隔+1)ms,并且第二误差累积时间间隔会被变更为(第二误差累积时间间隔-1)ms。这样,可及时地进行累积误差的消除,从而可使得视频时间戳的校正结果更为准确。另外,由于本公开所述方案也无需在对每一个非首个视频帧进行校对时,均立即进行累积误差的消除,因而还可同时达到保证视频时间戳的校正效率,以达到准确性与效率的平衡的效果。
步骤S3052:将所述第二整数级时间间隔作为所述第二校正时间间隔。
示例的,仍以所述待处理的视频帧为所述媒体流中的第二个视频帧,且所述媒体流的视频帧率为30fps为例,所述第二校正时间间隔可为33ms。另外,此种情况下,第二误差累积时间间隔将保持不变。
步骤S306:根据所述第二校正时间间隔,对所述待处理的视频帧的时间戳进行校正。
在根据步骤S3051或步骤S3052确定第二校正时间间隔之后,即可基于该第二校正时间间隔,对所述待处理的视频帧的时间戳进行校正。
示例的,以确定出的第二校正时间间隔为33ms为例,可将所述待处理的视频帧的校正后的时间戳设置为(所述待处理的视频帧的前一视频帧的时间戳+33ms)。换言之,在本公开中,在基于媒体流的视频帧率确定出视频前后帧之间的时间戳差值之后,可采用严格按照差值累加的方式进行视频时间戳的校正。
步骤S307:判断所述媒体流中是否还存在尚未进行时间戳校正的非首个视频帧,若是,则跳转至步骤S301以继续确定下一个待处理的视频帧,若否,则结束本次视频时间戳的校正操作。
根据一些实施例,在确定下一个待处理的视频帧时,仍可按照所述媒体流中的所述多个非首个视频帧的前后排列顺序,从所述多个非首个视频帧中依次确定。另外,在确定所述媒体流中不存在尚未进行时间戳校正的非首个视频帧,即确定所述媒体流的视频时间戳校正完毕后,还可将所有视频帧(其中,各非首个视频帧各自携带校正后的时间戳)进行打包和/或与完成音频时间戳校正的所有音频帧一并打包。打包后的视频包或音视频包可用于发送至所需设备,例如发送给相应的客户端等。
虽然前述相关描述中分别以44100hz和30fps为例对所述媒体流的采样率(即音频采样率)和帧率(即视频帧率)进行了示意说明,但所述媒体流的采样率和帧率并不受限于此,例如所述媒体流的采样率还可为99600hz等其它数值,所述媒体流的帧率还可为11fps,12fps,25fps等其它数值,具体可根据实际情况确定。
根据一些实施例,在本公开中,所述媒体流的采样率和帧率均可基于所述媒体流的sequence header(序列头)和/或metadata(元数据)获取。所述媒体流的sequenceheader和/或metadata可来源于媒体源站。例如,以本公开的时间戳校正方法的执行主体为流媒体服务器为例,当客户端开始从流媒体服务器拉流时,所述流媒体服务器可从对应的媒体源站拉流,从而获取到相应媒体流的sequence header和/或metadata等信息,其中,sequence header和/或metadata中的与audiorate字段(或其它类似字段)相关的信息为与采样率有关的信息,与framerate字段(或其它类似字段)相关的信息为与帧率有关的信息。
由于可直接基于能够反映媒体流本身性能的参数例如sequence header和/或metadata获取媒体流的采样率和帧率,因而可提高所获取到的采样率和帧率的准确性,从而可提高后续时间戳校正的准确性。
根据一些实施例,由于相对于sequence header,metadata中的数据可以被修改,因而,在本公开中,可以优先选择基于所述媒体流的sequence header获取所述媒体流的采样率或帧率,以提高所获取到的采样率或帧率的准确性。
例如,以获取媒体流的采样率为例,响应于确定所述媒体流的sequence header未异常,根据所述媒体流的sequence header获取所述媒体流的采样率;以及响应于确定所述媒体流的sequence header异常(例如sequence header格式异常导致无法从中正确读取数据),根据所述媒体流的metadata获取所述媒体流的采样率。类似地,可采用相似方式获取媒体流的帧率。
另外,可以理解的是,在本公开中,为了提高媒体流的处理速率,可以基于相同参数同时获取媒体流的采样率和帧率。例如,可以基于媒体流的sequence header同时获取媒体流的采样率和帧率,或者,基于媒体流的metadata同时获取媒体流的采样率和帧率,等等。作为替换方案,也可以基于不同的参数分别(同时或不同时地)获取媒体流的采样率和帧率。例如,可以基于媒体流的sequence header获取媒体流的采样率,并基于媒体流的metadata获取媒体流的帧率,等等。
根据一些实施例,所述媒体流的sequence header包括与音频数据有关的AACsequence header(高级音频编码序列头)和与视频数据有关的AVC sequence header(高级视频编码序列头),以分别用于从中获取相应的采样率和帧率。类似地,所述媒体流的metadata可包括与音频数据有关的metadata和与视频数据有关的metadata,以分别用于从中获取相应的采样率和帧率。
根据一些实施例,以基于相同参数同时获取媒体流的采样率和帧率为例,由于媒体流的metadata(如果存在)可早于媒体流的sequence header被接收,因而,在接收到媒体流的metadata后,可先不从所述媒体流的metadata中获取所述媒体流的采样率和帧率,而是在接收到所述媒体流的sequence header且确定所述sequence header异常后,再从所述媒体流的metadata中获取所述媒体流的采样率和帧率。而若确定接收到的所述媒体流的sequence header未异常,则可直接从所述媒体流的sequence header中获取所述媒体流的采样率和帧率,以避免一开始即从所述媒体流的metadata中获取所述媒体流的采样率和帧率所带来的操作冗余,提高处理效率。
作为替换方案,也可在接收到媒体流的metadata后,即从所述媒体流的metadata中获取所述媒体流的采样率和帧率,之后,若确定接收到的所述媒体流的sequence header未异常,则可从所述媒体流的sequence header中获取所述媒体流的采样率和帧率,并替换之前从所述媒体流的metadata中获取到的所述媒体流的采样率和帧率(这种情况下,若从sequence header中获取到的采样率和帧率与之前从metadata中获取到的采样率和帧率一致,也可无需替换)。而若确定接收到的所述媒体流的sequence header异常,则可继续使用之前从所述媒体流的metadata中获取到的所述媒体流的采样率和帧率。
需要注意的是,除了可基于所述媒体流的sequence header和/或metadata获取所述媒体流的采样率和帧率之外,还可基于其它方式获取所述媒体流的采样率和帧率。例如,还可采用人工配置方式获取,或者还可基于所述媒体流的SEI(Supplemental EnhancementInformation,辅助增强信息)获取等。该两种方式比较适用于基于媒体流的sequenceheader和metadata均无法获取到相应采样率和帧率的场景,例如媒体流的sequenceheader异常且媒体流的metadata中并不存在采样率和帧率,或者,媒体流的sequenceheader异常且未接收到媒体流的metadata的场景等。
根据一些实施例,为了提高采样率和/或帧率存在动态变化的媒体流的时间戳校正结果的准确性,所述方法还可包括:响应于确定所述媒体流的采样率和/或帧率存在更新,获取更新后的采样率和/或帧率,以基于所述更新后的采样率和/或帧率确定待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔。由此,当媒体流的采样率和/或帧率存在更新时,可以及时获取更新后的采样率和/或帧率,从而可以保证能够对采样率和/或帧率有动态变化的媒体流进行准确的时间戳校正(即,可更好地适应采样率和/或帧率存在动态变化的场景),以进一步提高音视频时间戳的校正效果。
根据一些实施例,由于当媒体流的采样率和/或帧率发生变化时,媒体源站会发送新的sequence header和/或新的metadata给相关设备,因而,可通过确定是否接收到媒体流的新的sequence header和/或新的metadata,简单及时地确定所述媒体流的采样率和/或帧率是否存在更新。例如,若确定所述媒体流的sequence header和metadata中的至少一个存在更新,可认为所述媒体流的采样率和帧率存在更新。再例如,更细节地,若确定所述媒体流的sequence header中的AAC sequence header存在更新,AVC sequence header不存在更新,可确定所述媒体流的采样率存在更新,帧率不存在更新,等等。
下面将结合图4,对本公开中的一种媒体流的采样率和帧率的获取过程进行示意说明。如图4所示,图4示出了根据本公开示例性实施例的媒体流的采样率和帧率的获取过程的示意图,所述媒体流的采样率和帧率的获取过程可包括以下步骤:
步骤S401:接收媒体流的metadata。
步骤S402:读取所述媒体流的metadata中的采样率和帧率。
示例的,可通过读取所述媒体流的metadata中的与audiorate字段相关的信息读取采样率,以及通过读取与framerate字段相关的信息读取帧率。
步骤S403:接收并确定所述媒体流的sequence header是否异常,若未异常,则执行步骤S4041,若异常,则执行步骤S4042。
步骤S4041:读取所述媒体流的sequence header中的采样率和帧率,并替换之前从所述媒体流的metadata中读取的采样率和帧率。
示例的,可通过读取所述媒体流的sequence header中的与audiorate字段相关的信息读取采样率,以及通过读取与framerate字段相关的信息读取帧率。
步骤S4042:继续使用之前从所述媒体流的metadata中读取的采样率和帧率。
步骤S405:确定所述媒体流的采样率和帧率是否存在更新,若是,则执行步骤S4061,若否,则执行步骤S4062。
示例的,可通过确定所述媒体流的sequence header和/或metadata是否存在更新,确定所述媒体流的采样率和帧率是否存在更新。
步骤S4061:获取更新后的采样率和帧率,以基于更新后的采样率和帧率执行后续的确定整数级时间间隔和误差累积时间间隔等操作。
步骤S4062:保持所述媒体流的采样率和帧率不变,以基于当前保持的采样率和帧率执行后续的确定整数级时间间隔和误差累积时间间隔等操作。
由上可知,在本公开中,可基于能够反映媒体流本身性能的参数例如sequenceheader和/或metadata简单及时地获取并判断媒体流的采样率和/或帧率是否存在更新,因而,除了可提高所获取到的采样率和帧率的准确性之外,还可确保能够对采样率和/或帧率有动态变化的媒体流进行准确的时间戳校正,以进一步提高音视频时间戳的校正效果。
以上已经结合附图1~4描述了根据本公开的时间戳校正的示例性方法。下面将结合附图5~6对本公开的时间戳校正的示例性装置、以及电子设备的示例性实施例进行进一步描述。
本公开的一个方面可包括一种时间戳的校正装置。图5是示出根据本公开的示例性实施例的时间戳的校正装置的结构框图。如图5所示,所述时间戳的校正装置500可包括:媒体流获取模块501,被配置为获取待处理的媒体流;以及媒体流处理模块502,被配置为:确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
根据一些实施例,所述媒体流处理模块502,被配置为:基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的以分数形式表示的真实时间间隔;将所述真实时间间隔的整数部分作为所述整数级时间间隔,并将所述真实时间间隔的以分数形式表示的余数部分与所述前一同类型媒体帧对应的误差累积时间间隔之和,作为所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔,其中,所述媒体流中的首个音频帧和首个视频帧对应的误差累积时间间隔为0。
根据一些实施例,所述媒体流处理模块502,被配置为:响应于确定所述误差累积时间间隔不低于设定阈值,将所述整数级时间间隔与所述设定阈值之和作为所述校正时间间隔,并且,基于所述误差累积时间间隔与所述设定阈值之差,更新所述误差累积时间间隔;以及响应于确定所述误差累积时间间隔低于所述设定阈值,将所述整数级时间间隔作为所述校正时间间隔。
根据一些实施例,所述设定阈值为所述时间戳的最小变更单位。
根据一些实施例,所述时间戳包括PTS。
另外,尽管未示出,所述时间戳的校正装置500还可包括采样率/帧率获取模块,被配置为获取媒体流的采样率和/或帧率。所述采样率/帧率获取模块获取采样率和/或帧率的方式可参考前述方法实施例的相关说明,对此不作赘述。
此外,尽管未示出,所述时间戳的校正装置500还可包括打包模块以及发送模块。所述打包模块可被配置为在完成音频时间戳和/或视频时间戳的校正之后,将所有音频帧和/或所有视频帧进行打包,得到对应的音频包、视频包或音视频包。所述发送模块可用于将上述音频包、视频包或音视频包发送给相关设备例如客户端。
以上,对本公开的时间戳校正的示例性装置进行了简要说明。需要注意的是,本公开的示例性时间戳的校正装置的各模块、各单元或各特征的具体实施方式可参见本公开前述示例性时间戳的校正方法中的相应特征的具体实施方式,因而不再赘述。另外,描述本公开的示例性时间戳的校正装置所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定。
另外,本公开的示例性时间戳的校正装置的各模块或各单元的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
本公开的一个方面可包括一种电子设备,该电子设备可包括处理器;以及存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行前述任何方法。参见前述相关描述,所述电子设备包括服务器端设备,并且,所述服务器端设备包括流媒体服务器。
本公开的一个方面可包括存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行前述任何方法。
参照图6,现将描述计算设备2000,其是可以应用于本公开的各方面的硬件设备的示例。计算设备2000可以是被配置为执行处理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数字助理、智能电话、车载计算机或其任何组合。上述时间戳的校正装置500可以全部或至少部分地由计算设备2000或类似设备或系统实现。
计算设备2000可以包括(可能经由一个或多个接口)与总线2002连接或与总线2002通信的元件。例如,计算设备2000可以包括总线2002、一个或多个处理器2004、一个或多个输入设备2006以及一个或多个输出设备2008。一个或多个处理器2004可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。输入设备2006可以是能向计算设备2000输入信息的任何类型的设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或遥控器。输出设备2008可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。计算设备2000还可以包括非暂时性存储设备2010或者与非暂时性存储设备2010连接,非暂时性存储设备可以是非暂时性的并且可以实现数据存储的任何存储设备,并且可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁介质,光盘或任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、高速缓冲存储器和/或任何其他存储器芯片或盒、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备2010可以从接口拆卸。非暂时性存储设备2010可以具有用于实现上述方法和步骤的数据/程序(包括指令)/代码。计算设备2000还可以包括通信设备2012。通信设备2012可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。如上所述的时间戳的校正装置500中的发送模块(如果存在)可以例如由通信设备2012实现。
计算设备2000还可以包括工作存储器2014,其可以是可以存储对处理器2004的工作有用的程序(包括指令)和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器和/或只读存储器设备。
软件要素(程序)可以位于工作存储器2014中,包括但不限于操作系统2016、一个或多个应用程序2018、驱动程序和/或其他数据和代码。用于执行上述方法和步骤的指令可以被包括在一个或多个应用程序2018中,并且上述时间戳的校正装置500的媒体流获取模块501和媒体流处理模块502可以通过由处理器2004读取和执行一个或多个应用程序2018的指令来实现。更具体地,另前述时间戳的校正装置500的媒体流获取模块501可以例如通过处理器2004执行具有执行步骤S101的指令的应用程序2018而实现。此外,前述时间戳的校正装置500的媒体流处理模块502可以例如通过处理器2004执行具有执行步骤S102的指令的应用程序2018而实现。软件要素(程序)的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质(例如上述存储设备2010)中,并且在执行时可以被存入工作存储器2014中(可能被编译和/或安装)。软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现特定元件。例如,所公开的方法和设备中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
还应该理解,前述方法可以通过服务器-客户端模式来实现。例如,客户端可以接收用户输入的数据并将所述数据发送到服务器。客户端也可以接收用户输入的数据,进行前述方法中的一部分处理,并将处理所得到的数据发送到服务器。服务器可以接收来自客户端的数据,并且执行前述方法或前述方法中的另一部分,并将执行结果返回给客户端。客户端可以从服务器接收到方法的执行结果,并例如可以通过输出设备呈现给用户。
还应该理解,计算设备2000的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。计算系统2000的其他组件也可以类似地分布。这样,计算设备2000可以被解释为在多个位置执行处理的分布式计算系统。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (18)
1.一种时间戳的校正方法,包括:
获取待处理的媒体流;
确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;
基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;
根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及
根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
2.如权利要求1所述的方法,其中,基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔,包括:
基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的以分数形式表示的真实时间间隔;
将所述真实时间间隔的整数部分作为所述整数级时间间隔,并将所述真实时间间隔的以分数形式表示的余数部分与所述前一同类型媒体帧对应的误差累积时间间隔之和,作为所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔,
其中,所述媒体流中的首个音频帧和首个视频帧对应的误差累积时间间隔为0。
3.如权利要求1所述的方法,其中,根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔,包括:
响应于确定所述误差累积时间间隔不低于设定阈值,将所述整数级时间间隔与所述设定阈值之和作为所述校正时间间隔;
基于所述误差累积时间间隔与所述设定阈值之差,更新所述误差累积时间间隔;以及
响应于确定所述误差累积时间间隔低于所述设定阈值,将所述整数级时间间隔作为所述校正时间间隔。
4.如权利要求3所述的方法,其中,所述设定阈值为所述时间戳的最小变更单位。
5.如权利要求1至4中任一项所述的方法,其中,所述时间戳包括显示时间戳PTS。
6.如权利要求1至4中任一项所述的方法,其中,所述媒体流的采样率或帧率是基于所述媒体流的序列头和/或元数据获取到的。
7.如权利要求1至4中任一项所述的方法,还包括:
响应于确定所述媒体流的序列头未异常,根据所述媒体流的序列头获取所述媒体流的采样率或帧率;以及
响应于确定所述媒体流的序列头异常,根据所述媒体流的元数据获取所述媒体流的采样率或帧率。
8.如权利要求6所述的方法,其中,所述媒体流的序列头包括高级音频编码序列头和高级视频编码序列头。
9.如权利要求1至4中任一项所述的方法,还包括:
响应于确定所述媒体流的采样率或帧率存在更新,获取更新后的采样率或帧率,以基于所述更新后的采样率或帧率确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔。
10.如权利要求9所述的方法,还包括:
响应于确定满足以下条件中的至少一者,确定所述媒体流的采样率或帧率存在更新:
所述媒体流的序列头存在更新;以及,
所述媒体流的元数据存在更新。
11.如权利要求1至4中任一项所述的方法,其中,所述方法由服务器端设备执行,并且,所述服务器端设备包括流媒体服务器。
12.一种时间戳的校正装置,包括:
媒体流获取模块,被配置为获取待处理的媒体流;以及
媒体流处理模块,被配置为:确定所述媒体流中的待处理的媒体帧,所述待处理的媒体帧为音频帧或视频帧;基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的整数级时间间隔和误差累积时间间隔;根据所述整数级时间间隔和所述误差累积时间间隔,确定校正时间间隔;以及根据所述校正时间间隔,对所述待处理的媒体帧的时间戳进行校正。
13.如权利要求12所述的装置,其中,
所述媒体流处理模块,被配置为:基于所述媒体流的采样率或帧率,确定所述待处理的媒体帧和其前一同类型媒体帧之间的以分数形式表示的真实时间间隔;将所述真实时间间隔的整数部分作为所述整数级时间间隔,并将所述真实时间间隔的以分数形式表示的余数部分与所述前一同类型媒体帧对应的误差累积时间间隔之和,作为所述待处理的媒体帧和其前一同类型媒体帧之间的误差累积时间间隔,其中,所述媒体流中的首个音频帧和首个视频帧对应的误差累积时间间隔为0。
14.如权利要求12所述的装置,其中,
所述媒体流处理模块,被配置为:响应于确定所述误差累积时间间隔不低于设定阈值,将所述整数级时间间隔与所述设定阈值之和作为所述校正时间间隔,并且,基于所述误差累积时间间隔与所述设定阈值之差,更新所述误差累积时间间隔;以及响应于确定所述误差累积时间间隔低于所述设定阈值,将所述整数级时间间隔作为所述校正时间间隔。
15.如权利要求14所述的装置,其中,所述设定阈值为所述时间戳的最小变更单位。
16.如权利要求12至15中任一项所述的装置,其中,所述时间戳包括显示时间戳PTS。
17.一种电子设备,包括:
处理器;以及
存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-11中任一项所述的方法。
18.一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010292194.2A CN111464256A (zh) | 2020-04-14 | 2020-04-14 | 时间戳的校正方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010292194.2A CN111464256A (zh) | 2020-04-14 | 2020-04-14 | 时间戳的校正方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111464256A true CN111464256A (zh) | 2020-07-28 |
Family
ID=71679069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010292194.2A Pending CN111464256A (zh) | 2020-04-14 | 2020-04-14 | 时间戳的校正方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111464256A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112188259A (zh) * | 2020-09-29 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 用于音视频同步测试和校正的方法、装置及电子设备 |
CN112261461A (zh) * | 2020-10-20 | 2021-01-22 | 深圳创维-Rgb电子有限公司 | 蓝牙音画同步方法、装置、显示设备和可读存储介质 |
CN112272327A (zh) * | 2020-10-26 | 2021-01-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及设备 |
CN112995737A (zh) * | 2021-05-10 | 2021-06-18 | 北京小鸟科技股份有限公司 | 多屏显卡输出的分布式网络上屏同步方法、系统及设备 |
CN113055718A (zh) * | 2021-06-02 | 2021-06-29 | 杭州星犀科技有限公司 | 时间戳均匀化处理的方法、系统、电子装置和存储介质 |
CN113163222A (zh) * | 2021-03-31 | 2021-07-23 | 杭州奥点科技股份有限公司 | 一种视频帧同步方法、系统、设备及可读存储介质 |
CN113286163A (zh) * | 2021-05-21 | 2021-08-20 | 成都威爱新经济技术研究院有限公司 | 一种用于虚拟拍摄直播的时间戳误差标定方法及系统 |
CN113596549A (zh) * | 2020-10-13 | 2021-11-02 | 杭州涂鸦信息技术有限公司 | 基于不同参考时钟的音视频同步方法、装置和计算机设备 |
CN113949898A (zh) * | 2021-10-13 | 2022-01-18 | 北京奇艺世纪科技有限公司 | 多媒体处理方法、装置、设备和存储介质 |
CN114339453A (zh) * | 2022-01-06 | 2022-04-12 | 北京金山云网络技术有限公司 | 时间戳校准方法和装置、电子设备和存储介质 |
WO2022142481A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州星犀科技有限公司 | 音视频数据的处理方法、直播装置、电子设备和存储介质 |
CN114979681A (zh) * | 2022-04-11 | 2022-08-30 | 上海哔哩哔哩科技有限公司 | 流媒体数据的时间戳更新方法及装置 |
WO2023071598A1 (zh) * | 2021-10-25 | 2023-05-04 | 北京字节跳动网络技术有限公司 | 音视频同步监控方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103167342A (zh) * | 2013-03-29 | 2013-06-19 | 天脉聚源(北京)传媒科技有限公司 | 一种音视频同步处理装置及方法 |
CN105898504A (zh) * | 2016-04-26 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种音视频同步方法及装置 |
CN107801080A (zh) * | 2017-11-10 | 2018-03-13 | 普联技术有限公司 | 一种音视频同步方法、装置及设备 |
WO2018072098A1 (zh) * | 2016-10-18 | 2018-04-26 | 深圳市福斯康姆智能科技有限公司 | 一种音视频同步方法和装置 |
CN110996182A (zh) * | 2019-11-21 | 2020-04-10 | 北京奇艺世纪科技有限公司 | 时间戳处理方法、装置、电子设备及计算机存储介质 |
-
2020
- 2020-04-14 CN CN202010292194.2A patent/CN111464256A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103167342A (zh) * | 2013-03-29 | 2013-06-19 | 天脉聚源(北京)传媒科技有限公司 | 一种音视频同步处理装置及方法 |
CN105898504A (zh) * | 2016-04-26 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种音视频同步方法及装置 |
WO2018072098A1 (zh) * | 2016-10-18 | 2018-04-26 | 深圳市福斯康姆智能科技有限公司 | 一种音视频同步方法和装置 |
CN107801080A (zh) * | 2017-11-10 | 2018-03-13 | 普联技术有限公司 | 一种音视频同步方法、装置及设备 |
CN110996182A (zh) * | 2019-11-21 | 2020-04-10 | 北京奇艺世纪科技有限公司 | 时间戳处理方法、装置、电子设备及计算机存储介质 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112188259A (zh) * | 2020-09-29 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 用于音视频同步测试和校正的方法、装置及电子设备 |
CN112188259B (zh) * | 2020-09-29 | 2022-09-23 | 北京达佳互联信息技术有限公司 | 用于音视频同步测试和校正的方法、装置及电子设备 |
CN113596549B (zh) * | 2020-10-13 | 2023-09-22 | 杭州涂鸦信息技术有限公司 | 基于不同参考时钟的音视频同步方法、装置和计算机设备 |
WO2023029936A1 (zh) * | 2020-10-13 | 2023-03-09 | 杭州涂鸦信息技术有限公司 | 基于不同参考时钟的音视频同步方法、装置和计算机设备 |
CN113596549A (zh) * | 2020-10-13 | 2021-11-02 | 杭州涂鸦信息技术有限公司 | 基于不同参考时钟的音视频同步方法、装置和计算机设备 |
CN112261461A (zh) * | 2020-10-20 | 2021-01-22 | 深圳创维-Rgb电子有限公司 | 蓝牙音画同步方法、装置、显示设备和可读存储介质 |
CN112272327B (zh) * | 2020-10-26 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及设备 |
CN112272327A (zh) * | 2020-10-26 | 2021-01-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及设备 |
WO2022142481A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州星犀科技有限公司 | 音视频数据的处理方法、直播装置、电子设备和存储介质 |
CN113163222A (zh) * | 2021-03-31 | 2021-07-23 | 杭州奥点科技股份有限公司 | 一种视频帧同步方法、系统、设备及可读存储介质 |
CN112995737B (zh) * | 2021-05-10 | 2021-07-30 | 北京小鸟科技股份有限公司 | 多屏显卡输出的分布式网络上屏同步方法、系统及设备 |
CN112995737A (zh) * | 2021-05-10 | 2021-06-18 | 北京小鸟科技股份有限公司 | 多屏显卡输出的分布式网络上屏同步方法、系统及设备 |
CN113286163A (zh) * | 2021-05-21 | 2021-08-20 | 成都威爱新经济技术研究院有限公司 | 一种用于虚拟拍摄直播的时间戳误差标定方法及系统 |
CN113286163B (zh) * | 2021-05-21 | 2022-07-08 | 成都威爱新经济技术研究院有限公司 | 一种用于虚拟拍摄直播的时间戳误差标定方法及系统 |
CN113055718B (zh) * | 2021-06-02 | 2021-08-27 | 杭州星犀科技有限公司 | 时间戳均匀化处理的方法、系统、电子装置和存储介质 |
CN113055718A (zh) * | 2021-06-02 | 2021-06-29 | 杭州星犀科技有限公司 | 时间戳均匀化处理的方法、系统、电子装置和存储介质 |
CN113949898A (zh) * | 2021-10-13 | 2022-01-18 | 北京奇艺世纪科技有限公司 | 多媒体处理方法、装置、设备和存储介质 |
CN113949898B (zh) * | 2021-10-13 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 多媒体处理方法、装置、设备和存储介质 |
WO2023071598A1 (zh) * | 2021-10-25 | 2023-05-04 | 北京字节跳动网络技术有限公司 | 音视频同步监控方法、装置、电子设备及存储介质 |
CN114339453A (zh) * | 2022-01-06 | 2022-04-12 | 北京金山云网络技术有限公司 | 时间戳校准方法和装置、电子设备和存储介质 |
CN114339453B (zh) * | 2022-01-06 | 2023-11-03 | 北京金山云网络技术有限公司 | 时间戳校准方法和装置、电子设备和存储介质 |
CN114979681A (zh) * | 2022-04-11 | 2022-08-30 | 上海哔哩哔哩科技有限公司 | 流媒体数据的时间戳更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111464256A (zh) | 时间戳的校正方法、装置、电子设备和存储介质 | |
US11770577B2 (en) | Transmitting method, receiving method, transmitting apparatus, and receiving apparatus | |
CN113225598B (zh) | 移动端音视频同步的方法、装置、设备及存储介质 | |
US11812103B2 (en) | Dynamic playout of transition frames while transitioning between playout of media streams | |
CN110784750B (zh) | 视频播放方法、装置及计算机设备 | |
US12058387B2 (en) | Video processing method and apparatus, computer device, and storage medium | |
US20140109156A1 (en) | Method, terminal, server and system for playing media file | |
JP2015519813A (ja) | 低レイテンシストリーミングを処理するための改善されたブロック要求ストリーミングシステム | |
CN111669645B (zh) | 视频的播放方法、装置、电子设备及存储介质 | |
CN108259998B (zh) | 播放器及播放控制方法、装置、电子设备及播放系统 | |
CN114697712B (zh) | 一种媒体流的下载方法、装置、设备及存储介质 | |
JP4511952B2 (ja) | メディア再生装置 | |
US20160295256A1 (en) | Digital content streaming from digital tv broadcast | |
US20170013303A1 (en) | Transmission device, transmitting method, reception device, and receiving method | |
JP2018182677A (ja) | 情報処理装置、情報処理方法、プログラム、および記録媒体製造方法 | |
CN103269460B (zh) | 一种音视频文件时长计算装置及方法 | |
CN110753259B (zh) | 视频数据的处理方法、装置、电子设备及计算机可读介质 | |
US20150189365A1 (en) | Method and apparatus for generating a recording index | |
JP2018182617A (ja) | 情報処理装置、情報処理方法、プログラム、および記録媒体製造方法 | |
CN109788357B (zh) | 一种播放媒体文件的方法及装置 | |
CN103139610A (zh) | 集群视频同步播放的方法和装置 | |
WO2021161226A1 (en) | Distributed measurement of latency and synchronization delay between audio/video streams | |
CN110463209B (zh) | 用于在多媒体系统中发送和接收信号的设备和方法 | |
JP2024149727A (ja) | 受信方法及び受信装置 | |
CN113573088A (zh) | 一种为直播视频流同步绘制识别对象的方法与设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200728 |
|
RJ01 | Rejection of invention patent application after publication |