CN109286601B - 一种媒体流信息的处理方法及终端、计算机存储介质 - Google Patents
一种媒体流信息的处理方法及终端、计算机存储介质 Download PDFInfo
- Publication number
- CN109286601B CN109286601B CN201710596880.7A CN201710596880A CN109286601B CN 109286601 B CN109286601 B CN 109286601B CN 201710596880 A CN201710596880 A CN 201710596880A CN 109286601 B CN109286601 B CN 109286601B
- Authority
- CN
- China
- Prior art keywords
- packet
- frame
- video
- audio
- current
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/764—Media network packet handling at the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种媒体流信息的处理方法、终端及计算机存储介质,其中,所述方法包括:对第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧。将至少一个视频帧发送到第一抖动缓冲区(Jitterbuffer)和第二Jitterbuffer,由第一Jitterbuffer和所述第二Jitterbuffer根据第一或第二最低帧率策略,对所述至少一个音/视频帧构成音/视频流中发生异常的帧执行插帧判决,对异常进行修复后得到待处理的音/视频流。将待处理的视频流和待处理的音频流发送到第三Jitterbuffer,由第三Jitterbuffer根据原始输入时戳的时间顺序,对待处理的视频流和待处理的音频流进行音视频混排处理,得到第二媒体数据流。
Description
技术领域
本发明涉及信息处理技术,尤其涉及一种媒体帧信息的处理方法及终端、计算机存储介质。
背景技术
由发送端和接收端构成的实时通讯系统中,音、视频数据包可能由于网络状况或人为因素(临时关闭本地视频或音频,或同时关闭)发生乱序、抖动、延时、断流等问题,这将导致接收端收到的音、视频数据出现时戳跳变、长时间无音频或无视频等异常现象。为了对异常进行修复,需要采取插帧或补流的技术。不同接收端对媒体数据运行插帧或补流的处理机制是不同的,导致兼容性不好,也达不到对异常修复的良好处理效果。
目前需要解决的问题是:需要提高接收端对媒体数据的兼容性,改善对异常修改的效果。然而,相关技术中,对于该问题,尚无有效解决方案。
发明内容
有鉴于此,本发明实施例提供了一种媒体流信息的处理方法及终端、计算机存储介质,至少解决了现有技术存在的问题。
本发明实施例的一种媒体流信息的处理方法,所述方法包括:
对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;将所述至少一个视频帧发送到第一抖动缓冲区Jitterbuffer;
将所述至少一个音频帧发送到第二Jitterbuffer;
由所述第一Jitterbuffer根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流;
由所述第二Jitterbuffer根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流;
将所述待处理的视频流和所述待处理的音频流发送到第三Jitterbuffer;
由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流。
上述方案中,所述方法还包括:
设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理;
根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,所述由所述第一Jitterbuffer根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为真TRUE;
读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理;
进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
上述方案中,所述由所述第一Jitterbuffer根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,由所述第二Jitterbuffer根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
对读取的音频包进行入队预处理;
进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
上述方案中,由所述第二Jitterbuffer根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第二预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理;
进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
上述方案中,由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,判断队列当前长度是否大于所述初始缓冲最小包数;
如果队列当前长度大于所述初始缓冲最小包数,则将队列首包出队,否则,返回到入队处理。
本发明实施例的一种终端,所述终端包括:
分割单元,用于对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;
第一缓冲单元,用于接收所述分割单元所发送的所述至少一个视频帧;根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流;
第二缓冲单元,用于接收所述分割单元所发送的所述至少一个音频帧;根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流;
第三缓冲单元,用于从所述第一缓冲单元和所述第二缓冲单元分别接收所述待处理的视频流和所述待处理的音频流;根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流。
上述方案中,所述终端还包括:参数配置单元,用于:
设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理;
根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,所述第一缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为真TRUE;
读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理;
进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
上述方案中,所述第一缓冲单元,进一步用于:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,所述第二缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
对读取的音频包进行入队预处理;
进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
上述方案中,所述第二缓冲单元,进一步用于:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第二预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作,否则,结束出队处理,返回到入队处理。
上述方案中,所述第三缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理;
进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
采用本发明实施例,通过第一抖动缓冲区(Jitterbuffer)和第二Jitterbuffer分别对出现异常的音、视频按照最低帧率策略进行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,实现了对异常音、视频流的流整形处理,得到待处理的视频流和待处理的音频流。通过第三Jitterbuffer根据原始输入时戳的时间顺序,对待处理的视频流和待处理的音频流进行音视频混排处理,得到第二媒体数据流。从而,通过终端内置的这三个Jitterbuffer的通信交互,提高了接收端对媒体数据的兼容性,也改善了对异常修改的效果。
附图说明
图1为实现本发明各个实施例的移动终端一个可选的硬件结构示意图;
图2为如图1所示的移动终端的通信系统示意图;
图3为本发明实施例中进行信息交互的各方硬件实体的示意图;
图4为本发明实施例一方法的实现流程示意图;
图5为本发明实施例一系统架构示意图;
图6为本发明实施例又一系统架构示意图;
图7为本发明实施例实时通讯场景中一视频插帧判决方法的具体流程图;
图8为本发明实时通讯场景中一音频插帧判决方法的具体流程图;
图9本发明实施例实时通讯场景中一时戳修复主流程;
图10为本发明实施例实时通讯场景中采用Video Jitter Buffer实现的媒体帧处理流程图;
图11为本发明实施例Video Jitter Buffer乱序抖动处理效果图;
图12为本发明实施例Video Jitter Buffer丢包处理效果图;
图13为本发明实施例Video Jitter Buffer断流处理效果图;
图14为本发明实施例实时通讯场景中采用Audio Jitter Buffer实现的媒体帧处理流程图;
图15为本发明实施例Audio Jitter Buffer乱序处理效果图;
图16为本发明实施例Audio Jitter Buffer丢包处理效果图;
图17为本发明实施例Audio Jitter Buffer断流处理效果图;
图18为本发明实施例实时通讯场景中采用TsJitterBuffer实现的媒体帧处理流程图;
图19为本发明实施例Ts Jitter Buffer处理效果图;
图20为本发明实施例一系统的组成结构示意图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明实施例的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
在下面的详细说明中,陈述了众多的具体细节,以便彻底理解本发明。不过,对于本领域的普通技术人员来说,显然可在没有这些具体细节的情况下实践本发明。在其他情况下,没有详细说明公开的公知方法、过程、组件、电路和网络,以避免不必要地使实施例的各个方面模糊不清。
另外,本文中尽管多次采用术语“第一”、“第二”等来描述各种元件(或各种阈值或各种应用或各种指令或各种操作)等,不过这些元件(或阈值或应用或指令或操作)不应受这些术语的限制。这些术语只是用于区分一个元件(或阈值或应用或指令或操作)和另一个元件(或阈值或应用或指令或操作)。例如,第一操作可以被称为第二操作,第二操作也可以被称为第一操作,而不脱离本发明的范围,第一操作和第二操作都是操作,只是二者并不是相同的操作而已。
本发明实施例中的步骤并不一定是按照所描述的步骤顺序进行处理,可以按照需求有选择的将步骤打乱重排,或者删除实施例中的步骤,或者增加实施例中的步骤,本发明实施例中的步骤描述只是可选的顺序组合,并不代表本发明实施例的所有步骤顺序组合,实施例中的步骤顺序不能认为是对本发明的限制。
本发明实施例中的术语“和/或”指的是包括相关联的列举项目中的一个或多个的任何和全部的可能组合。还要说明的是:当用在本说明书中时,“包括/包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件和/或组件和/或它们的组群的存在或添加。
本发明实施例的智能终端(如移动终端)可以以各种形式来实施。例如,本发明实施例中描述的移动终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(PDA,Personal Digital Assistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
图1为实现本发明各个实施例的移动终端一个可选的硬件结构示意图。
移动终端100可以包括通信单元110、音频/视频(A/V)输入单元120、用户输入单元130、分割单元140、第一缓冲单元141、第二缓冲单元142、第三缓冲单元143、输出单元150、存储单元160、接口单元170、处理单元180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
通信单元110通常包括一个或多个组件,其允许移动终端100与无线通信系统或网络之间的无线电通信(如果将移动终端用固定终端代替,也可以通过有线方式进行电通信)。例如,通信单元具体为无线通信单元时可以包括广播接收单元111、移动通信单元112、无线互联网单元113、短程通信单元114和位置信息单元115中的至少一个,这些单元是可选的,根据不同需求可以增删。
广播接收单元111经由广播信道从外部广播管理服务器接收广播信号和/或广播相关信息。广播信道可以包括卫星信道和/或地面信道。广播管理服务器可以是生成并发送广播信号和/或广播相关信息的服务器或者接收之前生成的广播信号和/或广播相关信息并且将其发送给终端的服务器。广播信号可以包括TV广播信号、无线电广播信号、数据广播信号等等。而且,广播信号可以进一步包括与TV或无线电广播信号组合的广播信号。广播相关信息也可以经由移动通信网络提供,并且在该情况下,广播相关信息可以由移动通信单元112来接收。广播信号可以以各种形式存在,例如,其可以以数字多媒体广播(DMB,Digital Multimedia Broadcasting)的电子节目指南(EPG,Electronic Program Guide)、数字视频广播手持(DVB-H,Digital Video Broadcasting-Handheld)的电子服务指南(ESG,Electronic Service Guide)等等的形式而存在。广播接收单元111可以通过使用各种类型的广播系统接收信号广播。特别地,广播接收单元111可以通过使用诸如多媒体广播-地面(DMB-T,Digital Multimedia Broadcasting-Terrestrial)、数字多媒体广播-卫星(DMB-S,Digital Multimedia Broadcasting-Satellite)、数字视频广播手持(DVB-H),前向链路媒体(MediaFLO,Media Forward Link Only)的数据广播系统、地面数字广播综合服务(ISDB-T,Integrated Services Digital Broadcasting-Terrestrial)等等的数字广播系统接收数字广播。广播接收单元111可以被构造为适合提供广播信号的各种广播系统以及上述数字广播系统。经由广播接收单元111接收的广播信号和/或广播相关信息可以存储在存储器160(或者其它类型的存储介质)中。
移动通信单元112将无线电信号发送到基站(例如,接入点、节点B等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语音通话信号、视频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。
无线互联网单元113支持移动终端的无线互联网接入。该单元可以内部或外部地耦接到终端。该单元所涉及的无线互联网接入技术可以包括无线局域网络(Wi-Fi,WLAN,Wireless Local Area Networks)、无线宽带(Wibro)、全球微波互联接入(Wimax)、高速下行链路分组接入(HSDPA,High Speed Downlink Packet Access)等等。
短程通信单元114是用于支持短程通信的单元。短程通信技术的一些示例包括蓝牙、射频识别(RFID,Radio Frequency Identification)、红外数据协会(IrDA,InfraredData Association)、超宽带(UWB,Ultra Wideband)、紫蜂等等。
位置信息单元115是用于检查或获取移动终端的位置信息的单元。位置信息单元的典型示例是全球定位系统(GPS,Global Positioning System)。根据当前的技术,位置信息单元115计算来自三个或更多卫星的距离信息和准确的时间信息并且对于计算的信息应用三角测量法,从而根据经度、纬度和高度准确地计算三维当前位置信息。当前,用于计算位置和时间信息的方法使用三颗卫星并且通过使用另外的一颗卫星校正计算出的位置和时间信息的误差。此外,位置信息单元115能够通过实时地连续计算当前位置信息来计算速度信息。
A/V输入单元120用于接收音频或视频信号。A/V输入单元120可以包括相机121和麦克风122,相机121对在视频捕获模式或图像捕获模式中由图像捕获装置获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元151上。经相机121处理后的图像帧可以存储在存储单元160(或其它存储介质)中或者经由通信单元110进行发送,可以根据移动终端的构造提供两个或更多相机121。麦克风122可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由移动通信单元112发送到移动通信基站的格式输出。麦克风122可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、鼠标、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
分割单元140,用于对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;
第一缓冲单元141,用于接收所述分割单元所发送的所述至少一个视频帧;根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流;
第二缓冲单元142,用于接收所述分割单元所发送的所述至少一个音频帧;根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流;
第三缓冲单元143,用于从所述第一缓冲单元和所述第二缓冲单元分别接收所述待处理的视频流和所述待处理的音频流;根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流。
接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别单元的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别单元可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别单元(UIM,User Identify Module)、客户识别单元(SIM,Subscriber Identity Module)、通用客户识别单元(USIM,Universal SubscriberIdentity Module)等等。另外,具有识别单元的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、振动信号等等)。输出单元150可以包括显示单元151、音频输出单元152等等。
显示单元151可以显示在移动终端100中处理的信息。例如,移动终端100可以显示相关用户界面(UI,User Interface)或图形用户界面(GUI,Graphical User Interface)。当移动终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD,LiquidCrystal Display)、薄膜晶体管LCD(TFT-LCD,Thin Film Transistor-LCD)、有机发光二极管(OLED,Organic Light-Emitting Diode)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为透明有机发光二极管(TOLED)显示器等等。根据特定想要的实施方式,移动终端100可以包括两个或更多显示单元(或其它显示装置),例如,移动终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
音频输出单元152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将通信单元110接收的或者在存储器160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出单元152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元152可以包括扬声器、蜂鸣器等等。
存储单元160可以存储由处理单元180执行的处理和控制操作的软件程序等等,或者可以暂时地存储已经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储单元160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
存储单元160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM,Random AccessMemory)、静态随机访问存储器(SRAM,Static Random Access Memory)、只读存储器(ROM,Read Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically ErasableProgrammable Read Only Memory)、可编程只读存储器(PROM,Programmable Read OnlyMemory)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储单元160的存储功能的网络存储装置协作。
处理单元180通常控制移动终端的总体操作。例如,处理单元180执行与语音通话、数据通信、视频通话等等相关的控制和处理。又如,处理单元180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
电源单元190在处理单元180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理器(DSP,DigitalSignal Processing)、数字信号处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑装置(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,FieldProgrammable Gate Array)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在处理单元180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件单元来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储单元160中并且由处理单元180执行。其中,存储单元160的一个具体硬件实体可以为存储器,处理单元180的一个具体硬件实体可以为控制器。
至此,已经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
如图1中所示的移动终端100可以被构造为利用经由帧或分组发送数据的诸如有线和无线通信系统以及基于卫星的通信系统来操作。
现在将参考图2描述其中根据本发明实施例的移动终端能够操作的通信系统。
这样的通信系统可以使用不同的空中接口和/或物理层。例如,由通信系统使用的空中接口包括例如频分多址(FDMA,Frequency Division Multiple Access)、时分多址(TDMA,Time Division Multiple Access)、码分多址(CDMA,Code Division MultipleAccess)和通用移动通信系统(UMTS,Universal Mobile Telecommunications System)(特别地,长期演进(LTE,Long Term Evolution))、全球移动通信系统(GSM)等等。作为非限制性示例,下面的描述涉及CDMA通信系统,但是这样的教导同样适用于其它类型的系统。
参考图2,CDMA无线通信系统可以包括多个移动终端100、多个基站(BS,BaseStation)270、基站控制器(BSC,Base Station Controller)275和移动交换中心(MSC,Mobile Switching Center)280。MSC280被构造为与公共电话交换网络(PSTN,PublicSwitched Telephone Network)290形成接口。MSC280还被构造为与可以经由回程线路耦接到BS270的BSC275形成接口。回程线路可以根据若干已知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM、IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的系统可以包括多个BSC275。
每个BS 270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS 270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS 270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz等等)。
分区与频率分配的交叉可以被称为CDMA信道。BS 270也可以被称为基站收发器子系统(BTS,Base Transceiver Station)或者其它等效术语。在这样的情况下,术语“基站”可以用于笼统地表示单个BSC275和至少一个BS 270。基站也可以被称为“蜂窝站”。或者,特定BS 270的各分区可以被称为多个蜂窝站。
如图2中所示,广播发射器(BT,Broadcast Transmitter)295将广播信号发送给在系统内操作的移动终端100。如图1中所示的广播接收单元111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个卫星300,例如可以采用全球定位系统(GPS)卫星300。卫星300帮助定位多个移动终端100中的至少一个。
在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。如图1中所示的位置信息单元115通常被构造为与卫星300配合以获得想要的定位信息。替代GPS跟踪技术或者在GPS跟踪技术之外,可以使用可以跟踪移动终端的位置的其它技术。另外,至少一个GPS卫星300可以选择性地或者额外地处理卫星DMB传输。
作为无线通信系统的一个典型操作,BS 270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站接收的每个反向链路信号被在特定BS 270内进行处理。获得的数据被转发给相关的BSC275。BSC提供通话资源分配和包括BS 270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS 270以将正向链路信号发送到移动终端100。
移动终端中通信单元110的移动通信单元112基于移动终端内置的接入移动通信网络(如2G/3G/4G等移动通信网络)的必要数据(包括用户识别信息和鉴权信息)接入移动通信网络为移动终端用户的网页浏览、网络多媒体播放等业务传输移动通信数据(包括上行的移动通信数据和下行的移动通信数据)。
通信单元110的无线互联网单元113通过运行无线热点的相关协议功能而实现无线热点的功能,无线热点支持多个移动终端(移动终端之外的任意移动终端)接入,通过复用移动通信单元112与移动通信网络之间的移动通信连接为移动终端用户的网页浏览、网络多媒体播放等业务传输移动通信数据(包括上行的移动通信数据和下行的移动通信数据),由于移动终端实质上是复用移动终端与通信网络之间的移动通信连接传输移动通信数据的,因此移动终端消耗的移动通信数据的流量由通信网络侧的计费实体计入移动终端的通信资费,从而消耗移动终端签约使用的通信资费中包括的移动通信数据的数据流量。
图3为本发明实施例中进行信息交互的各方硬件实体的示意图,图3中包括:终端设备1和服务器2。其中,终端设备1由终端设备11-14构成,终端设备通过有线网络或者无线网络与服务器进行信息交互。终端设备包括手机、台式机、PC机、一体机等类型。采用本发明实施例,一种情况:终端自身就存在需要处理的媒体流,可以对媒体流中的音、视频进行校对、时序混排等处理;另一种情况:终端发起媒体流请求,向服务器请求媒体流(媒体流包括音频和/或视频),音频和视频可以同时反馈,也可以分别反馈。由于终端与服务器在通信时会存在各种问题,如网络异常导致反馈中断,而后重新反馈;或者反馈的媒体流中的音频和/或视频流在传输时序上出现时序混乱等情况,那么,在终端对接收的媒体流进行处理时,也需要对媒体流中的音、视频进行校对、时序混排等处理。一种解决方案可以为:在终端中可以采用Jitterbuffer机制,并根据最低帧率策略做插帧判决(对音频和视频分别执行Jitterbuffer机制和插帧判决),插帧主要是调整时序混乱的帧(音频帧和视频帧)。还可以包括对断流的补流处理,插帧和补流可以统一称之为流整形。最终,对经过流整形的音频和视频进行混排(混排是利用原始帧输入时戳来处理),结束对媒体帧信息的处理过程。具体的,终端设备的处理逻辑10如图3所示,处理逻辑10包括:S1、对由至少一个媒体帧信息构成的媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;S2、接收至少一个视频帧和至少一个音频帧,并采用Jitterbuffer机制在各自的Jitterbuffer中根据最低帧率策略执行对应的插帧判决,对发生异常(如时序混乱的帧或缺少的部分帧等)的视频帧和音频帧进行流整形,修复得到待混排的音频流和视频流;S3、仍采用Jitterbuffer机制,接收待混排的音频流和视频流,根据原始输入时戳的时间顺序,对待混排的音频流和视频流进行音视频混排处理,得到第二媒体数据流。
就Jitterbuffer机制而言,Jitterbuffer为一种抖动缓冲器,是一个共享的数据区域。比如,在VoIP中,VoIP是由IP网络传送话音的技术服务(将模拟信号数字化后,以数据封包的形式在IP网络上做实时传递),在这个Jitterbuffer的数据区域中,每隔一段均匀的间隔,语音包会被收集,存储并发到语音处理器。包到达时间的变化,称作抖动,将会由于网络拥塞,定时漂移或路由变更而产生。Jitterbuffer放于语音连接的接收端,它有意地延迟到达的包,如此一来,终端用户就会感受到一个清晰的,没有什么声音失真的连接。Jitterbuffer有两种,静态的和动态的。静态的Jitterbuffer是基于硬件的,由厂家来配置的。而动态Jitterbuffer基于软件的,由网管配置以适应网络延迟的改变。
当然,上述终端的处理逻辑可以在服务器具体执行。比如,服务器在与一个或者一个以上终端的交互中,可以为了节约终端的处理能耗,根据终端自主提供的媒体流,或者进一步结合服务器自身媒体库中的媒体流,根据上述处理逻辑对媒体流中的音、视频进行校对、时序混排等处理,然后将处理结果提供给终端直接使用。在不影响终端处理能耗的情况下,将该处理逻辑交由不同的终端进行处理,可以提供给终端自己整合媒体流的能力。
上述图3的例子只是实现本发明实施例的一个系统架构实例,本发明实施例并不限于上述图3所述的系统结构,基于上述图3所述的系统架构,提出本发明方法各个实施例。
本发明涉及术语对应的缩略语为:1)UDP:User Datagram Protocol,用户数据报协议;2)Jitter Buffer:抖动缓冲器;3)Timestamp:时间戳。
本发明实施例的一种媒体流信息的处理方法,如图4所示,所述方法包括:对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧(101)。一个实际应用中,如图5所示,Parser模块对输入媒体流进行音视频分离,分别将视频和音频数据分发到第一抖动缓冲区(如VideoJitterBuffer)和第二抖动缓冲区(如AudioJitterBuffer)。将所述至少一个视频帧发送到第一Jitterbuffer,如Video Jitter Buffer(102)。将所述至少一个音频帧发送到第二Jitterbuffer,如AudioJitterBuffer(103)。由第一Jitterbuffer根据第一最低帧率策略,对至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流(104)。比如,第一Jitterbuffer为Video Jitter Buffer时,如图5所示,VideoJitter Buffer负责视频流乱序、丢包、抖动、断流等异常处理,具体是按照包序号从小到大分别对视频流和音频流进行排序,对乱序场景进行修复,并按照相邻帧原始时戳差值进行出队节拍控制,当发生首包抖动、丢包、断流等异常,导致出队帧率低于设定下限时,按照下限出队帧率输出插帧指示帧(如V-lost)。
由第二Jitterbuffer根据第二最低帧率策略,对至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流(105)。比如,第二Jitterbuffer为Audio Jitter Buffer时,如图5所示,Audio Jitter Buffer负责音频流乱序、丢包、抖动、断流等异常处理,具体是按照包序号从小到大分别对视频流和音频流进行排序,对乱序场景进行修复,并按照相邻帧原始时戳差值进行出队节拍控制,当发生首包抖动、丢包、断流等异常,导致出队帧率低于设定下限时,按照下限出队帧率输出插帧指示帧(如A-lost)。
将待处理的视频流和待处理的音频流发送到第三Jitterbuffer,如TsJitterBuffer(106)。由第三Jitterbuffer根据原始输入时戳的时间顺序,对待处理的视频流和待处理的音频流进行音视频混排处理,得到第二媒体数据流(107)。比如,如图5所示,第三Jitterbuffer为TsJitterBuffer时,TsJitterBuffer负责对分别排序好的音视频流按照时戳混排,保证最终输出的音视频混合流时戳连续递增,具体的是按照原始输入时戳从小到大对音视频流进行混排,保证插帧补流后的码流时戳连续增长且音视频均匀交错。
通过上述三个Jitterbuffer,利用Jitterbuffer机制可以保证了插帧位置和时戳的正确性。第一Jitterbuffer和第二Jitterbuffer实现插帧所采用的基于最低帧率的策略,可以实现对音视频交错密度的精准控制。第三Jitterbuffer采用原始输入时戳进行混排,由于原始输入时戳未被修改,因此,可以保证输出流的音视频同步效果与输入一致。
本实施例中,还可以包括:图5中的后处理模块(Post-Process),Post-Process用于对插帧补流后的音、视频流分别进行转码或转封装处理,当检测到V-lost时,插入上一个视频帧或定制画面(例如提示视频正在加载中的提示画面);当检测到A-lost时,插入音频静音帧。
如本发明实施例中,基于上述图5的描述,可以利用Jitterbuffer机制及根据最低帧率策略做插帧判决,音频和视频(VideoJitterBuffer、Audio Jitter Buffe)分别执行,插帧主要是调整乱序的帧,具体的,还可以包括对断流的补流处理,插帧和补流可以统一称之为流整形;对流整形的音频和视频进行混排(TsJitterBuffer来执行。)是利用原始帧输入时戳来处理,结束对媒体帧信息的处理过程。
采用本发明实施例,利用JitterBuffer并基于最低帧率原则对输入流做插帧判决,根据音视频包的到达时间、到达顺序、采集时间戳等信息,重新调整音视频包排列顺序及时间戳,并智能插入额外音视频帧,实现在乱序、丢包、抖动、断流等各种异常场景下均能输出时戳连续增长、音视频均匀交错的音视频流,并保证输出流的音视频同步效果与输入一致,音视频交错密度的精准可控。对第一媒体数据流经过处理后得到的上述第二媒体数据流,该音视频流具备了音视频均匀交错、时戳连续增长、音视频同步效果与处理前保持一致等优良特性,有利于提高接收端对媒体数据的兼容性。
一应用场景中,在实时通讯系统中,音视频数据包可能由于网络状况或人为因素(临时关闭本地视频或音频,或同时关闭)发生乱序、抖动、延时、断流等问题,这将导致接收端收到的音视频数据出现时戳跳变、长时间无音频或无视频等异常现象,若接收端兼容性不完备将无法正常处理,例如终端设备回放失败或回放出现音视频不同步,网关设备无法正常输出转码分片。
针对上述问题,有如下几种具体的插帧及补流处理方案。
一示例中,是依据相邻收包时间间隔判断是否插帧,再以音频时戳为基准修正视频时戳的实现方案。
先依据视频或音频断流时长,判决是否插入插帧指示帧(视频插帧V-lost,音频插帧A-lost),再以音频时戳为基准,反复修正视频时戳,使其逐步逼近音频时戳。整体方案如图6所示,插帧补流的核心可以由3个核心模块组成,即:视频插帧判决、音频插帧判决、时戳修正。
具体处理流程包括如下内容:
(1)视频插帧判决:根据视频断流时长是否大于配置上限值,判决是否输出视频插帧指示帧(V-lost)。
(2)音频插帧判决:根据音频断流时长是否大于配置上限值,判决是否输出音频插帧指示帧(A-lost)。
(3)时戳修正:音频时戳不做修改,当视频时戳相对音频时戳偏差较大时,逐步调整视频时戳,使偏差逐步缩小。
(4)后处理模块(Post-Process)对插帧补流后的音、视频流分别进行转码或转封装处理,当检测到V-lost时,插入上一个视频帧或定制画面(例如提示视频正在加载中的提示画面);当检测到A-lost时,插入音频静音帧。
其中,视频插帧判决流程如图7所示,具体处理流程如下:
步骤301-302、读取一包数据,判断是否视频包,假如是,则不插帧,执行断流时刻清零FirstMissVideoFrameTime=0,之后结束判决流程,否则继续执行303。
步骤303、判断断流时刻是否未更新,假如是,执行步骤304;否则,执行步骤305。
步骤304、将当前系统时刻CurrentTime更新到断流时刻FirstMissVideoFrameTime。
步骤305、判断当前系统时刻距离上次插入V-lost时刻LastInsertVideoFrameTime的间隔是否小于插帧间隔下限MinVideoFrameRepairTime,假如是,则结束判决流程,否则,执行步骤306。
步骤306、判断持续断流时长是否达到上限VideoInsertFrameTime,假如是,则执行步骤307;否则,结束判决流程。
步骤307-308、插入V-lost,并更新LastInsertVideoFrameTime。
音频插帧判决流程与视频一致,区别在于判决的包类型为音频包,插帧类型为A-lost,如图8所示。
步骤401-402、读取一包数据,判断是否音频包,假如是,则不插帧,执行断流时刻清零FirstMissAudioFrameTime=0,之后结束判决流程,否则继续执行403。
步骤403、判断断流时刻是否未更新,假如是,执行步骤404;否则,执行步骤405。
步骤404、将当前系统时刻CurrentTime更新到断流时刻FirstMissAudioFrameTime。
步骤405、判断当前系统时刻距离上次插入A-lost时刻LastInsertAudioFrameTime的间隔是否小于插帧间隔下限MinAudioFrameRepairTime,假如是,则结束判决流程,否则,执行步骤406。
步骤406、判断持续断流时长是否达到上限AudioInsertFrameTime,假如是,则执行步骤407;否则,结束判决流程。
步骤407-408、插入A-lost,并更新LastInsertAudioFrameTime。
时戳修正流程如图9所示,具体处理流程如下:
步骤501-502、读取一包,判断是否视频包,假如是,则继续执行步骤503;否则,执行步骤504。
步骤503、判断视频时戳是否落后音频达到上限deltaTs1,假如是,则执行步骤506;否则,继续执行步骤507。
步骤504、判断是否音频包,假如是,则执行步骤505;否则,直接读取下一包,不更新AudioTimeStamp。
步骤505、更新当前音频时戳AudioTimeStamp,并继续读取下一包。
步骤506、修正视频时戳VideoTimeStamp=AudioTimeStamp-deltaTs1,并继续读取下一包。
步骤507、判断视频时戳是否未略大于音频,假如是,则执行步骤508;否则执行步骤509。
步骤508、修正视频时戳VideoTimeStamp=AudioTimeStamp+deltaTs1,并继续读取下一包。
步骤509、判断视频时戳是否严重超前音频,假如是,则执行步骤510;否则,结束时戳修复流程。
步骤510、修正视频时戳VideoTimeStamp=AudioTimeStamp+deltaTs2,并继续读取下一包。
虽然,本示例可以起到插帧及补流的作用,但是存在缺陷,如1)在发生收包乱序时,可能导致插帧位置和时戳错误;2)仅依据断流时间判决插帧,会导致音视频交错密度不可控;3)原始视频时戳被修改,可能导致音视频不同步现象。
另一示例中,采用jitter buffer机制并根据音视频包的到达时间、到达顺序、采集时间戳等信息,重新调整音视频包排列顺序及时间戳,并智能插入额外音视频帧。经过插帧、补流处理后的音视频流,具备音视频均匀交错、时戳连续增长、音视频同步效果与处理前保持一致等优良特性,有利于提高接收端对媒体数据的兼容性。
本示例可以解决上述示例存在的问题,通过jitter buffer机制可以保证插帧位置和时戳的正确性。基于最低帧率原则插帧,可以实现对音视频交错密度的精准控制。原始输入时戳未被修改,保证输出流的音视频同步效果与输入一致。由于本示例的优越性,可应用于任意采用用户数据报协议(UDP)协议传输实时系统中,如NOW音视频传输、花样直播音视频传输、QQ语音和视频电话等。
有别于上述示例,本示例的插帧补流核心算法由3个核心模块组成:如图5所示,分别为:VideoJitterBuffer、AudioJitterBuffer、TsJitterBuffer。Video Jitter Buffer按照包序号由小到大的排列顺序,对视频流进行排序,得到排序结果;通过排序对乱序场景带来的异常进行修复。VideoJitterBuffer获取视频流中的关键帧,建立关键帧与非关键帧的相关性;视频流和音频流的区别在于:视频流中存在关键帧(如I帧和P帧),关键帧与非关键帧之间存在帧间相关性(或称为帧间具备关联),而对于音频流,帧间不具备关联。VideoJitterBuffer根据所述排序结果和所述相关性得到相邻视频帧的原始时戳差值,根据所述相邻视频帧的原始时戳差值进行出队节拍控制。当异常导致的出队帧率低于所述第一最低帧率策略中设置的下限出队帧率时,根据所述下限出队帧率输出插帧指示帧,(如V-lost)。Audio Jitter Buffer按照包序号由小到大的排列顺序,对音频流进行排序,得到排序结果;通过排序对乱序场景带来的异常进行修复。AudioJitterBuffer获取音频流中的各个帧,对于音频流,有别于视频流,由于帧间不具备关联,不需要对关键帧和非关键帧进行区分,只需要对各个帧无差别的进行处理,根据所述排序结果得到相邻音频帧的原始时戳差值,根据所述相邻音频帧的原始时戳差值进行出队节拍控制。当异常导致的出队帧率低于所述第二最低帧率策略中设置的下限出队帧率时,根据所述下限出队帧率输出插帧指示帧(如A-lost)。在TsJitterBuffer按照原始输入时戳从小到大对音视频流进行混排后,Post-Process用于对插帧补流后的音、视频流分别进行转码或转封装处理,当检测到插帧指示帧为V-lost时,插入上一个视频帧或定制画面(例如提示视频正在加载中的提示画面);当检测到插帧指示帧为A-lost时,插入音频静音帧。
本发明实施例一实施方式中,可以设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理。根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。其中,所述第一预设操作包括:输出出队插帧指示帧(如V-lost);清除队列中当前GOP所有后续帧;需要等待关键帧标志置为TRUE。
上述GOP,指画面组,一个GOP就是一组连续的画面。以MPEG编码为例,将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码。以MPEG编码为例,在视频编码中所涉及的关键帧,指独立帧,即不以其他帧图像做参考的帧,如I帧和P帧。MPEG中,将图像分成四种类型:I图像、P图像、B图像和D图像,各个图像桢的参考关系为:I图像是帧内编码图像,它不参考其他任何图像而独立编码;P图像是前向预测编码图像,相对于前一参考图像进行有运动补偿的预测编码;B图像是双向预测编码图像,需要前向和后向的参考图像作运动补偿;而D图像的目的是提供一种简单的,但质量相当有限的快进播放方式。
本发明实施例一实施方式中,第一Jitterbuffer根据第一最低帧率策略,对至少一个视频帧构成视频流中发生异常的帧执行插帧判决的过程中,在执行入队处理时,在初始状态下,设置初始缓冲结束标志为真(TRUE)。读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧。若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理。比如,入队预处理包括:对包序号跳变、翻转的视频包进行修复,当前包序号=队列尾包序号+1,假如包序号正常,则不做处理。进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
本发明实施例一实施方式中,第一Jitterbuffer根据第一最低帧率策略,对至少一个视频帧构成视频流中发生异常的帧执行插帧判决的过程中,在执行出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断。队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作(第一预设操作包括:输出出队插帧指示帧(如V-lost);清除队列中当前GOP所有后续帧;需要等待关键帧标志置为TRUE);否则,结束出队处理,返回到入队处理。队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
本发明实施例一实施方式中,第二Jitterbuffer根据第二最低帧率策略,对至少一个音频帧构成音频流中发生异常的帧执行插帧判决的过程中,执行入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE,对读取的音频包进行入队预处理(入队预处理包括:读取一包音频,对包序号跳变、翻转的视频包进行修复,当前包序号=队列尾包序号+1;假如包序号正常,不做处理)。进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
本发明实施例一实施方式中,第二Jitterbuffer根据第二最低帧率策略,对至少一个音频帧构成音频流中发生异常的帧执行插帧判决的过程中,执行出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断。队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则设置出队插帧指示帧为A-lost,否则,结束出队处理,返回到入队处理。队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作(第二预设操作,包括:设置出队插帧指示帧为A-lost);否则,结束出队处理,返回到入队处理。
本发明实施例一实施方式中,第三Jitterbuffer根据原始输入时戳的时间顺序,对待处理的视频流和待处理的音频流进行音视频混排处理的过程中,执行入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE,读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧。若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理(入队预处理包括:对时戳跳变、翻转的音频包和视频包分别进行修复,假如包时戳正常,不做处理)。进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
本发明实施例一实施方式中,第三Jitterbuffer根据原始输入时戳的时间顺序,对待处理的视频流和待处理的音频流进行音视频混排处理的过程中,执行出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,判断队列当前长度是否大于所述初始缓冲最小包数,如果队列当前长度大于所述初始缓冲最小包数,则将队列首包出队,否则,返回到入队处理。
以下,分别对Video Jitter Buffer、Audio Jitter Buffer、TsJitterBuffer所执行的具体处理流程进行描述:
一、Video Jitter Buffer
Video Jitter Buffer负责视频流乱序、丢包、抖动、断流等异常处理,具体处理流程如图10所示。图10中关键变量定义为:1)MinSize:初始缓冲最小包数,当缓冲包数达到该值后才能开始执行出队操作,否则只做入队不出队。该值可根据系统延时要求灵活配置。2)最大出队时间间隔:根据最低出队帧率计算得到,例如最低帧率配置为5fps,则最大出队时间间隔=1000ms÷5fps=200ms。
1、入队处理
(1)初始状态下,初始缓冲结束标志=TRUE,需要等待关键帧标志=TRUE,保证入队首包必须为关键帧。
(2)读取一包视频,若需要等待关键帧但当前包非关键帧,则结束入队处理;否则继续执行(3)。
(3)输入包入队预处理:对包序号跳变、翻转的视频包进行修复,当前包序号=队列尾包序号+1;假如包序号正常,不做处理。
(4)输入包合法性判断:对于包序号大于上一次出队包的视频包即旧包,丢弃当前包并结束入队处理;否则继续执行(5)。
(5)按照包序号从小到大顺序将输入包入队。
(6)假如当前队列长度大于MinSize,则初始缓冲结束标志=TRUE。
2、出队处理
(1)假如初始缓冲结束标志不等于TRUE,不执行出队处理,直接返回到入队处理;否则继续执行(2)。
(2)假如队列当前为空,继续执行(3);否则判断当前时间与上次成功出队时间之差,是否大于待出队首包与上次成功出队包之间的时戳差值,假如是则将队列首包出队,否则继续执行(3)。
(3)假如当前时间与上次成功出队时间之差,是否大于最大出队时间间隔,假如是则执行以下3.1-3.3的操作,否则结束出队处理,返回到入队处理。
(3.1)出队插帧指示帧V-lost
(3.2)清除队列中当前GOP所有后续帧
(3.3)需要等待关键帧标志置为TRUE
Video Jitter Buffer对各种异常场景的处理效果如下:
1、乱序抖动:如图11所示为Video Jitter Buffer乱序抖动处理的效果图,其中,发送端V1~V9经过网络传输到达接收端,发生乱序,经过Video Jitter Buffer后恢复为发送端顺序。
2、丢包:如图12所示为Video Jitter Buffer丢包处理效果图,其中,发送端V1~V9经过网络传输到达接收端,发生乱序且V4丢失,经过Video Jitter Buffer后恢复为发送端顺序,同时V5~V8被主动丢弃,V4~V8时间段使用若干V-lost填充,其帧率为最低出队帧率。
3、断流:如图13所示为Video Jitter Buffer断流处理的效果图,发送端V1~V9经过网络传输到达接收端,发生乱序且从V3开始发生断流,直到收到V8开始恢复,经过VideoJitter Buffer后恢复为发送端顺序,同时V8被主动丢弃,V3与V9之间的时间段使用若干V-lost填充,其帧率为最低出队帧率。
二、Audio Jitter Buffer
Audio Jitter Buffer负责音频流乱序、丢包、抖动、断流等异常处理,具体处理流程如图14所示。图14中关键变量定义为:1)MinSize:初始缓冲最小包数,当缓冲包数达到该值后才能开始执行出队操作,否则只做入队不出队。该值可根据系统延时要求灵活配置。2)最大出队时间间隔:根据最低出队帧率计算得到,例如最低帧率配置为25fps,则最大出队时间间隔=1000ms÷25fps=40ms。
1、入队处理
(1)初始状态下,初始缓冲结束标志=TRUE。
(2)输入包入队预处理:读取一包音频,对包序号跳变、翻转的视频包进行修复,当前包序号=队列尾包序号+1;假如包序号正常,不做处理。
(3)输入包合法性判断:对于包序号大于上一次出队包的音频包即旧包,丢弃当前包并结束入队处理;否则继续执行(4)。
(4)按照包序号从小到大顺序将输入包入队。
(5)假如当前队列长度大于MinSize,则初始缓冲结束标志=TRUE。
2、出队处理
(1)假如初始缓冲结束标志不等于TRUE,不执行出队处理,直接返回到入队处理;否则继续执行(2)。
(2)假如队列当前为空,继续执行(3);否则判断当前时间与上次成功出队时间之差,是否大于待出队首包与上次成功出队包之间的时戳差值,假如是则将队列首包出队,否则继续执行(3)。
(3)假如当前时间与上次成功出队时间之差,是否大于最大出队时间间隔,假如是则出队插帧指示帧A-lost,否则结束出队处理,返回到入队处理。
Audio Jitter Buffer对各种异常场景的处理效果如下:
1、乱序抖动:如图15所示为Audio Jitter Buffer乱序处理的效果图,其中,发送端A1~A9经过网络传输到达接收端,发生乱序,经过Audio Jitter Buffer后恢复为发送端顺序。
2、丢包:如图16所示为Audio Jitter Buffer丢包处理效果图,其中,发送端A1~A9经过网络传输到达接收端,发生乱序且A4丢失,经过Audio Jitter Buffer后恢复为发送端顺序,A4使用若干A-lost填充。
3、断流:如图17所示为Audio Jitter Buffer断流处理的效果图,其中,发送端A1~A9经过网络传输到达接收端,发生乱序且从A3开始发生断流,直到收到A8开始恢复,经过Audio Jitter Buffer后恢复为发送端顺序,A3与A9之间的时间段使用若干A-lost填充,其帧率为最低出队帧率。
三、TsJitterBuffer
TsJitterBuffer负责对分别排序好的音视频流按照时戳混排,保证最终输出的音视频混合流时戳连续递增,具体处理流程如图18所示。图18中关键变量定义为:MinSize:缓冲最小包数,当缓冲包数达到该值后才能开始执行出队操作,否则只做入队不出队。该值可根据系统延时要求灵活配置。
1、入队处理
(1)初始状态下,初始缓冲结束标志=TRUE,需要等待关键帧标志=TRUE,保证入队首包必须为关键帧。
(2)读取一包数据,若需要等待关键帧但当前包非关键帧,则结束入队处理;否则继续执行(3)。
(3)输入包入队预处理:对时戳跳变、翻转的音频包和视频包分别进行修复,假如包时戳正常,不做处理。
(4)输入包合法性判断:对于时戳大于上一次出队包的数据包即旧包,丢弃当前包并结束入队处理;否则继续执行(5)。
(5)按照时戳从小到大顺序将输入包入队。
(6)假如当前队列同时存在音频和视频数据,则初始缓冲结束标志=TRUE。
2、出队处理
(1)假如初始缓冲结束标志不等于TRUE,不执行出队处理,直接返回到入队处理;否则继续执行(2)。
(2)假如队列当前长度大于MinSize,则将队列首包出队,否则返回到入队处理。
Ts Jitter Buffer处理效果如图19所示。其中,Video Jitter Buffer输出V1~V9,其中包含3个V-lost,Audio Jitter Buffer输出A1~A13,其中包含3个A-lost。经过TsJitter Buffer处理后,音视频数据按照时戳从小到大顺序混排输出MediaOutput1。
本发明实施例的一种媒体帧信息的处理系统,如图20所示,终端41发起媒体流请求,向服务器42请求媒体流(媒体流包括音频和/或视频),音频和视频可以同时反馈,也可以分别反馈。由于终端与服务器在通信时会存在各种问题,如网络异常导致反馈中断,而后重新反馈;或者反馈的媒体流中的音频和/或视频流在传输时序上出现时序混乱等情况,那么,在终端对接收的媒体流进行处理时,也需要对媒体流中的音、视频进行校对、时序混排等处理。其中,终端41包括:分割单元411,用于对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;第一缓冲单元412,用于接收所述分割单元所发送的所述至少一个视频帧,所述第一缓冲单元可以为第一Jitterbuffer缓冲区,如Video Jitter Buffer;第二缓冲单元413,用于接收所述分割单元所发送的所述至少一个音频帧,所述第二缓冲单元可以为所述第二Jitterbuffer缓冲区,如AudioJitterBuffer;以及,第一缓冲单元412,还用于根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流,第一缓冲单元可以为第一Jitterbuffer缓冲区,如Video JitterBuffer,Video Jitter Buffer负责视频流乱序、丢包、抖动、断流等异常处理,具体的,如图5所示,按照包序号从小到大分别对视频流和音频流进行排序,对乱序场景进行修复,并按照相邻帧原始时戳差值进行出队节拍控制,当发生首包抖动、丢包、断流等异常,导致出队帧率低于设定下限时,按照下限出队帧率输出插帧指示帧(V-lost)。以及第二缓冲单元413,还用于根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,所述第二缓冲单元可以为所述第二Jitterbuffer缓冲区,如AudioJitterBuffer,Audio Jitter Buffer负责音频流乱序、丢包、抖动、断流等异常处理,具体的,如图5所示,按照包序号从小到大分别对视频流和音频流进行排序,对乱序场景进行修复,并按照相邻帧原始时戳差值进行出队节拍控制,当发生首包抖动、丢包、断流等异常,导致出队帧率低于设定下限时,按照下限出队帧率输出插帧指示帧(A-lost)。第三缓冲单元414,用于从所述第一缓冲单元和所述第二缓冲单元分别接收所述待处理的视频流和所述待处理的音频流,第三缓冲单元可以为第三Jitterbuffer,如TsJitterBuffer,根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流,TsJitterBuffer负责对分别排序好的音视频流按照时戳混排,保证最终输出的音视频混合流时戳连续递增,具体的,如图5所示,TsJitterBuffer按照原始输入时戳从小到大对音视频流进行混排,保证插帧补流后的码流时戳连续增长且音视频均匀交错。
本发明实施例中,还可以包括:图5中的Post-Process,Post-Process用于对插帧补流后的音、视频流分别进行转码或转封装处理,当检测到V-lost时,插入上一个视频帧或定制画面(例如提示视频正在加载中的提示画面);当检测到A-lost时,插入音频静音帧。
本发明实施例一实施方式中,所述终端还包括:参数配置单元,用于:设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理;根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
本发明实施例一实施方式中,所述第一缓冲单元,进一步用于:执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理;进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
本发明实施例一实施方式中,所述第一缓冲单元,进一步用于:执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作,否则,结束出队处理,返回到入队处理;队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行预设操作,否则,结束出队处理,返回到入队处理。
本发明实施例一实施方式中,所述第二缓冲单元,进一步用于:执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;对读取的音频包进行入队预处理;进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
本发明实施例一实施方式中,所述第二缓冲单元,进一步用于:执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第二预设操作,否则,结束出队处理,返回到入队处理;队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作,否则,结束出队处理,返回到入队处理。
本发明实施例一实施方式中,所述第三缓冲单元,进一步用于:执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理;进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
本发明实施例一实施方式中,所述第三缓冲单元,进一步用于:执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,判断队列当前长度是否大于所述初始缓冲最小包数;如果队列当前长度大于所述初始缓冲最小包数,则将队列首包出队,否则,返回到入队处理。
这里需要指出的是:以上涉及终端和服务器项的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明终端和服务器实施例中未披露的技术细节,请参照本发明方法流程描述的实施例所描述内容。
本发明实施例的一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述实施例任一项所述的媒体流信息的处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种媒体流信息的处理方法,其特征在于,所述方法包括:
对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;将所述至少一个视频帧发送到第一抖动缓冲区Jitterbuffer;
将所述至少一个音频帧发送到第二Jitterbuffer;
由所述第一Jitterbuffer按照包序号由小到大的排列顺序,对所述至少一个视频帧构成的视频流进行排序,得到所述视频流对应的排序结果;获取所述视频流中的关键帧,建立所述关键帧与非关键帧的相关性;根据所述视频流对应的排序结果和所述相关性得到相邻视频帧的原始时戳差值;根据所述相邻视频帧的原始时戳差值进行出队节拍控制;当异常导致的所述视频流的出队帧率低于所述第一最低帧率策略中设置的所述视频流的下限出队帧率时,根据所述视频流的下限出队帧率输出所述视频流对应的插帧指示帧,并根据所述视频流对应的插帧指示帧对异常进行修复后得到待处理的视频流;
由所述第二Jitterbuffer按照包序号由小到大的排列顺序,对所述至少一个音频帧构成的音频流进行排序,得到所述音频流对应的排序结果;根据所述音频流对应的排序结果得到相邻音频帧的原始时戳差值;根据所述相邻音频帧的原始时戳差值进行出队节拍控制;当异常导致的所述音频流的出队帧率低于所述第二最低帧率策略中设置的所述音频流的下限出队帧率时,根据所述音频流的下限出队帧率输出所述音频流对应的插帧指示帧,并根据所述音频流对应的插帧指示帧对异常进行修复后得到待处理的音频流;
将所述待处理的视频流和所述待处理的音频流发送到第三Jitterbuffer;
由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理;
根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
3.根据权利要求2所述的方法,其特征在于,所述由所述第一Jitterbuffer根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为真TRUE;
读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理;
进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
4.根据权利要求2所述的方法,其特征在于,所述由所述第一Jitterbuffer根据第一最低帧率策略,对所述至少一个视频帧构成视频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的视频流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行预设操作,否则,结束出队处理,返回到入队处理。
5.根据权利要求2所述的方法,其特征在于,由所述第二Jitterbuffer根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
对读取的音频包进行入队预处理;
进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
6.根据权利要求2所述的方法,其特征在于,由所述第二Jitterbuffer根据第二最低帧率策略,对所述至少一个音频帧构成音频流中发生异常的帧执行插帧判决,根据判决结果对异常进行修复后得到待处理的音频流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第二预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作,否则,结束出队处理,返回到入队处理。
7.根据权利要求2所述的方法,其特征在于,由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流,包括:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理;
进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
8.根据权利要求2所述的方法,其特征在于,由所述第三Jitterbuffer根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流,包括:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,判断队列当前长度是否大于所述初始缓冲最小包数;
如果队列当前长度大于所述初始缓冲最小包数,则将队列首包出队,否则,返回到入队处理。
9.一种终端,其特征在于,所述终端包括:
分割单元,用于对由至少一个媒体帧信息构成的第一媒体数据流按照媒体帧类型进行分离,得到至少一个视频帧和至少一个音频帧;
第一缓冲单元,用于接收所述分割单元所发送的所述至少一个视频帧;按照包序号由小到大的排列顺序,对所述至少一个视频帧构成的视频流进行排序,得到所述视频流对应的排序结果;获取所述视频流中的关键帧,建立所述关键帧与非关键帧的相关性;根据所述视频流对应的排序结果和所述相关性得到相邻视频帧的原始时戳差值;根据所述相邻视频帧的原始时戳差值进行出队节拍控制;当异常导致的所述视频流的出队帧率低于所述第一最低帧率策略中设置的所述视频流的下限出队帧率时,根据所述视频流的下限出队帧率输出所述视频流对应的插帧指示帧,并根据所述视频流对应的插帧指示帧对异常进行修复后得到待处理的视频流;
第二缓冲单元,用于接收所述分割单元所发送的所述至少一个音频帧;按照包序号由小到大的排列顺序,对所述至少一个音频帧构成的音频流进行排序,得到所述音频流对应的排序结果;根据所述音频流对应的排序结果得到相邻音频帧的原始时戳差值;根据所述相邻音频帧的原始时戳差值进行出队节拍控制;当异常导致的所述音频流的出队帧率低于所述第二最低帧率策略中设置的所述音频流的下限出队帧率时,根据所述音频流的下限出队帧率输出所述音频流对应的插帧指示帧,并根据所述音频流对应的插帧指示帧对异常进行修复后得到待处理的音频流;
第三缓冲单元,用于从所述第一缓冲单元和所述第二缓冲单元分别接收所述待处理的视频流和所述待处理的音频流;根据原始输入时戳的时间顺序,对所述待处理的视频流和所述待处理的音频流进行音视频混排处理,得到第二媒体数据流。
10.根据权利要求9所述的终端,其特征在于,所述终端还包括:参数配置单元,用于:
设置初始缓冲最小包数,如果当前缓冲包数达到所述初始缓冲最小包数,则执行出队处理,否则,执行入队处理;
根据最低出队帧率得到最大出队时间间隔,如果当前时间与上一次成功出队的时间之差大于所述最大出队时间间隔,则执行第一预设操作,否则,结束出队处理,返回到入队处理。
11.根据权利要求10所述的终端,其特征在于,所述第一缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为真TRUE;
读取输入的视频包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述视频包进行入队预处理;
进行入队预处理后进行视频包的合法性判断,若当前视频包的包序号大于上一次出队视频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前视频包入队。
12.根据权利要求10所述的终端,其特征在于,所述第一缓冲单元,进一步用于:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第一预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行预设操作,否则,结束出队处理,返回到入队处理。
13.根据权利要求10所述的终端,其特征在于,所述第二缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
对读取的音频包进行入队预处理;
进行入队预处理后进行音频包的合法性判断,若当前音频包的包序号大于上一次出队音频包的包序号,则丢弃当前视频包,结束当前入队处理,否则,按照包序号从小到大的顺序,将当前音频包入队。
14.根据权利要求10所述的终端,其特征在于,所述第二缓冲单元,进一步用于:
执行所述出队处理时,在初始状态下,若初始缓冲结束标志不为TRUE,则不执行当前出队处理,直接返回到入队处理,否则,根据队列当前为空或不为空的情况分别进行判断;
队列当前为空的情况下,若当前时间与上次成功出队时间之差大于最大出队时间间隔时,则执行第二预设操作,否则,结束出队处理,返回到入队处理;
队列当前不为空的情况下,若当前时间与上次成功出队时间之差大于待出队首包与上次成功出队包之间的时戳差值时,则将队列首包出队,否则,判断当前时间与上次成功出队时间之差是否大于最大出队时间间隔时,如果是,则执行第二预设操作,否则,结束出队处理,返回到入队处理。
15.根据权利要求10所述的终端,其特征在于,所述第三缓冲单元,进一步用于:
执行所述入队处理时,在初始状态下,设置初始缓冲结束标志为TRUE;
读取输入的数据包,当需要等待的关键帧标志为TRUE时,确定入队的首包为关键帧;
若当前需要等待关键帧,但当前为非关键帧,则结束当前的入队处理,否则对所述数据包进行入队预处理;
进行入队预处理后进行数据包的合法性判断,若当前数据包的原始输入时戳大于上一次出队数据包,则丢弃当前数据包,结束当前入队处理,否则,按照原始输入时戳从小到大的顺序,将当前数据包入队。
16.一种计算机可读存储介质,其特征在于,存储有可执行指令,其特征在于,所述可执行指令用于被处理器执行时,实现权利要求1至8任一项所述的媒体流信息的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710596880.7A CN109286601B (zh) | 2017-07-20 | 2017-07-20 | 一种媒体流信息的处理方法及终端、计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710596880.7A CN109286601B (zh) | 2017-07-20 | 2017-07-20 | 一种媒体流信息的处理方法及终端、计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109286601A CN109286601A (zh) | 2019-01-29 |
CN109286601B true CN109286601B (zh) | 2022-03-11 |
Family
ID=65184642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710596880.7A Active CN109286601B (zh) | 2017-07-20 | 2017-07-20 | 一种媒体流信息的处理方法及终端、计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109286601B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114374871B (zh) * | 2020-10-15 | 2023-11-14 | 瑞昱半导体股份有限公司 | 串流媒体的时戳处理方法 |
CN114554277B (zh) * | 2020-11-24 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 多媒体的处理方法、装置、服务器及计算机可读存储介质 |
CN112714353B (zh) * | 2020-12-28 | 2022-08-30 | 杭州电子科技大学 | 一种多媒体流分布式同步方法 |
CN114339156B (zh) * | 2021-12-29 | 2023-03-14 | 武汉大学 | 视频流帧率调整方法、装置、设备及可读存储介质 |
CN116033225A (zh) * | 2023-03-16 | 2023-04-28 | 深圳市微浦技术有限公司 | 基于机顶盒的数字信号处理方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626512A (zh) * | 2009-08-11 | 2010-01-13 | 北京交通大学 | 一种基于相关性优化准则的多描述视频编码方法及装置 |
CN103885991A (zh) * | 2012-12-24 | 2014-06-25 | 北大方正集团有限公司 | 用于移动终端的内容发布方法和装置 |
KR20150028588A (ko) * | 2013-09-06 | 2015-03-16 | 삼성전자주식회사 | 스트리밍 서비스를 위한 전자 장치 및 방법 |
CN104837031B (zh) * | 2015-04-08 | 2018-01-30 | 中国科学院信息工程研究所 | 一种高速自适应提取视频关键帧的方法 |
CN105357229B (zh) * | 2015-12-22 | 2019-12-13 | 深圳市科漫达智能管理科技有限公司 | 一种视频处理方法及装置 |
CN107295355A (zh) * | 2017-08-18 | 2017-10-24 | 王建民 | 一种音视频综合处理系统及方法 |
-
2017
- 2017-07-20 CN CN201710596880.7A patent/CN109286601B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109286601A (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109286601B (zh) | 一种媒体流信息的处理方法及终端、计算机存储介质 | |
US11381622B2 (en) | Method and apparatus for media data delivery control | |
US11546399B2 (en) | Method and apparatus for providing a low latency transmission system using adjustable buffers | |
JP4419023B2 (ja) | 移動体通信端末、および、プログラム | |
CN104731712B (zh) | 自动清理缓存数据的方法和移动终端 | |
US9361060B2 (en) | Distributed rendering synchronization control for display clustering | |
US9985887B2 (en) | Method and apparatus for providing a low latency transmission system using adaptive buffering estimation | |
KR101267245B1 (ko) | 데이터 수신 단말기, 데이터 배신 서버, 데이터 배신 시스템, 및 데이터 배신 방법 | |
CN108093019B (zh) | 一种成员信息的刷新方法及终端 | |
US20120019719A1 (en) | Digital television broadcasting reproduction device and reproduction method therefor | |
KR20090068567A (ko) | 이동 단말기 및 이동 단말기의 통신 방법 | |
KR20160108342A (ko) | 계층화된 코딩된 콘텐츠를 멀티플렉싱하기 위한 방법 및 장치 | |
US8578428B2 (en) | Air-to-ground communications system and method | |
US9031495B2 (en) | System and method for optimization of network delivery of streaming data | |
US20080288518A1 (en) | Content data block processing | |
CN101521817B (zh) | 一种用于改善手机电视播放连续性的方法及其终端 | |
CA2792106A1 (en) | Method and system for inhibiting audio-video synchronization delay | |
JP2007259243A (ja) | Tvチューナ付携帯情報端末装置 | |
CN106817614B (zh) | 音视频丢帧装置及方法 | |
JP5032179B2 (ja) | ストリーム再生装置及びメディアデータ復号方法 | |
KR102302772B1 (ko) | 레이트 페이싱을 위해 버퍼를 관리하는 장치 및 방법 | |
WO2009007508A1 (en) | Method and apparatus for improving mobile broadcast quality | |
WO2015064082A1 (ja) | パケット送信方法、コンテンツ再生方法、パケット送信システム及び端末 | |
CN106792161B (zh) | 移动终端和数据传输方法 | |
KR100771994B1 (ko) | 디지털 방송 수신 장치 및 그의 디지털 방송 제어 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |