首页 / 视频流分发方法

视频流分发方法无效专利 发明

技术领域

[0001] 本发明涉及流媒体传输,尤其是一种分发性能高,负载均衡的视频流分发方法。

相关背景技术

[0002] 在开发流媒体平台的过程中,为了解决前端设备,如摄像机、IPSAN或DVR等设备的压力,翼板都采用了流分发策略。在硬件环境同等的条件下,如何提高分发效率是一个技术难题。当前普遍采用的方式有两种:1、数据源和分发处理在同一个线程,此种方式分发效率不高,且分发的份数也不多;
2、每个分发对象是一个线程,此种方式过多占用线程资源,每个线程没有得到充分利用,线程过多在线程切换时也会消耗资源;
以上两种方式在请求者过多时都会出现接收延时,显示滞后的问题,没有考虑到负载均衡。

具体实施方式

[0010] 实施例1: 一种视频流分发方法,包括数据源线程与分发线程,一个数据源线程对应N个分发线程,一个分发线程仅对应一个数据源线程;具体分发步骤如下:1)、建立线程池,创建两倍于服务器所使用的cpu的线程数,并将线程池中的线程分为数据源线程和分发线程,建立对应原则,即一个数据源线程对应N个分发线程,一个分发线程仅对应一个数据源线程;
2)、为数据源线程建立循环队列,该队列默认缓存50帧数据,循环队列的头指向新入队列的数据,循环队列的尾指向获取数据的位置;
3)、每个分发线程有一个指向共享队列取数据的指针,指针初始指向位置是循环队列的头的上一帧数据;
4)、设定分发线程的分发数量上限,每个分发线程的分发任务不超过三个;
5)、当新分发任务添加时,先找到该任务的数据源线程,此时有以下两种情况:
A、该任务未建立数据源线程,则从线程池中抽取空闲线程创建数据源线程,同时抽取线程池的空闲线程建立该任务的分发线程;
B、该任务存在数据源线程,找到该数据源对应的所有分发线程,从中找到任务量最少的分发线程,若所有分发线程均达到分发上限,则抽取线程池的空闲线程建立该任务新的分发线程;
6)、当数据源线程销毁时,释放该数据源线程以及其对应的所有分发线程,数据源线程及分发线程进入线程池待用;当仅删除一个分发线程时,则通过该分发线程对应的数据源线程找到该数据源线程对应的其他分发线程,对剩余所有分发线程的分发任务进行平均分配,以达到分发线程任务的均衡。
[0011] 分发线程的数据读取策略是:当分发线程在从数据源循环队列获取数据时,发现自己与数据源的写入位置相差比较大的时候,会一次读取多帧数据进行发送,且读取的位置不能超过写入位置。

当前第1页 第1页 第2页 第3页