具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明的主要思想是:当一台VC对一台EC同时进行多路通道实况视频点播时,EC对多路通道的实况视频流进行合并,统一编码以减少总码流量,降低带宽占用量,并通过一个UDP连接将编码后的实况视频流传输到VC客户端,从而在各路实况点播通道之间实现了丢包风险负载分担。
基于上述主要思想,本发明实施例提出一种实现实况视频点播的方法,该方法包括以下步骤:
第1步:VM建立实况点播表,该实况点播表用于记录当前正在进行的实况视频点播的VC的IP地址、EC的IP地址和EC的实况点播通道。实况点播表示例如表1所示:
VC的IP地址 |
EC的IP地址 |
EC的实况点播通道 |
192.168.100.96 |
192.168.100.200 |
2 |
192.168.100.85 |
192.168.100.201 |
3 |
|
|
|
表1
实况视频点播结束则删除实况点播表中相应的记录。
第2步:当VM接收到来自VC的新的实况视频点播请求时,在实况点播表中进行相应的记录。示例如表2所示:
VC的IP地址 |
EC的IP地址 |
EC的实况点播通道 |
192.168.100.96 |
192.168.100.200 |
2 |
192.168.100.85 |
192.168.100.201 |
3 |
192.168.100.96 |
192.168.100.200 |
4 |
|
|
|
表2
第3步:VM查询实况点播表,判断是否有VC客户端的IP地址和EC编码器的IP地址分别相同的记录,如果有,则表明该VC当前正在对该EC同时进行多路通道的实况视频点播,按照本发明主要思想,VM需要通知EC对该VC的各个实况点播通道的视频流进行合并编码。
具体的进行合并编码的方式需要根据该EC当前是否被其他VC进行实况点播,以及其他VC所点播的通道与该进行多路实况视频点播的VC所点播的通道是否有重叠来确定。具体而言:
VM判断是否存在除该VC之外的其他VC当前在对该EC进行实况视频点播,如果不存在,执行a;如果存在,进一步判断其他VC与该VC是否存在相同的实况点播通道,如果存在相同的实况点播通道,执行b,如果不存在相同的实况点播通道,执行a;
a、通知该EC将该VC所点播的各个实况点播通道的视频流进行拼接,并按预设比例降低拼接后的视频流的分辨率,然后对降低分辨率后的视频流进行编码;
b、通知该EC将该VC所点播的各个实况点播通道的视频流单独进行编码,并将编码后的视频流通过一个UDP连接发送。
图2为本发明一实施例中一台VC对一台EC同时进行多路通道实况视频点播的组网示意图。
对于拼接的情况,由于VC端将同时显示所拼接的多路通道的实况视频流,因此,可以按预设比例降低视频流的分辨率,从而达到减少总码流量,降低带宽占用量的目的。假设拼接的是N路通道,因为VC端单个显示屏同时播放N路实况,用于每一路实况播放的显示屏大小实际上仅为显示屏实际大小的1/N,因此,较佳地,可以将各路通道的视频流的分辨率降低N倍。
对于各路通道单独编码的情况,由于将编码后的视频流通过一个UDP连接发送,减少了多个UDP发送时的报文头部开销,从而降低了码流量,使得总码流量得以减少,并节省了端口。
此外,如果实况点播表中不存在与新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录,表明该新的实况视频点播请求是其他VC的实况视频点播请求,此时,有几种情况:
第一种情况:新的实况视频点播请求的对象是实况点播表中已有的EC,即:新的实况视频点播请求的EC的IP地址与实况点播表中已有记录的EC的IP地址相同,此时,需要判断新的实况视频点播请求的实况点播通道是否是该EC已被合并编码的实况点播通道之一,如果是,VM通知EC将所有实况点播通道的视频流单独进行编码,并将同一VC所点播的编码后的视频流通过一个UDP连接发送;如果不是,VM通知EC将新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC。
第二种情况:新的实况视频点播请求的对象是实况点播表中并不存在的EC,即:新的实况视频点播请求的EC的IP地址与实况点播表中已有记录的EC的IP地址并不相同,此时,VM可以按照现有技术,通知该新的实况视频点播请求所对应的EC将新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC即可。
总之,如果新的实况视频点播请求针对的虽然为同一台EC,但为不同的实况点播通道,则EC可以单独将这路通道的视频源进行编码并发送到相应的VC,不影响已有的拼接通道的编码。
第4步:EC根据VM的通知,将同时进行多路通道实况视频点播的VC所点播的各个实况点播通道的视频流合并编码,并将编码后的视频流通过一个UDP连接发送给相应的VC。
可以采用拼接技术实现对视频流的合并编码。当采用拼接技术对视频源进行拼接时,在发送端是将不同的图像进行拼接,并在报文头部记录拼接坐标信息,然后进行编码发送;在接收端解码后,可以通过读取报文头部的拼接坐标信息得到各个图像在解码后拼接图像中的位置,然后将拼接图像分解成独立的图像。
图3为本发明一实施例中对多通道视频源进行拼接编码传输以及解码还原的示意图。
为了使VC端对接收到的视频流顺利解码,需要在UDP报文的报文头中携带扩展的合并编码头字段,该字段用于向VC指示各个实况点播通道的视频流在该UDP报文中的位置。本发明实施例中,合并编码头字段可以包括:UDP类型字段、通道数量字段、偏移字段;其中:
UDP类型字段,用于指示UDP连接中传输的UDP报文的类型,类型包括:普通UDP报文、对各个实况点播通道的视频流进行拼接编码得到的报文和对各个实况点播通道的视频流进行单独编码得到的报文;当类型为对各个实况点播通道的视频流进行单独编码得到的报文时,通道数量字段和偏移字段有效;
通道数量字段,用于指示EC所拥有的实况点播通道的总数量;由于通道数量是根据EC类型确定的,因此,这里,也可以通过EC类型来表明通道数量;
偏移字段的个数与通道数量相同,每个偏移字段与一个实况点播通道一一对应,各个偏移字段用于指示其对应的实况点播通道的视频流在UDP报文中的MPEG数据片段的数量。
较佳地,UDP类型字段的长度为2比特;通道数量字段的长度为6比特;每个偏移字段的长度为4比特。
下面给出一个包含本发明扩展的合并编码头字段的UDP报文示例。实际应用中,可以根据本发明给出的上述设置合并编码头字段的原则设置合并编码头字段。
本示例的UDP报文中,在传统UDP报文头后,增加了一个长度为10个字节的扩展头,如表3所示:
表3
表3中,扩展头的0-1bit为UDP类型字段,具体含义如下:
00为普通UDP报文,忽略其后10个字节的内容;
01为对各个实况点播通道的视频流进行单独编码得到的报文,其后10个字节内容有效;
11为对各个实况点播通道的视频流进行拼接编码得到的报文,忽略其后10个字节的内容。
2-7bit为EC类型字段。
8-15bit为保留字段。
其后每4个bit为一个偏移字段,代表一个通道在此UDP报文中MPEG的数量,以便VC接收到数据后加以区分。假设通道数量为16个,该UDP报文头中包含16个偏移字段。
第5步:VC通过一个UDP连接从EC接收多个实况点播通道的合并编码后的视频流,对合并编码后的视频流进行解合并和解码,得到VC所点播的各个实况点播通道的视频流。
第6步:如果VC需要增加实况视频点播通道数,可以按照上述流程向VM发送实况视频点播请求,如果VC需要减少实况点播通道数,可以向VM发送结束实况视频点播的请求,当接收到来自VC的结束实况视频点播的请求时,VM从实况点播表中删除相应的记录,并通知EC从合并编码的视频源中删除相应的实况点播通道的视频源,EC据此将需要删除的实况点播通道的视频源从合并编码的视频源中删除。
以上从整体实现流程的角度对本发明实现实况视频点播的方法进行了详细说明,下面对本发明分别用于VM、EC和VC的实现实况视频点播的方法进行简要说明。
本发明实施例提供的一种适用于VM的实现实况视频点播的方法包括以下步骤:
VM建立实况点播表,该实况点播表用于记录当前正在进行的实况视频点播的视频管理客户端VC的IP地址、视频编码器EC的IP地址和EC的实况点播通道;
当接收到来自VC的新的实况视频点播请求时,VM在实况点播表中记录该新的实况视频点播请求所对应的VC的IP地址、EC的IP地址和EC的实况点播通道,并判断实况点播表中是否存在与所述新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录,如果存在,通知该EC将该VC所点播的各个实况点播通道的视频流合并编码,并将合并编码后的视频流通过一个UDP连接发送给该VC。
上述方法中,在判定实况点播表中存在与该新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录之后,并在通知该EC将该VC所点播的各个实况点播通道的视频流合并编码之前,可以进一步包括:
查询所述实况点播表,判断是否存在除该VC之外的其他VC当前在对该EC进行实况视频点播,如果不存在,执行a;如果存在,进一步判断其他VC与该VC是否存在相同的实况点播通道,如果存在相同的实况点播通道,执行b,如果不存在相同的实况点播通道,执行a;
a、通知该EC将该VC所点播的各个实况点播通道的视频流进行拼接,并按预设比例降低拼接后的视频流的分辨率,然后对降低分辨率后的视频流进行编码;
b、通知该EC将该VC所点播的各个实况点播通道的视频流单独进行编码。
上述方法中,如果判定实况点播表中不存在与该新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录,则该方法进一步包括:
判断实况点播表中是否存在与该新的实况视频点播请求的EC的IP地址相同的记录,
如果不存在,VM通知该新的实况视频点播请求所对应的EC将该新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC;
如果存在,进一步判断该新的实况视频点播请求的实况点播通道是否是该EC已被合并编码的实况点播通道之一,如果是,VM通知所述EC将所有实况点播通道的视频流单独进行编码,并将同一VC所点播的编码后的视频流通过一个UDP连接发送;如果不是,VM通知该EC将该新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC。
当接收到来自VC的结束实况视频点播的请求时,VM从实况点播表中删除相应的记录,并通知EC从合并编码的视频源中删除相应的实况点播通道的视频源。
本发明实施例提供的一种适用于EC的实现实况视频点播的方法包括以下步骤:
当接收到来自VM的将第一VC所点播的各个实况点播通道的视频流合并编码的通知时,EC将第一VC所点播的各个实况点播通道的视频流合并编码,并将编码后的视频流通过一个UDP连接发送给第一VC。
上述方法中,合并编码的方式可以包括:将第一VC所点播的各个实况点播通道的视频流进行拼接,并按预设比例降低拼接后的视频流的分辨率,然后对降低分辨率后的视频流进行编码。
上述方法中,EC还可以将第一VC所点播的各个实况点播通道的视频流单独进行编码;此时,将单独进行编码的视频流通过一个UDP连接发送给第一VC,并在该UDP连接的UDP报文的报文头中携带扩展的合并编码头字段,该合并编码头字段用于向第一VC指示各个实况点播通道的视频流在该UDP报文中的位置。
所述合并编码头字段可以包括:UDP类型字段、通道数量字段、偏移字段;各字段的含义在前面已描述过,在此不再赘述。
当接收到来自VM的从合并编码的视频源中删除实况点播通道的视频源的通知时,EC将需要删除的实况点播通道的视频源从合并编码的视频源中删除。
本发明实施例提供的一种适用于VC的实现实况视频点播的方法包括以下步骤:
通过一个UDP连接从EC接收多个实况点播通道的合并编码后的视频流,对合并编码后的视频流进行解合并和解码,得到VC所点播的各个实况点播通道的视频流。
上述方法中,解合并的方式可以包括:对合并编码后的视频流进行解拼接。
解合并的方式还可以包括:根据UDP连接的UDP报文的报文头中携带的合并编码头字段确定各个实况点播通道的视频流在UDP报文中的位置,并在所确定的位置获取各个实况点播通道的编码后的视频流。
对应于上述方法,本发明实施例还提供了相应的设备,包括:一种视频管理服务器、一种视频编码器和一种视频管理客户端。下面对本发明实施例提供的设备进行说明。
本发明实施例提供的一种视频管理服务器的组成结构如图4所示,该视频管理服务器包括:存储模块410和多通道实况点播处理模块420;其中:
存储模块410,用于存储实况点播表;该实况点播表用于记录当前正在进行的实况视频点播的VC的IP地址、EC的IP地址和EC的实况点播通道;
多通道实况点播处理模块420,用于在VM接收到来自VC的新的实况视频点播请求时,在实况点播表中记录所述新的实况视频点播请求所对应的VC的IP地址、EC的IP地址和EC的实况点播通道,并用于判断所述实况点播表中是否存在与所述新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录,在存在时,通知所述EC将所述VC所点播的各个实况点播通道的视频流合并编码,并将合并编码后的视频流通过一个UDP连接发送给所述VC。
在判定实况点播表中存在与所述新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录之后,并在通知所述EC将所述VC所点播的各个实况点播通道的视频流合并编码之前,
多通道实况点播处理模块420进一步用于查询实况点播表,判断是否存在除所述VC之外的其他VC当前在对所述EC进行实况视频点播,如果不存在,所述多通道实况点播处理模块420用于执行a;如果存在,所述多通道实况点播处理模块420进一步用于判断所述其他VC与所述VC是否存在相同的实况点播通道,如果存在相同的实况点播通道,所述多通道实况点播处理模块420用于执行b,如果不存在相同的实况点播通道,所述多通道实况点播处理模块420用于执行a;
a、通知所述EC将所述VC所点播的各个实况点播通道的视频流进行拼接,并按预设比例降低拼接后的视频流的分辨率,然后对降低分辨率后的视频流进行编码;
b、通知所述EC将所述VC所点播的各个实况点播通道的视频流单独进行编码。
在判定实况点播表中不存在与所述新的实况视频点播请求的VC的IP地址和EC的IP地址均相同的记录时,多通道实况点播处理模块420进一步用于判断实况点播表中是否存在与所述新的实况视频点播请求的EC的IP地址相同的记录,
当不存在时,所述多通道实况点播处理模块420用于通知所述新的实况视频点播请求所对应的EC将所述新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC;
当存在时,所述多通道实况点播处理模块420进一步用于判断所述新的实况视频点播请求的实况点播通道是否是所述EC已被合并编码的实况点播通道之一,如果是,所述多通道实况点播处理模块420用于通知所述EC将所有实况点播通道的视频流单独进行编码,并将同一VC所点播的编码后的视频流通过一个UDP连接发送;如果不是,所述多通道实况点播处理模块420用于通知所述EC将所述新的实况视频点播请求所点播的实况点播通道的视频流进行编码,并发送到相应的VC。
图4所示视频管理服务器中的多通道实况点播处理模块420,还用于在接收到来自VC的结束实况视频点播的请求时,从实况点播表中删除相应的记录,并通知EC从合并编码的视频源中删除相应的实况点播通道的视频源。
本发明实施例提供的一种视频编码器的组成结构如图5所示,该视频编码器包括:合并编码处理模块510和发送模块520;其中:
合并编码处理模块510,用于在EC接收到来自VM的将第一VC所点播的各个实况点播通道的视频流合并编码的通知时,将第一VC所点播的各个实况点播通道的视频流合并编码;
发送模块520,用于将编码后的视频流通过一个UDP连接发送给第一VC。
较佳地,图5所示视频编码器中的合并编码处理模块510,用于将所述第一VC所点播的各个实况点播通道的视频流进行拼接,并按预设比例降低拼接后的视频流的分辨率,然后对降低分辨率后的视频流进行编码。
图5所示视频编码器中的合并编码处理模块510,还用于在接收到来自VM的从合并编码的视频源中删除实况点播通道的视频源的通知时,将需要删除的实况点播通道的视频源从合并编码的视频源中删除。
本发明实施例提供的一种视频管理客户端的组成结构如图6所示,该视频管理客户端,包括:接收模块610和解合并处理模块620;其中:
接收模块610,用于通过一个UDP连接从EC接收多个实况点播通道的合并编码后的视频流;
解合并处理模块620,用于对所述合并编码后的视频流进行解合并和解码,得到VC所点播的各个实况点播通道的视频流。
较佳地,解合并处理模块620,可以用于对所述合并编码后的视频流进行解拼接。
较佳地,解合并处理模块620,还可以用于根据UDP连接的UDP报文的报文头中携带的合并编码头字段确定各个实况点播通道的视频流在UDP报文中的位置,并用于在所确定的位置获取各个实况点播通道的编码后的视频流。
由上述实施例可见,本发明提供的实现实况视频点播方法及设备,在一台VC对一台EC同时进行多路通道实况视频点播时,EC通过对多路实况点播通道的视频流进行合并,统一编码以减少总码流量,降低带宽占用量,并通过一个UDP连接将编码后的视频流传输到VC客户端,从而在各路实况点播通道之间实现了丢包风险负载分担。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。