CN105357465A - 一种实现视频通话的方法及视频中继服务器 - Google Patents
一种实现视频通话的方法及视频中继服务器 Download PDFInfo
- Publication number
- CN105357465A CN105357465A CN201510788456.3A CN201510788456A CN105357465A CN 105357465 A CN105357465 A CN 105357465A CN 201510788456 A CN201510788456 A CN 201510788456A CN 105357465 A CN105357465 A CN 105357465A
- Authority
- CN
- China
- Prior art keywords
- terminal
- video data
- network address
- sound
- data
- 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.)
- Pending
Links
Landscapes
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现视频通话的方法及视频中继服务器,所述方法包括:视频中继服务器在为第一终端和第二终端建立通话时,分别分配用于接收第一终端和第二终端发送的音、视频数据的端口;在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据发给第二终端;所述视频中继服务器在接收到第二终端的音、视频数据后,进行与对第一终端类似的处理。本发明既保证了视频通话数据的及时转发,同时又能实现视频的高质量录制等其他扩展功能。
Description
技术领域
本发明涉及网络技术,尤指一种实现视频通话的方法及视频中继服务器。
背景技术
由于娱乐、交流等的需要,视频通话作为一种非常接近面对面交流体验的通讯方式,它的需求正在变得越来越强烈。目前,建立基于互联网的视频通话的形式一般是借助于视频服务器。由于这种形式对于任何的网络类型都可以实现,因而成为一种重要的视频通话形式。
视频通话的视频服务器作为通话数据的载体是视频通话中的重要一环,一个高实时性、高效的视频服务器在高质量的视频通话中扮演着重要的角色。
发明内容
为了解决上述技术问题,本发明提供了一种实现视频通话的方法及视频中继服务器,能够在视频通话中保证视频通话数据的及时转发。
为了达到本发明目的,本发明提供了一种实现视频通话的方法,包括:
视频中继服务器在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
所述视频中继服务器在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
所述视频中继服务器在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
进一步地,所述分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:
为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口。
进一步地,所述记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,所述分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据;
所述记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,所述方法还包括:
所述视频中继服务器在接收到第一终端或第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述视频中继服务器从音频抖动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
进一步地,所述方法还包括:
在将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器后,音频和视频抖动缓冲处理器分别对音、视频数据进行排序,如果存在数据丢失,则进行补偿,包括通过解码器模拟数据包进行补偿或在丢失包的后续包里查找丢失包。
进一步地,一种视频中继服务器,包括:会话单元、第一转发单元和第二转发单元,其中:
所述会话单元,用于在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
所述第一转发单元,用于在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
所述第二转发单元,用于在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
进一步地,所述会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口;
所述第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,所述会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据;
所述第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,还包括录像单元,其中:
所述第一转发单元,还用于在接收到第一终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述第二转发单元,还用于在接收到第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述录像单元,用于从音频抖动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
与现有技术相比,本发明包括视频中继服务器在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;所述视频中继服务器在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;所述视频中继服务器在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。本发明既保证了视频通话数据的及时转发,同时又能实现视频的高质量录制等其他扩展功能。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明的实现视频通话的方法的流程图;
图2为本发明的视频中继服务器的架构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
如图1所示,本发明的实现视频通话的方法,包括:
步骤101:视频中继服务器在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
本发明中分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,可以是:为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口。也就是为第一终端和第二终端分别分配两个端口,其中一个端口用于接收音频数据,另一个端口用于接收视频数据。
或者,本发明中分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,也可以是:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据。也就是为第一终端和第二终端分别分配一个端口,通过该端口既接收音频数据也接收视频数据。
步骤102:视频中继服务器在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
本发明中视频中继服务器记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,可以是:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址。
本发明中视频中继服务器记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,还可以是:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址。
视频中继服务器在接收到第一终端发送的音、视频数据后,如果还没有记录第二终端发送音、视频数据的上行网络地址,可以将第一终端发送的音、视频数据丢弃;如果需要对第一终端进行录像,则将第一终端发送的音、视频数据写入抖动缓冲处理。
步骤103:视频中继服务器在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
本发明中视频中继服务器记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,可以是:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
本发明中视频中继服务器记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,还可以是:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
视频中继服务器在接收到第二终端发送的音、视频数据后,如果还没有记录第一终端发送音、视频数据的上行网络地址,可以将第二终端发送的音、视频数据丢弃;如果需要对第二终端进行录像,则将第二终端发送的音、视频数据写入抖动缓冲处理。
进一步地,本发明中视频中继服务器除了能够实现视频通话数据的及时转发外,还可以实现视频录像的功能,可以为某些重要的视频通话保留录像数据,从而为日后查询相关信息做准备。
视频中继服务器在实现视频录像功能时,在接收到第一终端或第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器中;并从抖音频动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
本发明中在将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器后,音频和视频抖动缓冲处理器分别对音、视频数据进行排,如果存在数据丢失,则进行补偿,包括通过解码器模拟数据包进行补偿或在丢失包的后续包里查找丢失包。
本发明可以在保证视频通话数据转发实时性的基础上实现高质量视频录制等扩展功能。
下面以视频中继服务器分别为第一终端和第二终端分配两个端口为例对本发明的方法进行说明。
为了第一时间把收到的音、视频数据转发给对端,当视频通话的两个终端建立通话的时候,在视频中继服务器上为这两个终端分别准备两个端口,分别用于接收终端上传上来的音频数据和视频数据。对于一对进行视频通话的终端,以下分别称之为A终端和B终端。当A终端上行音频数据到A的音频端口时,可以得知A终端的音频数据的上行网络地址,这时记下这个网络地址作为下行转发B终端的音频数据的网络地址。当A终端上行视频数据到A终端的视频端口时,可以得知A终端的视频数据的上行网络地址,这时记下这个网络地址,作为以后下行转发B终端的视频数据的网络地址。同样地,当B终端上行音频数据和视频数据到视频中继服务器的对应端口时,也分别记录下其上行网络地址,作为以后下行转发A终端的音频数据和视频数据的网络地址。当A终端和B终端都有音频数据和视频数据上行到视频中继服务器的对应端口时,数据转发的准备工作也就完成了,就可以及时地将A终端和B终端的音频数据和视频数据转发给对方了。
如果需要对A终端上行来的通话数据进行视频录制,在收到A终端上行的音频数据和视频数据后,除了转发到B终端对应的音频和视频的上行网络地址以外,还需要将A终端的音、视频数据分别送入为A终端准备的音频和视频抖动缓冲处理器,等待为A终端准备的录制线程从抖动缓冲处理器中取出音频和视频数据进行录制。
数据送入抖动缓冲处理器后会对数据的先后顺序进行排序,如果有数据丢失,在录制线程取数据时还会进行补偿,从而保证数据的顺序性和完整性,进而保证录制视频的图像和声音的连贯性和完整性,以达到高质量地完成视频录制。
本发明的线程模型可以是包含主线程和视频录制线程。
主线程为一对进行视频通话的终端分别准备好端口,等待两个终端上行数据。同时主线程也是数据I/O线程,负责接收终端上行的音频和视频数据,并进行相应的转发。同时,如果需要视频录制,还负责把音频和视频数据送入音频抖动缓冲处理器和视频抖动缓冲处理器。
视频录制线程负责从音频抖动缓冲处理器和视频抖动缓冲处理器中读取音频和视频数据,并对音频和视频数据进行时间上的对齐,丢弃过期的数据,之后再以一定的格式进行视频录制。
以下是实现本发明方法的关键代码。
主线程:
//当为A准备的音频数据接收端口收到数据时的回调函数
ATerminal->SignalInputAudioData(RTPPacketpacket,NetAddressaddr){
if(IS_NULL(ATerminal->AudioNetAddress)){
//如果没有记录过A的音频数据上行地址,则记录之
ATerminal->AudioNetAddress=addr;
}
if(!IS_NULL(BTerminal->AudioNetAddress)){
//如果已经记录了B的音频数据上行地址,则把A发来的包转发给B。
BTerminal->SendOutAudioData(packet);
}
//把A发来的音频数据包送入缓冲抖动处理器
ATerminal->SendAudioDataToJitterBuffer(packet);
}
//当为A准备的视频数据接收端口收到数据时的回调函数
ATerminal->SignalInputVideoData(RTPPacketpacket){
if(IS_NULL(ATerminal->VideoNetAddress)){
//如果没有记录过A的视频数据上行地址,则记录之
ATerminal->VideoNetAddress=addr;
}
if(!IS_NULL(BTerminal->VideoNetAddress)){
//如果已经记录了B的视频数据上行地址,则把A发来的包转发给B。
BTerminal->SendOutVideoData(packet);
}
//把A发来的视频数据包送入缓冲抖动处理器
ATerminal->SendVideoDataToJitterBuffer(packet);
}
//当为B准备的音频数据接收端口收到数据时的回调函数
BTerminal->SignalInputAudioData(RTPPacketpacket,NetAddressaddr){
if(IS_NULL(BTerminal->AudioNetAddress)){
//如果没有记录过B的音频数据上行地址,则记录之
BTerminal->AudioNetAddress=addr;
}
if(!IS_NULL(ATerminal->AudioNetAddress)){
//如果已经记录了A的音频数据上行地址,则把B发来的包转发给A。
ATerminal->SendOutAudioData(packet);
}
//把B发来的音频数据包送入缓冲抖动处理器
BTerminal->SendAudioDataToJitterBuffer(packet);
}
//当为B准备的视频数据接收端口收到数据时的回调函数
BTerminal->SignalInputVideoData(RTPPacketpacket){
if(IS_NULL(BTerminal->VideoNetAddress)){
//如果没有记录过B的视频数据上行地址,则记录之
BTerminal->VideoNetAddress=addr;
}
if(!IS_NULL(ATerminal->VideoNetAddress)){
//如果已经记录了A的视频数据上行地址,则把B发来的包转发给A。
ATerminal->SendOutVideoData(packet);
}
//把B发来的视频数据包送入缓冲抖动处理器
BTerminal->SendVideoDataToJitterBuffer(packet);
}
视频录制线程:
RTPPacketaudioPacket;
//从A的音频抖动缓冲处理器中取出音频数据
ATerminal->GetAudioDataFromJitterBuffer(&audioPacket);
//将取出的音频数据包放入时间对齐队列
ATerminal->PutAudioPacketToTimeAlignList(audioPacket);
RTPPacketvideoPacket;
//从A的视频抖动缓冲处理器中取出视频数据
ATerminal->GetVideoDataFromJitterBuffer(&videoPacket);
//将取出的视频数据包放入时间对齐队列
ATerminal->PutVideoPacketToTimeAlignList(videoPacket);
//从时间对齐队列中取出对齐后的音频和视频数据,并写入录像文件中。
ATerminal->RecordAudioAndVideo();
如图2所示,本发明还提供了一种视频中继服务器,包括:会话单元、第一转发单元和第二转发单元,其中:
会话单元,用于在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
第一转发单元,用于在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
第二转发单元,用于在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
进一步地,会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口;
第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据;
第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
进一步地,还包括录像单元,其中:
第一转发单元,还用于在接收到第一终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
第二转发单元,还用于在接收到第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
录像单元,用于从音频抖动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种实现视频通话的方法,其特征在于,包括:
视频中继服务器在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
所述视频中继服务器在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
所述视频中继服务器在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
2.根据权利要求1所述的方法,其特征在于,所述分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:
为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口。
3.根据权利要求2所述的方法,其特征在于:
所述记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
4.根据权利要求1所述的方法,其特征在于:
所述分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据;
所述记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
5.根据权利要求1~4任意之一所述的方法,其特征在于,所述方法还包括:
所述视频中继服务器在接收到第一终端或第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述视频中继服务器从音频抖动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器后,音频和视频抖动缓冲处理器分别对音、视频数据进行排序,如果存在数据丢失,则进行补偿,包括通过解码器模拟数据包进行补偿或在丢失包的后续包里查找丢失包。
7.一种视频中继服务器,其特征在于,包括:会话单元、第一转发单元和第二转发单元,其中:
所述会话单元,用于在为要进行视频通话的第一终端和第二终端建立通话时,分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口;
所述第一转发单元,用于在接收到第一终端的音、视频数据后,记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,并在已记录第二终端发送音、视频数据的上行网络地址的情况下,将第一终端发送的音、视频数据通过记录的第二终端发送音、视频数据的上行网络地址转发给第二终端;
所述第二转发单元,用于在接收到第二终端的音、视频数据后,记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,并在已记录第一终端发送音、视频数据的上行网络地址的情况下,将第二终端发送的音、视频数据通过记录的第一终端发送音、视频数据的上行网络地址发送给第一终端。
8.根据权利要求7所述的视频中继服务器,其特征在于:
所述会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分别分配接收第一终端发送的音频数据的音频数据接收端口和接收第一终端发送的视频数据的视频数据接收端口;并且,为第二终端分别分配接收第二终端发送的音频数据的音频数据接收端口和接收第二终端发送的视频数据的视频数据接收端口;
所述第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的音频数据接收端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的视频数据接收端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的音频数据接收端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的视频数据接收端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
9.根据权利要求7所述的视频中继服务器,其特征在于:
所述会话单元分别分配用于接收第一终端发送的音、视频数据的端口和用于接收第二终端发送的音、视频数据的端口,包括:为第一终端分配一端口既接收第一终端发送的音频数据又接收第一终端发送的视频数据;为第二终端分配一端口既接收第二终端发送的音频数据又接收第二终端发送的视频数据;
所述第一转发单元记录第一终端发送音、视频数据的上行网络地址,作为向第一终端转发第二终端的音、视频数据的网络地址,包括:在通过为第一终端分配的端口接收到音频数据时,记录第一终端的音频数据的上行网络地址,作为向第一终端转发第二终端的音频数据的网络地址;在通过为第一终端分配的端口接收到视频数据时,记录第一终端的视频数据的上行网络地址,作为向第一终端转发第二终端的视频数据的网络地址;
所述第二转发单元记录第二终端发送音、视频数据的上行网络地址,作为向第二终端转发第一终端的音、视频数据的网络地址,包括:在通过为第二终端分配的端口接收到音频数据时,记录第二终端的音频数据的上行网络地址,作为向第二终端转发第一终端的音频数据的网络地址;在通过为第二终端分配的端口接收到视频数据时,记录第二终端的视频数据的上行网络地址,作为向第二终端转发第一终端的视频数据的网络地址。
10.根据权利要求7~9所述的视频中继服务器,其特征在于,还包括录像单元,其中:
所述第一转发单元,还用于在接收到第一终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述第二转发单元,还用于在接收到第二终端的音、视频数据后,将接收到的音、视频数据分别放入音频抖动缓冲处理器和视频抖动缓冲处理器;
所述录像单元,用于从音频抖动缓冲处理器中取音频数据,放入时间对齐队列,并从视频抖动缓冲处理器中取视频数据,放入时间对齐队列,从时间对齐队列中取出对齐后的音频数据和视频数据,写入录像文件中,完成录像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510788456.3A CN105357465A (zh) | 2015-11-17 | 2015-11-17 | 一种实现视频通话的方法及视频中继服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510788456.3A CN105357465A (zh) | 2015-11-17 | 2015-11-17 | 一种实现视频通话的方法及视频中继服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105357465A true CN105357465A (zh) | 2016-02-24 |
Family
ID=55333315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510788456.3A Pending CN105357465A (zh) | 2015-11-17 | 2015-11-17 | 一种实现视频通话的方法及视频中继服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105357465A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106454543A (zh) * | 2016-12-06 | 2017-02-22 | 四川长虹电器股份有限公司 | 基于WebRTC的电视视频通话系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026801A (zh) * | 2007-03-14 | 2007-08-29 | 中兴通讯股份有限公司 | 通过移动终端进行文件传输的方法 |
CN101420390A (zh) * | 2008-12-18 | 2009-04-29 | 深圳市迅雷网络技术有限公司 | 互联网即时通讯数据的传输方法、装置及系统 |
CN103139209A (zh) * | 2013-02-01 | 2013-06-05 | 杭州常春藤软件科技有限公司 | 媒体码流获取方法、unisaf服务器及软交换通信系统 |
CN103139527A (zh) * | 2011-12-05 | 2013-06-05 | 中国电信股份有限公司 | 视频通信中的参数协商方法、装置及视频通信终端 |
-
2015
- 2015-11-17 CN CN201510788456.3A patent/CN105357465A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026801A (zh) * | 2007-03-14 | 2007-08-29 | 中兴通讯股份有限公司 | 通过移动终端进行文件传输的方法 |
CN101420390A (zh) * | 2008-12-18 | 2009-04-29 | 深圳市迅雷网络技术有限公司 | 互联网即时通讯数据的传输方法、装置及系统 |
CN103139527A (zh) * | 2011-12-05 | 2013-06-05 | 中国电信股份有限公司 | 视频通信中的参数协商方法、装置及视频通信终端 |
CN103139209A (zh) * | 2013-02-01 | 2013-06-05 | 杭州常春藤软件科技有限公司 | 媒体码流获取方法、unisaf服务器及软交换通信系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106454543A (zh) * | 2016-12-06 | 2017-02-22 | 四川长虹电器股份有限公司 | 基于WebRTC的电视视频通话系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101278632B1 (ko) | 인터넷 프로토콜을 사용하여 직렬 버스를 통해 데이터운반을 수행하는 방법 및 그러한 방법에 사용하기 위한장치 | |
EP2383941B1 (en) | Client terminal, method and system for downloading streaming media | |
US8655945B2 (en) | Centralized rendering of collaborative content | |
US20040218628A1 (en) | Method and apparatus for multiple media digital communication system | |
US20110208837A1 (en) | Method and system for data communications in cloud computing architecture | |
CA2173355A1 (en) | Method and apparatus for multiple media digital communication system | |
CN104363407B (zh) | 一种视频会议系统通讯方法及相应装置 | |
CN108881955A (zh) | 一种实现分布式节点设备视频同步输出的方法及系统 | |
JP2015520546A (ja) | マルチメディアビデオデータの送信、受信方法及び対応装置 | |
CN110233716A (zh) | 一种通信交互方法、装置、存储介质、终端设备及服务器 | |
JP5535498B2 (ja) | 送信装置及び伝送方法 | |
EP1124358A2 (en) | A method of synchronising the replay of audio data in a network of computers | |
US8649487B2 (en) | Video implementation method for three-party video conference | |
US8355398B2 (en) | Transporting real time video frames over an Ethernet network | |
CN105357465A (zh) | 一种实现视频通话的方法及视频中继服务器 | |
CN106791908B (zh) | 一种支持云平台采用双缓冲的实时视频流存储方法 | |
JP4938134B2 (ja) | 複数の接続インターフェース間で通信するための方法および装置 | |
Baltas et al. | Ultra low delay switching for networked music performance | |
CN116668415A (zh) | 流媒体数据处理方法及系统 | |
CN114979793A (zh) | 一种直播数据传输方法、装置、系统、设备和介质 | |
CN110602431A (zh) | 配置参数修改方法、装置 | |
JP2017536042A (ja) | メッセージ処理方法、装置、プログラム及び記録媒体 | |
CN115209163B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN110572708A (zh) | 一种高性能接收rtp复用流的方法 | |
US20240214436A1 (en) | Systems and methods for providing media communication programmable services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160224 |
|
RJ01 | Rejection of invention patent application after publication |