基于多数据源动态复用算法的MpegTS码流发送方法与流程

文档序号:13763895阅读:436来源:国知局
基于多数据源动态复用算法的Mpeg TS码流发送方法与流程

本发明涉及Mpeg TS码流发送应用技术领域,具体涉及一种基于多数据源动态复用算法的Mpeg TS码流发送方法。



背景技术:

传统的Mpeg TS码流发送应用主要针对单个TS数据源,发送速率主要根据单个TS数据源的时间戳(如:节目时钟参考等)进行发送。当需要向一个目标(如:Mpeg TS复用器的组播地址)同时发送多个速率相同或不同的TS数据源时,没有现成的技术可以解决这个问题。导致现有的Mpeg TS码流发送技术主要解决单个TS数据源向一个目标发送的问题,无法实现向一个目标同时发送多个速率相同或不同的TS数据源。



技术实现要素:

本发明克服了现有技术的不足,提供一种基于多数据源动态复用算法,并基于此算法实现了将多个速率相同或不同的TS数据源向一个目标同时发送的Mpeg TS码流发送方法。

为解决上述的技术问题,本发明采用以下技术方案:

一种基于多数据源动态复用算法的Mpeg TS码流发送方法,所述的方法包括以下步骤:

步骤一、将各数据源分别存入各数据源独自的缓冲区中;

步骤二、基于预定时间片,根据时间戳同步算法或者固定的发送速率,顺序读取不同数据源中的预定长度数据,然后组装成各个码流发送片段;

步骤三、将各个码流发送片段存入复用缓冲区;

步骤四、发送程序根据预定时间片,读取复用缓冲区中的发送片段,进行发送。

更进一步的技术方案是所述步骤一中的数据源包括:N个包含Mpeg音视频节目的TS数据源、N+M个固定发送速率的TS数据源。

更进一步的技术方案是对于N个包含Mpeg音视频节目的TS数据源,根据各自的节目时钟参考与当前时间的比较,从各自TS数据源的缓冲区中读取预定长度的数据,并与其他数据源的数据复用,然后存入复用缓冲区。

更进一步的技术方案是对于N+M个固定发送速率的TS数据源,根据各自的发送速率,从各自TS数据源的缓冲区中读取预定长度的数据,并与其他数据源的数据复用,然后存入复用缓冲区。

更进一步的技术方案是所述时间戳同步算法是从该TS数据源的缓冲区以平均码率计算出的包数进行读取,在读取过程中检测到该次读取的TS包中的节目时钟参考与当前发送的时间不一致时进行包数调整。

更进一步的技术方案是所述时间戳同步包括:

如果当前时间大于节目时钟参考,采用公式1计算出此次应当读取的包数:

P=S+(T1-T2)*R;

则此次应当读取的包数P等于码率的包数S加上当前时间T1减去节目时钟参考T2后得到的时间差乘以码率R得到的包数。

更进一步的技术方案是所述时间戳同步包括:

如果当前时间小于或等于节目时钟参考,采用公式2计算出此次应当读取的包数:

P=S-(P1-T2*R);

则先计算出此次多读取的包数,多读取的包数等于已经读取的总包数P1减去节目时钟参考T2乘以码率R得到的包数。本次应当读取的包数P等于码率的包数S减去多读取的包数。

更进一步的技术方案是还包括将数据源的IO耗时操作与发送操作分离步骤,以及复杂算法运算与发送操作分离步骤。

与现有技术相比,本发明实施例的有益效果之一是:传统的Mpeg TS码流发送应用每个数据源就需要占用一个目标地址(如:复用器的一个组播地址或者有一个ASI接口),而这些目标地址都是有限的。当需要同时发送数十路、甚至上百路TS码流时,将增加大量的设备,提升系统的复杂度和成本,同时降低了系统的硬件资源利用率。所以,使用本发明技术方案将降低了Mpeg TS码流发送系统复杂度和整体成本,节约系统建设成本。

附图说明

图1为本发明一个实施例中基于多数据源动态复用算法流程图。

图2为本发明一个实施例中时间戳同步算法流程图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

下面结合附图及实施例对本发明的具体实施方式进行详细描述。

如图1和图2所示,根据本发明的一个实施例,本实施例公开一种基于多数据源动态复用算法的Mpeg TS码流发送方法,实现向一个目标同时发送多个速率相同或不同的TS数据源的问题,同时能保证包含Mpeg音视频节目的TS数据源根据节目时钟参考进行发送(速率动态变化),Mpeg解码终端在接收到包含Mpeg音视频节目的TS数据源后可以正常进行Mpeg解码。

具体的,本实施例采用多数据源动态复用算法,以及为保证包含Mpeg音视频节目的TS数据源根据节目时钟参考进行发送而设计的时间戳同步算法。同时,为保证码流发送的连续性和较小的抖动,设计了将TS数据源的IO耗时操作与发送操作分离、复杂算法运算与发送操作分离的机制,实现了一种基于多数据源动态复用算法的Mpeg TS码流发送方法。

如图1所示,本实施例基于多数据源动态复用算法的Mpeg TS码流发送方法包括以下步骤:

步骤一、将各数据源分别存入各数据源独自的缓冲区中;

步骤二、基于特定时间片,根据时间戳同步算法或者固定的发送速率,顺序读取不同数据源中的特定长度数据,然后组装成各个码流发送片段;

步骤三、将各个码流发送片段存入复用缓冲区;

步骤四、发送程序根据预定时间片,读取复用缓冲区中的发送片段,进行发送。

其中,TS数据源1到N为包含Mpeg音视频节目的TS数据源。为保证其根据各自的节目时钟参考进行发送,使用了时间同步算法,根据各自的节目时钟参考与当前时间的比较,从各自TS数据源的缓冲区中读取特定长度的数据,并与其他数据源的数据复用,然后存入复用缓冲区。

TS数据源N+1到N+M为固定发送速率的TS数据源。根据各自的发送速率,从各自TS数据源的缓冲区中读取特定长度的数据,并与其他数据源的数据复用,然后存入复用缓冲区。

不同发送速率的数据源可以交替。

进一步的,如图2所示,时间戳同步算法的核心思想是从该TS数据源的缓冲区以平均码率计算出的包数进行读取,在读取过程中检测到该次读取的TS包中的节目时钟参考与当前发送的时间不一致时进行包数调整。

时间戳同步:分别在读取过快或过慢的情况下进行包数调整。

如果当前时间大于节目时钟参考表示读取过慢,采用公式1计算出此次应当读取的包数:

P=S+(T1-T2)*R 公式1;

则此次应当读取的包数(P)等于码率的包数(S)加上当前时间(T1)减去节目时钟参考(T2)后得到的时间差乘以码率(R)得到的包数。

如果当前时间小于或等于节目时钟参考表示读取过快,采用公式2计算出此次应当读取的包数:

P=S-(P1-T2*R) 公式2;

则先计算出此次多读取的包数,多读取的包数等于已经读取的总包数(P1)减去节目时钟参考(T2)乘以码率(R)得到的包数。本次应当读取的包数(P)等于码率的包数(S)减去多读取的包数。

同时,为保证码流发送的连续性和较小的抖动,本实施例的方法还包括将TS数据源的IO耗时操作与发送操作分离步骤,以及复杂算法运算与发送操作分离的步骤。

使用本实施例的发送方法降低了Mpeg TS码流发送系统复杂度和整体成本,节约系统建设成本。

在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”等,指的是结合该实施例描述的具体特征、结构或者特点包括在本申请概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一个实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。

尽管这里参照发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1