发明内容
本发明的目的在于提供一种实现网络视频点播的方法,以克服现有技术中通过静态地址转换实现网络视频点播的方法浪费公网地址,且降低服务器性能的问题。
本发明的另一目的在于提供一种实现网络视频点播的视频数据发送方法、服务器及节目源设备,以克服通过静态地址转换实现网络视频点播的***浪费公网地址,且降低服务器性能的问题。
为解决上述技术问题,本发明提供如下技术方案:
一种实现网络视频点播的方法,包括:
服务器接收客户端按照预先配置的公网地址发送的视频点播请求;
将所述视频点播请求转发至节目源,所述请求中还包含所述公网地址和所述客户端的地址;
向客户端转发节目源发送的根据所述公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。
按照下述步骤,服务器接收客户端按照预先配置的公网地址发送的视频点播请求:
服务器接收客户端发送的针对某一节目源的视频点播请求;
将所述公网地址作为节目源地址返回客户端;
接收客户端根据所述公网地址发送的点播所述节目源的请求。
所述二次封装具体为:
对所述视频数据进行内层地址封装,所述内层地址的源地址为所述公网地址,所述内层地址的目的地址为客户端的地址;
将所述封装后的视频数据进行外层地址封装,所述外层地址的源地址为节目源的地址,所述外层地址的目的地址为所述公网地址。
按照下述步骤,服务器向客户端转发视频数据:
服务器接收到所述视频数据后,将封装所述视频数据的外层地址删除;
按照封装所述视频数据的内层地址将所述视频数据发送至客户端。
进一步包括:
服务器预先配置用于接收节目源的注册请求的公网地址;
接收节目源根据所述公网地址周期性发送的注册请求;
判断所述注册请求的源地址与所述节目源的地址是否一致,若是,保存所述节目源的地址,否则,保存所述节目源的地址和所述注册请求的源地址。
一种实现网络视频点播的视频数据发送方法,包括:
节目源接收由服务器转发的客户端的视频点播请求,所述请求中包含服务器预先配置的公网地址和所述客户端的地址;
将视频数据根据所述公网地址、客户端的地址及节目源的地址进行二次封装;
将所述封装后的视频数据发送至服务器。
按照下述步骤,将视频数据根据所述公网地址、客户端的地址及节目源的地址进行二次封装:
对所述视频数据进行内层地址封装,所述内层地址的源地址为所述公网地址,所述内层地址的目的地址为客户端的地址;
将所述封装后的视频数据进行外层地址封装,所述外层地址的源地址为节目源的地址,所述外层地址的目的地址为所述公网地址。
一种实现网络视频点播的服务器,包括:
配置地址单元,用于预先配置接收视频点播请求的公网地址;
接收视频点播请求单元,用于接收客户端按照所述公网地址发送的视频点播请求;
转发视频点播请求单元,用于将所述视频点播请求转发至节目源,所述请求中还包含所述公网地址和所述客户端的地址;
发送视频数据单元,用于向客户端转发节目源发送的根据所述公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。
所述接收视频点播请求单元包括:
接收初始点播请求单元,用于接收客户端发送的针对某一节目源的视频点播请求;
返回公网地址单元,用于将所述公网地址作为节目源地址返回客户端;
接收点播节目源请求单元,用于接收客户端根据所述公网地址发送的点播所述节目源的请求。
所述发送视频数据单元包括:
删除地址单元,用于接收到所述视频数据后,将封装所述视频数据的外层地址删除;
转发视频数据单元,用于按照封装所述视频数据的内层地址将所述视频数据发送至客户端。
所述配置地址单元进一步用于预先配置接收节目源的注册请求的公网地址,还包括:
接收注册请求单元,用于接收节目源根据所述公网地址周期性发送的注册请求;
判断地址单元,用于判断所述注册请求的源地址与所述节目源的地址是否一致;
执行结果单元,用于当所述注册请求的源地址与所述节目源的地址一致时,保存所述节目源地址,当所述注册请求的源地址与所述节目源的地址不一致时,保存所述节目源的地址和所述注册请求的源地址。
一种节目源设备,包括:
接收视频点播请求单元,用于接收由服务器转发的客户端的视频点播请求,所述请求中包含服务器预先配置的公网地址和所述客户端的地址;
二次封装单元,用于将视频数据根据所述公网地址、客户端的地址及节目源的地址进行二次封装;
发送视频数据单元,用于将所述封装后的视频数据发送至服务器。
所述二次封装单元包括:
内层地址封装单元,用于对所述视频数据进行内层地址封装,所述内层地址的源地址为所述公网地址,所述内层地址的目的地址为客户端的地址;
外层地址封装单元,用于将所述封装后的视频数据进行外层地址封装,所述外层地址的源地址为节目源的地址,所述外层地址的目的地址为所述公网地址。
由以上对本发明技术方案的描述可知,本发明通过服务器接收客户端按照预先配置的公网地址发送的视频点播请求,将视频点播请求转发至节目源,该请求中还包含公网地址和客户端的地址,向客户端转发节目源发送的根据公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。应用本发明实现网络视频点播时,无需为在私网中的节目源配置公网地址,通过在服务器上配置专门的公网地址,并转发相应的点播请求和经过二次封装的视频数据,实现了公网中的客户端对私网中节目源的视频点播,节约了网络中的公网地址;本发明通过服务器中专门配置的公网地址,实现了支持动态的网络地址转换,服务器的转发功能可以通过视频转发芯片硬件实现,由于无需占用CPU资源,因此降低了服务器的性能损耗;本发明无需在NAT设备上配置公网地址到私网地址的映射关系,通过节目源的周期性注册实现了对该映射关系的维持,因此节约了大量的人工操作,实现了动态的网络视频点播,提高了视频点播的效率。
具体实施方式
本发明的核心是提供一种实现网络视频点播的方法,该方法中服务器接收客户端按照预先配置的公网地址发送的视频点播请求,将该视频点播请求转发至节目源,该请求中还包含公网地址和客户端的地址,向客户端转发节目源发送的根据公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。
本发明中的网络视频客户端、网络视频服务器和网络视频节目源存在于不同的网络中,即客户端和服务器均位于公网中,而节目源位于私网中。由于私网中的节目源需要与公网中的服务器和客户端通信,因此在网络中存在NAT设备,用于实现将私网地址转换为公网地址的网络地址转换功能。NAT设备在进行网络地址转换时,能够将接收到的IP数据包中的头部地址转换为其它IP地址,在应用网络地址转换实现私网与公网的通信时,能够将私网中节目源发送的注册请求报文或者视频数据报文中的节目源的地址(私网地址)转换为可与公网直接通信的源IP地址(公网地址)。
为了使本技术领域的人员更好地理解本发明方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实现网络视频点播方法的第一实施例流程图如图2所示:
步骤201:服务器接收客户端按照预先配置的公网地址发送的视频点播请求。
其中,客户端向服务器发送针对某一节目源的视频点播请求,该请求用于获取在服务器上注册的节目源地址,此时服务器将预先配置的公网地址作为节目源的地址返回客户端,客户端根据接收到的公网地址后向服务器发送点播节目源的请求。
步骤202:服务器将视频点播请求转发至节目源。
其中,服务器接收到客户端的点播节目源的请求后,将其转发到节目源,该转发的请求中包含了配置的公网地址和客户端的地址。
步骤203:服务器向客户端转发节目源发送的根据公网地址、客户端地址及节目源的地址进行二次封装后的视频数据。
其中,节目源接收到包含配置的公网地址和客户端的地址的请求后,将其视频数据先进行内层地址封装,封装的源地址为公网地址,目的地址为客户端的地址;然后对该视频数据进行外层地址封装,封装的源地址为节目源的地址,目的地址为公网地址。进一步,在进行了二次封装后的视频数据报文的IP协议字段内标识该报文的格式为IPINIP。
其中,服务器接收到二次封装的视频数据后将该视频数据的外层地址删除,并按照内层地址将该视频数据发送至该内层地址的目的地址对应的客户端。
本发明实现网络视频点播方法的第二实施例流程图如图3所示,该实施例示出了应用本发明方法实现网络视频点播的详细流程:
步骤301:在服务器上配置用于接收视频点播请求的公网地址。
本发明由于不需要在网络中的NAT设备上进行一对一的地址转换配置,因此需要在服务器上配置用于接收视频点播请求的公网地址,通过该公网地址可以实现服务器对视频点播请求和视频数据的转发。
步骤302:服务器接收客户端发送的针对某一节目源的视频点播请求。
当客户端需要点播私网中某一节目源中的视频节目时,需要获取该节目源的地址以便向该节目源请求该视频节目,因此客户端向服务器发送针对该视频节目的视频点播请求。
步骤303:服务器将公网地址作为节目源地址返回客户端。
本发明中当客户端向服务器发送视频点播请求后,服务器并不向客户端返回节目源的注册地址,而是将配置的公网地址作为节目源的地址返回客户端。
步骤304:服务器接收客户端根据该公网地址发送的视频点播该节目源的请求。
由于客户端发送视频点播请求后获取了服务器发送的公网地址,因此客户端将该公网地址看作视频节目所在的节目源的地址,根据该公网地址向服务器发送点播节目源中视频节目的请求。
步骤305:服务器将该请求转发至节目源。
服务器接收到客户端发送的点播节目源中视频节目的请求后,将该请求通过NAT设备发送到私网中的节目源。
步骤306:服务器接收节目源分别进行内层地址和外层地址封装后的视频数据。
节目源接收到点播视频节目的请求后,将对应该视频节目的视频数据首先进行内层地址封装,内层地址封装的源地址为服务器上配置的公网地址,目的地址为客户端的公网地址;然后将经过内层地址封装的视频数据进行外层地址封装,外层地址封装的源地址为节目源的地址,该地址为私网地址,目的地址为服务器上配置的公网地址。节目源按照外层地址的目的地址将经过二次封装的视频数据穿越NAT发送至服务器。
步骤307:服务器将该视频数据的外层地址删除。
由于该视频数据经过了二次封装,因此服务器在接收到视频数据后将外层地址删除,留下由内层地址封装的视频数据。
步骤308:服务器按照视频数据的内层地址将其发送至客户端。
由于内层地址的源地址为配置的公网地址,目的地址为客户端的地址,因此服务器按照内层地址的目的地址将该视频数据进一步发送至客户端。
本发明实现网络视频点播方法的第三实施例如图4所示,该实施例进一步示出了通过节目源周期性向服务器发送注册请求,判断该节目源位于何种网络,并使网络中的NAT设备维持映射关系的过程:
步骤401:在服务器上预先配置用于接收节目源的注册请求的公网地址。
本发明由于不需要为在私网中的节目源手动配置公网地址,因此预先在服务器上配置用于接收节目源的注册请求的公网地址。
步骤402:服务器接收节目源根据该公网地址周期性发送的注册请求。
位于私网中的节目源根据该配置的公网地址周期性向服务器上发送注册请求,用于维持网络中NAT设备的映射关系表,该映射关系表中的每一节目源的映射关系包括节目源的地址(私网地址)及该节目源的地址经网络地址转换后的源地址(公网地址)。
步骤403:服务器判断注册请求的源地址与节目源地址是否一致,若是,则执行步骤404;否则,执行步骤405。
步骤404:判断节目源位于公网中,保存该节目源地址,结束当前流程。
步骤405:判断节目源位于私网中,保存注册请求的源地址和该节目源地址,结束当前流程。
保存注册请求的源地址和节目源的地址,用于服务器和节目源之间通过NAT设备发送报文。
与本发明实现网络视频点播方法相对应,本发明还提供了一种实现网络视频点播的视频数据发送方法,该视频数据发送方法的实施例流程图如图5所示:
步骤501:节目源接收由服务器转发的客户端的视频点播请求。
其中,该视频点播请求中包含了服务器预先配置的公网地址和所述客户端的地址。
步骤502:将视频数据根据公网地址、客户端的地址及节目源的地址进行二次封装。
节目源首先对视频数据进行内层地址封装,该内层地址的源地址为公网地址,内层地址的目的地址为客户端的地址,然后将封装后的视频数据进行外层地址封装,外层地址的源地址为节目源的地址,外层地址的目的地址为公网地址。
步骤503:将封装后的视频数据发送至服务器。
为了详细说明上述本发明的方法实施例,下面结合一个具体应用实例进行描述,该应用实例的流程如图6所示:
步骤601:预先在视频点播服务器上配置两个公网地址IP1和IP2。
配置的两个公网地址中,其中一个公网地址用于接收节目源的注册请求,设为IP1;另一个公网地址用于接收视频点播请求,设为IP2。可以通过在服务器上配置的一块视频转发处理卡上配置上述两个公网地址,通过硬件实现转发。
步骤602:节目源1向服务器周期性发送注册请求。
由于节目源1位于私网中,而服务器位于公网中,因此节目源1向服务器周期性发送的注册请求需要经过NAT地址转换,在网络中的NAT设备上维持NAT映射关系表。
假设私网中节目源1的注册地址为10.10.10.10,经过NAT后该注册地址变换为202.1.1.2,则经过NAT设备映射后,在服务器中维护的节目源信息表如下表1所示,由于网络中包含多个节目源,每个节目源可能位于不同的网络中,因此该节目源信息表中应包含多个节目源的映射关系,在表1中示出了位于私网中的节目源1(本应用实例中的节目源)和位于公网中的节目源2:
表1
节目源标识 |
节目源地址 |
注册请求报文的源地址(NAT变换后的地址) |
节目源1 |
10.10.10.10 |
202.1.1.2 |
节目源2 |
202.1.1.100 |
NULL |
步骤603:客户端向服务器发送视频点播请求。
客户端想要获取节目源1中的视频节目,因此向客户端发送视频点播请求以获取节目源1在服务器上的注册地址。假设客户端的地址(公网地址)为IP3。
步骤604:服务器向客户端发送配置的公网地址IP2。
服务器接收到客户端对节目源1的点播请求后,根据节目源1周期性发送的注册请求,判断节目源1的地址(10.10.10.10)和发送的注册报文的源地址(202.1.1.2)不一致,则节目源1位于私网中,因此将预先配置的IP2伪装成节目源1的注册地址发送给客户端。
步骤605:客户端根据IP2发送点播节目源1的请求。
由于客户端发送视频点播请求后获取了服务器发送的IP2,因此客户端将该公网地址IP2看作视频节目所在的节目源1在服务器上的注册地址,根据该IP2发送点播节目源1中视频节目的请求。
步骤606:服务器将点播节目源1的请求转发到节目源1。
服务器接收到客户端发送的点播节目源1中视频节目的请求后,将该请求通过NAT设备发送到私网中的节目源1,在该转发的请求中还包含了IP2以及客户端的地址IP3的信息。
步骤607:节目源1对客户端请求的视频节目对应的视频数据进行二次封装。
节目源1接收到点播视频节目的请求后,将对应该视频节目的视频数据首先进行内层地址封装,内层地址封装的源地址为IP2,目的地址为IP3,封装后的视频数据报文如下表2所示:
表2
然后将经过内层地址封装的上述视频数据进行外层地址封装,外层地址封装的源地址为节目源的地址(10.10.10.10),目的地址为IP2,封装后的视频数据如下表3所示:
表3
进一步,将上述封装后的视频数据报文的IP协议字段的标识设置为“4”,该标识“4”标识对视频数据进行了IPINIP封装。
步骤608:节目源1将封装后的视频数据发送到服务器。
节目源1按照外层地址的目的地址IP2将封装后的视频数据穿越NAT发送至服务器。
步骤609:服务器将接收到的视频数据报文的外层地址删除。
服务器接收到该视频数据报文后,读取该报文的IP协议字段的标识为“4”,即该报文是经过IPINIP封装的报文,服务器将该报文的外层地址删除,得到如表2所示的仅有内层地址封装的视频数据。
步骤610:服务器按照内层地址将视频数据发送到客户端。
由于内层地址的源地址为IP2,目的地址为IP3,因此服务器按照目的地址IP3将该视频数据发送至客户端,由此实现公网中的客户端对私网中的节目源1的视频点播。
由于服务器的转发过程不需要服务器中CPU的干预,通过转发芯片即可硬件实现,降低了服务器的性能损耗。
与本发明实现网络视频点播的方法相对应,本发明还提供了一种实现网络视频点播的服务器,本发明服务器的第一实施例框图如图7所示:
该服务器包括:配置地址单元710、接收视频点播请求单元720、转发视频点播请求单元730和发送视频数据单元740。
其中,配置地址单元710用于预先配置接收视频点播请求的公网地址;接收视频点播请求单元720用于接收客户端按照所述公网地址发送的视频点播请求;转发视频点播请求单元730,用于将所述视频点播请求转发至节目源,所述请求中还包含所述公网地址和所述客户端的地址;发送视频数据单元740,用于向客户端转发节目源发送的根据所述公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。
本发明服务器的第二实施例框图如图8所示:
该服务器包括:配置地址单元810、接收注册请求单元820、判断地址单元830、执行结果单元840、接收视频点播请求单元850、转发视频点播请求单元860和发送视频数据单元870。
其中,配置地址单元810用于预先配置接收视频点播请求的公网地址和接收节目源的注册请求的公网地址;接收注册请求单元820用于接收节目源根据所述公网地址周期性发送的注册请求;判断地址单元830用于判断所述注册请求的源地址与所述节目源的地址是否一致;执行结果单元840用于当所述注册请求的源地址与所述节目源的地址一致时,保存所述节目源地址,当所述注册请求的源地址与所述节目源的地址不一致时,保存所述节目源的地址和所述注册请求的源地址;接收视频点播请求单元850用于接收客户端按照所述公网地址发送的视频点播请求;转发视频点播请求单元860用于将所述视频点播请求转发至节目源,所述请求中还包含所述公网地址和所述客户端的地址;发送视频数据单元870用于向客户端转发节目源发送的根据所述公网地址、客户端的地址及节目源的地址进行二次封装后的视频数据。
其中,接收视频点播请求单元850可以进一步包括接收初始点播请求单元,用于接收客户端发送的针对某一节目源的视频点播请求;返回公网地址单元,用于将所述公网地址作为节目源地址返回客户端;接收点播节目源请求单元,用于接收客户端根据所述公网地址发送的点播所述节目源的请求。
发送视频数据单元870可以进一步包括删除地址单元,用于接收到所述视频数据后,将封装所述视频数据的外层地址删除;转发视频数据单元,用于按照封装所述视频数据的内层地址将所述视频数据发送至客户端。
与本发明实现网络视频点播的视频数据发送方法相对应,本发明还提供了一种节目源设备,该节目源设备的实施例框图如图9所示:
该节目源设备包括:接收视频点播请求单元910、二次封装单元920和发送视频数据单元930。其中,接收视频点播请求单元910用于接收由服务器转发的客户端的视频点播请求,所述请求中包含服务器预先配置的公网地址和所述客户端的地址;二次封装单元920用于将视频数据根据所述公网地址、客户端的地址及节目源的地址进行二次封装;发送视频数据单元930用于将所述封装后的视频数据发送至服务器。
其中,二次封装单元920可以进一步包括内层地址封装单元,用于对所述视频数据进行内层地址封装,所述内层地址的源地址为所述公网地址,所述内层地址的目的地址为客户端的地址;外层地址封装单元,用于将所述封装后的视频数据进行外层地址封装,所述外层地址的源地址为节目源的地址,所述外层地址的目的地址为所述公网地址。
由以上本发明实施例的描述可知,应用本发明实现网络视频点播时,无需为在私网中的节目源配置公网地址,通过在服务器上配置专门的公网地址,并转发相应的点播请求和经过二次封装的视频数据,实现了公网中的客户端对私网中节目源的视频点播,节约了网络中的公网地址;本发明通过服务器中专门配置的公网地址,实现了支持动态的网络地址转换,服务器的转发功能通过视频转发芯片硬件实现,由于无需占用CPU资源,因此降低了服务器的性能损耗;本发明无需在NAT设备上配置公网地址到私网地址的映射关系,通过节目源的周期性注册实现了对该映射关系的维持,因此节约了大量的人工操作,实现了动态的网络视频点播,提高了视频点播的效率。。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。