CN114827096B - Rtmp连接迁移方法、装置、设备及可读存储介质 - Google Patents

Rtmp连接迁移方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN114827096B
CN114827096B CN202210249246.7A CN202210249246A CN114827096B CN 114827096 B CN114827096 B CN 114827096B CN 202210249246 A CN202210249246 A CN 202210249246A CN 114827096 B CN114827096 B CN 114827096B
Authority
CN
China
Prior art keywords
rtmp
connection
message
information
file descriptor
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.)
Active
Application number
CN202210249246.7A
Other languages
English (en)
Other versions
CN114827096A (zh
Inventor
陈祥祥
庄晓川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN202210249246.7A priority Critical patent/CN114827096B/zh
Publication of CN114827096A publication Critical patent/CN114827096A/zh
Application granted granted Critical
Publication of CN114827096B publication Critical patent/CN114827096B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1086In-session procedures session scope modification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种RTMP连接迁移方法、装置、设备及可读存储介质,流媒体服务器获取第一进程上各RTMP连接的文件描述符和现场信息,将文件描述符和现场信息传递给第二进程,在第二进程上利用现场信息恢复RTMP连接,之后,在第二进程上利用RTMP连接的文件描述符收发数据。采用该种方案,通过将RTMP连接的文件描述符传递给第二进程,能够保证RTMP连接不会被断开,通过将现场信息发给第二进程并在第二进程上恢复RTMP连接,能够保证RTMP连接的无缝迁移。这样一来,无论流媒体服务器执行多少次配置更新或升级,均不影响RTMP连接收发数据,对客户端或上游服务器无感,实现提高直播质量的目的。

Description

RTMP连接迁移方法、装置、设备及可读存储介质
技术领域
本申请涉及互联网技术领域,特别涉及一种RTMP连接迁移方法、装置、设备及可读存储介质。
背景技术
Nginx服务器是一个高性能的超文本传输协议(Hyper Text Transfer Protocol,HTTP)和反向代服务器,有着高并发、性能好和占用内存少等特点。
目前,基于Nginx的流媒体服务器被广泛应用于直播技术中。直播过程中,客户端向流媒体服务器发送客户端请求,以请求与流媒体服务器建立实时消息传输协议(RealTime Messaging Protocol,RTMP)。之后,当客户端为主播端时,流媒体服务器基于RTMP连接接收来自主播端的推流数据;当客户端为观看端时,流媒体服务器基于RTMP连接向观看端推流。
当流媒体服务器升级或配置更新时,若存在长时间拉流或推流的客户端,则导致客户端连接被断开,导致直播质量差。
发明内容
本申请提供一种RTMP连接迁移方法、装置、设备及可读存储介质,通过将旧进程上的RTMP连接无缝迁移到新进程,迁移过程对客户端无感,实现提高直播质量的目的。
第一方面,本申请实施例提供一种RTMP连接迁移方法,该方法应用于流媒体服务器,所述方法包括:
获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组;
向所述第二进程传递所述文件描述符和所述现场信息;
在所述第二进程上根据所述现场信息恢复所述RTMP连接;
在所述第二进程上利用所述RTMP连接的文件描述符收发数据。
第二方面,本申请实施例提供一种RTMP连接装置,所述装置集成在流媒体服务器上,所述装置包括:
获取模块,用于获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组;
传递模块,用于向所述第二进程传递所述文件描述符和所述现场信息;
处理模块,用于在所述第二进程上根据所述现场信息恢复所述RTMP连接;
收发模块,用于在所述第二进程上利用所述RTMP连接的文件描述符收发数据。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第五方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
本申请实施例提供的RTMP连接迁移方法、装置、设备及可读存储介质,流媒体服务器获取第一进程上各RTMP连接的文件描述符和现场信息,将文件描述符和现场信息传递给第二进程,在第二进程上利用现场信息恢复RTMP连接,之后,在第二进程上利用RTMP连接的文件描述符收发数据。采用该种方案,通过将RTMP连接的文件描述符传递给第二进程,能够保证RTMP连接不会被断开,通过将现场信息发给第二进程并在第二进程上恢复RTMP连接,能够保证RTMP连接的无缝迁移。这样一来,无论流媒体服务器执行多少次配置更新或升级,均不影响RTMP连接收发数据,对客户端或上游服务器无感,实现提高直播质量的目的。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的RTMP连接迁移方法适用的网络架构示意图;
图2是本申请实施例提供的RTMP连接迁移方法的流程图;
图3是本申请实施例提供的RTMP连接迁移方法中确定迁移时机的流程图;
图4是本申请实施例提供的RTMP连接迁移的另一个流程图;
图5是本申请实施例提供的RTMP连接的迁移方法中RTMP连接迁移的示意图;
图6为本申请实施例提供的一种RTMP连接迁移装置的示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
随着互联网技术的迅速发展,网络直播越来越普及,实时消息传输协议(RealTime Messaging Protocol,RTMP)作为一种流媒体传输协议,因其低延迟、开源等优点,已在当前直播界中被广泛使用。于此同时,基于Nginx的流媒体服务器具有优秀的性能,比如平滑重启、配置更新等,被广泛应用于直播场景。
然而,当流媒体服务器配置更新或升级时,旧进程在退出时间到达时退出,新进程开始工作。若存在长时间拉流或推流的客户端,则导致客户端连接被断开。
例如,实时视频监控场景中,客户端包括摄像头和监控端,摄像头相当于主播端,监控端为观看端。由于是实时监控,则主播端持续推流,观看端持续拉流。假设预先配置退出时间为配置更新或升级后的4小时,则自配置更新或升级开始起4小时后,旧进程退出。这时候,旧进程上的客户端连接断开,无法进行实时视频监控。
再如,足球赛事直播场景中,假设赛事是4小时。预先配置退出时间为配置更新或升级后的1小时,则自配置更新或升级开始起1小时后,旧进程退出。这时候,旧进程上的客户端连接断开,无法进行赛事直播。
由此可见:当直播场景中采用基于Nginx的流媒体服务器时,存在一些不足。基于此,本申请实施例提供一种RTMP连接迁移方法、装置、设备及可读存储介质,通过将旧进程上的RTMP连接无缝迁移到新进程,迁移过程对客户端无感,实现提高直播质量的目的。
本案中的相关术语解释如下:
配置更新:指动态加载配置、更新程序中的参数,但是不改变整个程序,未对程序进行版本升级。配置更新也称之为热更新、热重载、重载配置等。
升级:对程序进程版本升级,即用升级后的程序替换升级前的程序。
第一进程组、第一进程、第二进程组、第二进程:
流媒体服务器12启动后,创建主进程,由主进程创建一组工作进程,主进程负责管理工作进程的运行情况。这组进程称之为第一进程组或旧进程组。后续因为各种原因重新创建的进程组称之为第二进程组或新进程组。
例如,当流媒体服务器12配置更新时,主进程重新创建一组工作进程。以下为清楚起见,将配置更新之前创建的进程组称之为第一进程组或旧进程组,第一进程组中的进程称之为第一进程,将配置更新时创建的进程组称之为第二进程组或新进程组。
再如,当流媒体服务器12升级时,创建新的主进程,由新的主进程创建一组工作进程。以下为清楚起见,将升级之前创建的进程组称之为第一进程组或旧进程组,第一进程组中的进程称之为第一进程,将升级时由新的主进程创建的进程组称之为第二进程组或新进程组。
图1是本申请实施例提供的RTMP连接迁移方法适用的网络架构示意图。请参照图1,该网络架构包括终端设备11、流媒体服务器12、上游服务器13。
终端设备11可以是主播端的终端设备,也可以是观看端的终端设备,包括但不限于安装有安卓操作系统、微软操作系统、塞班操作系统、Linux操作系统或苹果iOS操作系统的手机、平板电脑、个人电脑、电子书阅读器、膝上型便携电脑、台式计算机等。
流媒体服务器12可以是硬件也可以是软件。当流媒体服务器12为硬件时,该流媒体服务器12为单个服务器或多个服务器组成的分布式服务器集群。当流媒体服务器12为软件时,可以为多个软件模块或单个软件模块等,本申请实施例并不限制。流媒体服务器12为基于NGINX的服务器,包括但不限于内容分发网络(Content Delivery Network,CDN)中的边缘节点等。
上游服务器13也可以是硬件或是软件,上游服务器13包括但不限于CDN网络中的中心节点等。
图1中,箭头表示媒体数据流的方向。
请参照图1,一种场景中,流媒体服务器12配置更新或升级时,若上游服务器13没有问题,流媒体服务器12能向上游服务器13推流,则待迁移的RTMP连接,即第一进程上的RTMP连接包括终端设备11与流媒体服务器12之间的RTMP连接(第一连接),以及流媒体服务器12与上游服务器13之间的连接(第二连接)。流媒体服务器12要将这两种RTMP连接从第一进程上迁移到第二进程上。第一连接的文件描述符称之为第一文件描述符,第二连接的文件描述符称之为第二文件描述符,流媒体服务器需要将第一文件描述符和第二文件描述符从第一进程传递给第二进程,将第一连接的第一现场信息和第二连接的第二现场信息从第一进程传递给第二进程。
另一种场景中,流媒体服务器12配置更新或升级时,若上游服务器13有问题,流媒体服务器12无法向上游服务器13推流,相当于流媒体服务器12和上游服务器13之间的RTMP连接已断开。这时候,待迁移的RTMP连接,即第一进程上的RTMP连接包括终端设备11与流媒体服务器12之间的RTMP连接。流媒体服务器12仅将该RTMP连接从第一进程上迁移到第二进程上。流媒体服务器需要将第一文件描述符从第一进程传递给第二进程,将第一连接的第一现场信息从第一进程传递给第二进程。另外,在第二进程上重试另一台上游服务器13,并在第二进程上建立与另一台上游服务器13之间的RTMP连接。
采用该种方案,根据不同的场景确定需要迁移的RTMP连接并迁移,准确率高、速度快。
下面,基于图1所示架构,对本申请实施例所述的RTMP连接迁移方法进行详细说明。示例性的,请参照图2。
图2是本申请实施例提供的RTMP连接迁移方法的流程图。本实施例是从流媒体服务器的角度进程说明。本实施例包括:
201、获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接。
其中,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组。
示例性的,当第一进程准备退出时,需要将第一进程上的所有RTMP连接无缝迁移到第二进程上,使得RTMP连接在第二进程上提供服务。正常情况下,客户端(可以是主播端,也可以是观看端)发起一个RTMP请求,以请求建立RTMP连接,则RTMP连接包括客户端与流媒体服务器之间的连接,以及流媒体服务器和上游服务器之间的连接,也就是说,一个RTMP请求对应两个RTMP连接,这两个RTMP连接都要迁移到第二进程上。另一种情况下,当上游服务器有问题时,RTMP连接仅包括客户端与流媒体服务器之间的连接,仅需要将该RTMP连接迁移到第二进程上,之后,创建流媒体服务器和上游服务器之间的RTMP连接。
本申请实施例中,流媒体服务器为linux系统,linux系统一切皆文件。由于同时可能存在多个主播端和多个观看端,因此,一个第一进程上可能存在多个RTMP连接。比如,第一进程组包含7个第一进程,每个第一进程上有200个RTMP连接,则一共需要迁移1400个RTMP连接。
每个RTMP文件具有对应的文件描述符(file descriptor,fd)和现场信息,fd用于收发数据,现场信息用于恢复RTMP连接。
202、向所述第二进程传递所述文件描述符和所述现场信息。
流媒体服务器获取到第一进程上的各个RTMP连接的文件描述符和现场信息后,通过进程间传递,将各RTMP连接的文件描述符和现场信息传递给第二进程。
本申请实施例中,配置更新或升级时,master进程创建第二进程组,针对一个RTMP连接,流媒体服务器的核心根据负载均衡算法,从第二进程组中确定出负载较小的第二进程,并将该RTMP连接的文件描述符和现场信息传递给负载较小的第二进程。
203、在所述第二进程上根据所述现场信息恢复所述RTMP连接。
基于RTMP协议的媒体流传输过程中,发送端首先把媒体数据封装成消息(message),该消息也称之为RTMP消息。然后,把消息分割成消息块(chunk),最后将分割后的消息块通过传输控制协议(Transmission Control Protocol,TCP)发送出去。接收端在通过TCP协议收到数据后,首先把chunk重新组合成消息,然后通过对消息进行解封装处理就可以恢复出媒体数据。一个message可以分成1个或多个chunk。属于同一个message的chunk具有相同的消息块的流标识(chunk stream id)。其中,推流过程中,发送端为主播端,接收端为流媒体服务器;或者,发送端为流媒体服务器,接收端为上游服务器。拉流过程中,发送端为流媒体服务器,接收端为观看端;或者,发送端为上游服务器,接收端为流媒体服务器。
配置更新或升级之前,第一进程上的RTMP连接具有相应的现场信息,该现场信息包括但不限于chunk信息、当前已接收完但还没处理的数据、待发送的数据、用于重试上游服务器的信息等。为了使得RTMP连接做到无缝迁移,需要在第二进程上根据现场信息恢复现场,从而在第二进程上得到和第一进程上相同的RTMP连接。
204、在所述第二进程上利用所述RTMP连接的文件描述符收发数据。
在第二进程上恢复出RTMP连接后,就可以在第二进程上利用RTMP连接的文件描述符收发数据。
本申请实施例中,由于一个第一进程上可能有多个RTMP连接,因此,对每个RTMP连接执行上述步骤201-204,从而将所有的RTMP连接迁移至第二进程。之后,第一进程退出。
本申请实施例提供的RTMP连接迁移方法,流媒体服务器获取第一进程上各RTMP连接的文件描述符和现场信息,将文件描述符和现场信息传递给第二进程,在第二进程上利用现场信息恢复RTMP连接,之后,在第二进程上利用RTMP连接的文件描述符收发数据。采用该种方案,通过将RTMP连接的文件描述符传递给第二进程,能够保证RTMP连接不会被断开,通过将现场信息发给第二进程并在第二进程上恢复RTMP连接,能够保证RTMP连接的无缝迁移。这样一来,无论流媒体服务器执行多少次配置更新或升级,均不影响RTMP连接收发数据,对客户端或上游服务器无感,实现提高直播质量的目的。
可选的,上述实施例中,将文件描述符通过进程间传递,传递给第二进程,能够保证流媒体服务器配置更新或升级时,RTMP连接不会断。同时,为了保证RTMP连接能做到无缝迁移,一方面,需要将现场信息传递给第二进程,另一方面,需要设置好迁移时机。下面,对如何确定迁移时机进行详细说明。示例性的,请参照图3。
图3是本申请实施例提供的RTMP连接迁移方法中确定迁移时机的流程图。本实施例包括:
301、当所述第一进程的退出时间到达时,确定所述第一进程当前正在组装的RTMP消息是否已组装完毕,若当前正在组装的RTMP消息未组装完毕,则执行步骤302;若当前正在组装的RTMP消息组装完毕,则执行步骤304。
基于RTMP协议的流媒体数据传输方法中,最基本的数据单元是RTMP消息。但是,收发数据时并不是以RTMP消息为单位的,而是把RTMP消息拆分成消息块(Chunk)发送,一个Chunk发送完成之后才能开始发送下一个Chunk。每个Chunk中带有消息块的流标识(ChunkStream ID),代表该chunk属于哪个RTMP消息。接收端按照Chunk Stream ID来将chunk组装成RTMP消息。流媒体服务器能够同时接收多个chunk。
假设预先配置第一进程自配置更新或升级起,1小时后退出。当第一进程的退出时间到达时,流媒体服务器确定第一进程当前正在组装的RTMP消息是否已组装完毕。例如,一个RTMP消息包含消息首部(mes header)和消息体(mes body),其中,消息首部包含消息类型(Message Type)、负载的长度(Payload length)、时间戳(Timestamp)、消息流ID(StreamID)。消息体包含了该消息的真实数据。
一个消息块(chunk)包含消息块首部(chunk header)和数据块(chunk data)。数据块的大小称之为chunk size。当RTMP消息中消息体的长度大于chunk size时,发送端将一个RTMP消息的消息体分割成大小固定的数据块,默认是128字节,最后一个数据块可以小于该固定长度。之后,在首部加上消息块首部(Chunk Header),就组成了相应的消息块。
以一个RTMP消息中消息体的长度为307、chunk size为128为例,发送端根据该RTMP消息得到3个消息块,其中两个消息块中数据块的大小为128,最后一个消息块中数据块的大小为51。推流过程中,发送端为主播端;拉流过程中,发送端为上游服务器。
流媒体服务器接收各个chunk,并组装RTMP消息。当第一进程的退出时间到达时,流媒体服务器判断当前正在组装的RTMP消息是否组装完毕,即第一进程上的RTMP连接已接收的第一消息块中,除当前正在组装的RTMP消息对应的第二消息块外,是否还存在剩余的第三消息块。继续沿用上面的例子,当前正在组装的RTMP消息的消息体的长度为307,对应三个第二消息块,其中两个第二消息块的中数据块的大小为128,还有一个第二消息块中数据块的大小为51。
若流媒体服务器仅接收到的第一消息块中仅包含部分第二消息块,即流媒体服务器并未接收到所有的第二消息,说明当前正在组装的RTMP消息未组装完毕,则继续接收chunk,直到接收到上述的3个第二消息块并组装出RTMP。之后,获取RTMP连接的文件描述符和现场现象。也就是说,第一进程的退出时间到达时,若当前正在组装的RTMP消息未组装完毕,则第一进程不会退出,RTMP连接继续在第一进程上提供服务,直到当前正在组装的RTMP消息组装完毕,并将这个时间点作为迁移时机,开始获取第一进程上的RTMP连接的文件描述符和现场信息以对RTMP连接进行迁移。
302、控制第一进程上的RTMP连接继续接收消息块以组装RTMP消息。
303、当当前正在组装的RTMP消息组装完毕时,获取第一进程上的RTMP连接的文件描述符和现场信息。
304、在第一进程的退出时间到达时,获取第一进程上的RTMP连接的文件描述符和现场信息。
当第一进程的退出时间到达时,若流媒体服务器当前正在组装的RTMP消息以组装完毕,则在第一进程的退出时间到达时,开始对RTMP连接进行迁移。也就是说,RTMP连接的迁移时机,就是第一进程的退出时间到达时。同时,第一进程退出。
采用该种方案,第一进程的退出时间到达时,根据当前正在组装的RTMP消息是否已组装完毕,来确定RTMP的迁移时间,确保对RTMP连接做到无缝迁移,实现提高直播质量的目的。
本申请实施例中,一个RTMP连接涉及两个方向:接收方向和发送方向。推流中,RTMP连接的接收方向指流媒体服务器从主播端接收流媒体数据;拉流中,RTMP连接的接收方向指流媒体服务器从上游服务器接收流媒体数据。
推流中,RTMP连接的发送方向指流媒体服务器向上游服务器发送流媒体数据。拉流中,RTMP连接的发送方向指流媒体服务器向观看端发送流媒体数据。
针对接收方向而言,当前正在组装的RTMP消息组装完毕时,第一进程上的RTMP连接接收的第一消息块中,除了上述当前正在组装的RTMP消息对应的消息块外,可能还存在其他剩余的消息块(也称之为第三消息块)。这时候,需要将第三消息块一并迁移到第二进程,才能确保RTMP连接在接收方向上无缝迁移。
因此,针对接收方向,流媒体确定现场信息时,确定第一进程上的RTMP连接接收的第一消息块(chunk)中,除了上述当前正在组装的RTMP消息对应的第二消息块外,是否还存在第三消息块。当存在第三消息块时,确定所述现场信息包含第三消息块。
示例性的,发送端发送RTMP消息时,将该RTMP消息分割成3个消息块。当第一进程的退出时间到达时,第一进程上的RTMP连接接收到的第一消息块中,仅存在这3个消息块中的2个消息块(即第二消息块),说明当前正在组装的RTMP消息未组装完毕。这时候,流媒体服务器继续通过第一进程上的RTMP消息接收消息块,直到RTMP消息组装完毕。这段时间内,第一进程上的RTMP连接还接收到其他的消息块,则这些消息块和RTMP消息对应的第二消息块之外的其他消息块称之为第三消息块。
这种情况下,为了保证RTMP连接的无缝迁移,需要将第三消息块传递给第二进程。也就是说,现场信息包含第三消息块。
采用该种方案,现场信息包含第三消息块,即第一进程上的RTMP连接已接收但未处理的消息块,确保RTMP连接的无缝迁移,实现提高直播质量的目的。
可选的,上述实施例中,当现场信息包含第三消息块时,将RTMP连接从第一进程迁移到第二进程的过程中,这些第三消息块也一并迁移到第二进程上。之后,RTMP连接在第二进程上继续接收消息块(在第二进程上接收到的消息块称之为第四消息块),流媒体服务器组装迁移过来的第三消息块和第四消息块,从而得到完整的RTMP消息。
采用该种方案,确保RTMP连接的无缝迁移,实现提高直播质量的目的。
针对发送方向而言,流媒体服务器将流媒体数据放到第一进程的缓存中,并发送出去。倘若第一进程的退出时间到达时,缓存中还存在待发送数据,则需要将这些待发送数据也迁移到第二进程的缓存中,由RTMP连接在第二进程上发送出去,才能确保RTMP连接在发送方向上做到无缝迁移。
因此,针对发送方向,第一进程的退出时间到达时,流媒体服务器确定第一进程的缓存中,是否存在所述第一进程上的RTMP连接的待发送数据。当缓存中存在待发送数据时,确定所述现场信息包含所述待发送数据,将待发送数据也迁移到第二进程的缓存中。
采用该种方案,确保RTMP连接在发送方向上能够做到无缝迁移,实现提高直播质量的目的。
可选的,上述实施中,当所述现场信息包含所述待发送数据时,组装待发送数据以得到第五消息块。之后,通过所述第二进程上的RTMP连接的文件描述符发送该第五消息块。
示例性的,流媒体服务器将已放到第一进程的缓存中等待第一进程上的RTMP连接发送的数据,即待发送数据也迁移到第二进程上,在第二进程上组装待发送数据以得到第五消息块,并通过第二进程上的RTMP连接的文件描述符发送出去。例如,推流时,由流媒体服务器发送给上游服务器。
可选的,上述实施例中,流媒体服务器向所述第二进程传递所述文件描述符和所述现场信息的过程中,首先,利用主进程创建域套接字(unix domain socket),将第一进程通过所述域套接字连接到所述第二进程。之后,通过所述域套接字向所述第二进程传递所述文件描述符和所述现场信息。
示例性的,流媒体服务器配置更新时,继续用创建了第一进程组的主进程创建第二进程组,并创建域套接字,第二进程组中的各第二进程继承监听该域套接字。流媒体服务器升级时,用一个新的主进程创建第二进程组,并创建域套接字,第二进程组中的各第二进程继承监听该域套接字。
为了创建域套接字,流媒体服务器上新增一个迁移模块(ngx_rtmp_transfer_module),在该模块的配置(postconfiguration)回调中设置域套接字,并设置好处理域套接字的回调函数以及接收和发送函数,从而创建出域套接字。
当第一进程的退出时间到达时,第一进程将其上所有RTMP连接的关闭(close)标志设置为1,表示这些RTMP连接需要迁移。然后,流媒体服务器确定RTMP迁移的时机,到达该时机时,回调所有RTMP连接的读事件处理函数,在读事件处理函数内部进行RTMP连接迁移相关信息的传递。
文件描述符的传递过程中,流媒体服务器将第一进程通过域套接字连接到第二进程上,第二进程是流媒体服务器的内核根据负载均衡原理从第二进程组中确定出的。如果上游服务器没有问题,则需要传递两个文件描述符。若上游服务器有问题,则仅传递客户端与流媒体服务器之间的RTMP连接的文件描述符。
流媒体服务器在第一进程中设置域套接字的struct msghdr和struct cmsghdr对应的字段值,在内核重新复制出待传递的文件描述符,之后通过第一进程的发送函数(sendmsg)发送文件描述符,第二进程通过接收函数(recvmsg)接收文件描述符。文件描述符传递过去之后,复制之前的文件描述符就可以按照原有的流程关闭了。
每个RTMP连接还要对应的现场信息,该现场信息包括发送方向的chunk信息、接收方向的chunk信息、待发送数据、第三消息块、用于重试上游服务器的信息、以及RTMP协议规定的其他信息,如tcUrl、app、流名、流名参数、swfUrl、pageUrl、in_bytes、in_last_ack等,该些现场信息采用与传递文件描述符相同的域套接字从第一进程传递到第二进程,由第二进程做现场恢复。
采用该种方案,通过域套接字将文件描述符和现场信息传递给第二进程,保证第一进程退出时第一进程上的RTMP连接不会断开,实现提高直播质量的目的。
图4是本申请实施例提供的RTMP连接迁移的另一个流程图。本实施例包括:
401、流媒体服务器的主进程创建第一进程组。
第一进程组包括多个第一进程。第一进程组创建后,客户端发起RTMP请求以请求建立RTMP连接,一个第一进程上有一个或多个RTMP连接。
402、流媒体服务器配置更新或升级,创建第二进程组和域套接字。
流媒体服务器配置更新时,利用创建了第一进程组的主进程创建第二进程组。流媒体服务器升级时,利用新的主进程创建第二进程组。
流媒体服务器在主进程上创建域套接字,各个第二进程继承监听域套接字。创建域套接字时,在流媒体服务器上新增一个迁移模块(ngx_rtmp_transfer_module),在该模块的配置(postconfiguration)回调中设置域套接字,并设置好处理域套接字的回调函数以及接收和发送函数,从而创建出域套接字。
403、第一进程到达退出时间时,流媒体服务器确定是否到达RTMP连接的迁移时机,若未到达RTMP连接的迁移时机,则执行步骤404;若到达RTMP连接的迁移时机,则执行步骤405。
示例性的,第一进程到达退出时间时,流媒体服务器判断当前正在组装的RTMP消息是否组装完毕,若未组装完毕,则执行步骤404。其中,当前正在组装的消息块组装完毕是指:第一进程上的RTMP连接已接收到的第一消息块中,存在当前正在组装的RTMP消息的所有第二消息块。若第一消息块中仅有部分第二消息块,则表示当前正在组装的RTMP消息未组装完毕。若第一消息块中包含全部第二消息块,则表示当前正在组装的RTMP消息已组装完毕。
404、第一进程不退出,第一进程上的RTMP连接继续接收第二消息块,直到当前正在组装的RTMP消息组装完整,则确定到达RTMP连接的迁移时机。
405、获取第一进程上的RTMP连接的文件描述符和现场信息。
文件描述符用于收发数据,现场信息包括但不限于:
a、发送方向的chunk信息、接收方向的chunk信息。
其中,发送方向的chunk信息包括:发送方向的chunk大小(chunk size)、当前发送时间戳、发送方向的消息块流的标识(chunk stream id)等。
接收方向的chunk信息包括:接收方向的chunk大小(chunk size)、当前接收时间戳、接收方向的消息块流的标识(chunk stream id)等。
b、剩余消息块。
剩余消息块也称之为第三消息块,指RTMP连接已接收完但还未处理的消息块。站在流媒体服务器的角度,对于推流,第三消息块是从客户端接收到的、不属于当前正在组装的RTMP消息的消息块,对于拉流,第三消息块是从上游服务器接收到的、不属于当前正在组装的RTMP消息的消息块。
c、第一进程的缓存中的待发送数据。
待发送数据指已经放到缓存中但还未发送的数据。站在流媒体服务器的角度,对于推流,待发送数据是待发送给上游服务器的数据,对于拉流,待发送数据是待发送给客户端的数据。
d、高级视频编码(Advanced Video Coding,AVC)头、高级音频编码(AdvancedAudio Coding,AAC)头、元数据(metadata)等。
若RTMP连接用于从主播端向流媒体服务器推流,则需要迁移AVC头、AAC头和metadata,即现场信息包含AVC头、AAC头和metadata。
AVC头、AAC头和metadata用于流媒体服务器重试上游服务器。即上游服务器故障时,仅需要迁移客户端和流媒体服务器之间的RTMP连接。迁移之后,流媒体服务器根据AVC头、AAC头等尝试连接到其他上游服务器。
e、tcUrl、app、流名、流名参数、swfUrl、pageUrl。
这些信息是RTMP协议规定的信息,拉流或推流均需要传递。
f、ack信息。
ack信息包括但不限于in_bytes、in_last_ack等,用于发送ack给客户端,需要传递给第二进程做无缝对接。
g、play,标识是否是拉流,只有拉流时现场信息才包含该标识,用于区分是拉流还是推流。
406、将现场信息进行编码以得到编码信息。
示例性的,本申请实施例中,发送端和接收端约定好编码、解码方式,编码信息可以是纯文本、二进制等。例如,现场信息大部分是二进制信息,为了便于后续扩展RTMP迁移传递的信息,使得现场信息的接收和发送更加灵活,本申请实施例采用JSON格式传递上述的现场信息。
由于JSON格式只支持纯文本信息,因此,获取到现场信息后,流媒体服务器使用base64等对二进制的现场信息进行编码,从而得到纯文本。纯文本例如为:{"avc_header":"xxx","aac_header":"xxx","meta":"xxx"}。
407、根据所述编码信息、验证字段和长度字段生成目标信息,通过域套接字连接第一进程和第二进程以传递文件描述符和目标信息。
其中,所述验证字段用于指示所述目标信息是否包含所述现场信息,所述长度字段用于指示所述目标信息的长度。
示例性的,由于使用的是流式传输,第二进程不知道什么时候结束。因此,在目标信息中带上长度字段,例如4个字节,供第二进程确定什么时候结束接收。同时,目标信息包含验证字段,供第二进程确定是否为RTMP连接迁移的相关信息。长度字段、标识字段和编码信息最终的传递格式为:长度字段+标识字段+编码信息,即依次传递长度字段、标识字段和编码信息。
第二进程接收到第一包后,根据最开始的4个字节的内容,得到需要接收的长度,即目标信息的长度。接着,继续根据读事件函数接收后续的信息。当接收的总长度等于目标信息的长度时,结束接收。之后,确定目标信息中的标识字段是否为约定值。比如,预先约定一个字符串“rtmp_transfer”,当一个目标信息中含rtmp_transfer时,表示该目标信息用于RTMP连接的迁移。之后,第二进程解析编码信息得到现场信息。采用该种方案,通过携带长度字段和标志字段,便于第二进程确定出现场信息并恢复RTMP连接的现场。
408、在所述第二进程上根据所述现场信息恢复所述RTMP连接。
JSON格式的编码信息解析成功得到现场信息后,流媒体服务器在第二进程上根据现场信息恢复RTMP连接。恢复过程中,流媒体服务器根据解析出的现场信息中的key取对应的值(value)做现场恢复。继续沿用上述的例子:
key=avc_header,value=xxx;
key=aac_header,value=xxx;
key=meta,value=xxx。
流媒体服务器根据RTMP连接的文件描述符创建对应的RTMP会话,使用getsockname和getpeername两个函数,将文件描述符作为参数从而获取RTMP连接两端的地址信息。根据现场信息对RTMP连接的恢复包括如下内容:
a、根据发送方向的chunk信息和接收方向的chunk信息设置RTMP会话。
示例性的,流媒体服务器从现场信息中获取接收方向的chunk信息和发送方向的chunk信息,包括chunk大小、时间戳和chunk stream id,将该些信息设置RTMP会话,以便可以继续在第二进程上通过文件描述符接收和发送数据,且使得解析chunk不会异常。
b、将剩余消息块存放到第二进程的缓存中。
示例性的,流媒体服务器从现场信息中获取剩余消息块(即第三消息块),即第一进程上的RTMP连接已接收但流媒体服务器还未处理的消息块,根据接收方向的chunk信息进行组装并放到第二进程的缓存上,第二进程上的RTMP连接后续接收其他消息块(即第四消息块)后,若该第四消息块与第三消息块属于同一个RTMP消息,则组装成完整的RTMP消息。
c、将待发送数据利用第二进程上的RTMP连接发送出去。
示例性的,流媒体服务器从现场信息中获取待发送数据,即第一进程上的RTMP连接已放到缓存中但还未发送出去的数据,根据发送方向的chunk信息组装得到第五消息块后,利用第二进程上的RTMP连接的文件描述符将第五消息块发送出去。
d、在第二进程上保存AVC头、AAC头和元数据。
示例性的,流媒体服务器将现场信息中的AVC头、AAC头和元数据保存起来,以便后续倘若上游服务器故障,需要重试和其他服务器建立连接时,基于AVC头、AAC头和元数据等重试并连接到其他上游服务器。
e、将现场信息中的其他信息设置到第二进程上的RTMP会话中。
示例性的,其他信息包括tcUrl、app、流名、流名参数、swfUrl、pageUrl等。
f、将ack信息设置到第二进程上的RTMP会话中。
示例性的,流媒体服务器在第二进程中设置ack信息,便于后续可以继续发送ack给客户端,且取值正确,统计值累加。该功能主要是为了接收了客户端多少字节时发送一个ACK,主要用于推流场景。
409、在所述第二进程上利用所述RTMP连接的文件描述符收发数据。
示例性的,设置好所有RTMP连接的现场信息后,就恢复出RTMP连接。接下来,就可以利用第二进程上的RTMP连接的文件描述符收发数据了。
图5是本申请实施例提供的RTMP连接的迁移方法中RTMP连接迁移的示意图。请参照图5,客户端和流媒体服务器之间连接RTMP连接,流媒体服务器和上游服务器之间建立RTMP连接。迁移之前,RTMP在第一进程上提供服务。流媒体服务器配置更新或升级时,当第一进程即将退出时,将第一进程组上的所有RTMP连接迁移至第二进程组中的第二进程,实现无缝迁移。迁移后,第一进程退出。RTMP连接不受影响,能正常提供服务。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6为本申请实施例提供的一种RTMP连接迁移装置的示意图。该RTMP连接迁移装置600包括:获取模块61、传递模块62、处理模块63和收发模块64。
获取模块61,用于获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组;
传递模块62,用于向所述第二进程传递所述文件描述符和所述现场信息;
处理模块63,用于在所述第二进程上根据所述现场信息恢复所述RTMP连接;
收发模块64,用于在所述第二进程上利用所述RTMP连接的文件描述符收发数据。
一种可行的实现方式中,所述获取模块61,用于当所述第一进程的退出时间到达时,确定所述第一进程当前正在组装的RTMP消息是否已组装完毕;当所述当前正在组装的RTMP消息未组装完毕时,控制所述第一进程继续组装所述RTMP消息;当所述当前正在组装的RTMP消息组装完毕时,获取所述第一进程上的RTMP连接的文件描述符和现场信息。
一种可行的实现方式中,所述处理模块63,还用于确定所述第一进程上的RTMP连接已接收的第一消息块中,除所述当前正在组装的RTMP消息对应的第二消息块外,是否还存在剩余的第三消息块;当存在所述第三消息块时,确定所述现场信息包含所述第三消息块。
一种可行的实现方式中,所述处理模块63在所述第二进程上根据所述现场信息恢复所述RTMP连接之后,还用当所述现场信息包含所述第三消息块时,组装所述第三消息块以及迁移到所述第二进程上的RTMP连接接收到的第四消息块,以得到完整的RTMP消息。
一种可行的实现方式中,所述处理模块63,还用于确定所述第一进程的缓存中,是否存在所述第一进程上的RTMP连接的待发送数据;当存在所述待发送数据时,确定所述现场信息包含所述待发送数据。
一种可行的实现方式中,所述处理模块63,用于当所述现场信息包含所述待发送数据时,组装所述待发送数据以得到第五消息块;
所述收发模块64,用于通过所述第二进程上的RTMP连接的文件描述符发送所述第五消息块。
一种可行的实现方式中,所述传递模块62,用于创建域套接字,将所述第一进程通过所述域套接字连接到所述第二进程,通过所述域套接字向所述第二进程传递所述文件描述符和所述现场信息。
一种可行的实现方式中,所述传递模块62,用于对所述现场信息编码,以得到编码信息,通过所述域套接字向所述第二进程传递所述文件描述符和所述编码信息。
一种可行的实现方式中,所述传递模块62,用于根据所述编码信息、验证字段和长度字段生成目标信息,所述验证字段用于指示所述目标信息是否包含所述现场信息,所述长度字段用于指示所述目标信息的长度;利用所述第一进程通过域套接字向所述第二进程传递所述目标信息和所述文件描述符。
一种可行的实现方式中,所述RTMP连接仅包括客户端和所述流媒体服务器之间的第一连接,所述文件描述符包括所述第一连接的第一文件描述符;或者,所述RTMP连接包括客户端和所述流媒体服务器之间的第一连接,以及所述流媒体服务器和上游服务器之间的第二连接,所述文件描述符包括所述第一连接的第一文件描述符和所述第二连接的第二文件描述符。
一种可行的实现方式中,所述第一进程组是所述流媒体服务器配置更新或升级之前创建的进程,所述第二进程组是所述流媒体服务器配置更新或升级之后创建的进程。
本申请实施例提供的RTMP连接迁移装置,可以执行上述实施例中流媒体服务器的动作,其实现原理和技术效果类似,在此不再赘述。
图7为本申请实施例提供的一种电子设备的结构示意图。如图7所示,该电子设备700例如为上述的流媒体服务器,该电子设备700包括:
处理器71和存储器72;
所述存储器72存储计算机指令;
所述处理器71执行所述存储器72存储的计算机指令,使得所述处理器71执行如上流媒体服务器实施的RTMP连接迁移方法。
处理器71的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
可选地,该电子设备700还包括通信部件73。其中,处理器71、存储器72以及通信部件73可以通过总线74连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上流媒体服务器实施的RTMP连接迁移方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上流媒体服务器实施的RTMP连接迁移方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (14)

1.一种RTMP连接迁移方法,其特征在于,应用于流媒体服务器,所述方法包括:
获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组;
向所述第二进程传递所述文件描述符和所述现场信息;
在所述第二进程上根据所述现场信息恢复所述RTMP连接;
在所述第二进程上利用所述RTMP连接的文件描述符收发数据;
所述现场信息包括剩余的消息块。
2.根据权利要求1所述的方法,其特征在于,所述获取第一进程上的RTMP连接的文件描述符和现场信息,包括:
当所述第一进程的退出时间到达时,确定所述第一进程当前正在组装的RTMP消息是否已组装完毕;
当所述当前正在组装的RTMP消息未组装完毕时,控制所述第一进程继续组装所述RTMP消息;
当所述当前正在组装的RTMP消息组装完毕时,获取所述第一进程上的RTMP连接的文件描述符和现场信息。
3.根据权利要求2所述的方法,其特征在于,还包括:
确定所述第一进程上的RTMP连接已接收的第一消息块中,除所述当前正在组装的RTMP消息对应的第二消息块外,是否还存在剩余的第三消息块;
当存在所述第三消息块时,确定所述现场信息包含所述第三消息块。
4.根据权利要求3所述的方法,其特征在于,所述在所述第二进程上根据所述现场信息恢复所述RTMP连接之后,还包括:
当所述现场信息包含所述第三消息块时,组装所述第三消息块以及迁移到所述第二进程上的RTMP连接接收到的第四消息块,以得到完整的RTMP消息。
5.根据权利要求1-4任一项所述的方法,其特征在于,还包括:
确定所述第一进程的缓存中,是否存在所述第一进程上的RTMP连接的待发送数据;
当存在所述待发送数据时,确定所述现场信息包含所述待发送数据。
6.根据权利要求5所述的方法,其特征在于,所述在所述第二进程上根据所述现场信息恢复所述RTMP连接,包括:
当所述现场信息包含所述待发送数据时,组装所述待发送数据以得到第五消息块;
通过所述第二进程上的RTMP连接的文件描述符发送所述第五消息块。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述向所述第二进程传递所述文件描述符和所述现场信息,包括:
创建域套接字;
将所述第一进程通过所述域套接字连接到所述第二进程;
通过所述域套接字向所述第二进程传递所述文件描述符和所述现场信息。
8.根据权利要求7所述的方法,其特征在于,所述通过所述域套接字向所述第二进程传递所述文件描述符和所述现场信息,包括:
对所述现场信息编码,以得到编码信息;
通过所述域套接字向所述第二进程传递所述文件描述符和所述编码信息。
9.根据权利要求8所述的方法,其特征在于,所述通过所述域套接字向所述第二进程传递所述文件描述符和所述编码信息,包括:
根据所述编码信息、验证字段和长度字段生成目标信息,所述验证字段用于指示所述目标信息是否包含所述现场信息,所述长度字段用于指示所述目标信息的长度;
利用所述第一进程通过域套接字向所述第二进程传递所述目标信息和所述文件描述符。
10.根据权利要求1-4任一项所述的方法,其特征在于,
所述RTMP连接仅包括客户端和所述流媒体服务器之间的第一连接,所述文件描述符包括所述第一连接的第一文件描述符;
或者,
所述RTMP连接包括客户端和所述流媒体服务器之间的第一连接,以及所述流媒体服务器和上游服务器之间的第二连接,所述文件描述符包括所述第一连接的第一文件描述符和所述第二连接的第二文件描述符。
11.根据权利要求1-4任一项所述的方法,其特征在于,所述第一进程组是所述流媒体服务器配置更新或升级之前创建的进程,所述第二进程组是所述流媒体服务器配置更新或升级之后创建的进程。
12.一种RTMP连接迁移装置,其特征在于,所述装置集成在流媒体服务器上,所述装置包括:
获取模块,用于获取第一进程上的RTMP连接的文件描述符和现场信息,所述现场信息用于在第二进程上恢复所述RTMP连接,所述第一进程包含于第一进程组,所述第二进程包含于第二进程组,所述第一进程组和所述第二进程组是所述流媒体服务器先后创建的两个进程组;
传递模块,用于向所述第二进程传递所述文件描述符和所述现场信息;
处理模块,用于在所述第二进程上根据所述现场信息恢复所述RTMP连接;
收发模块,用于在所述第二进程上利用所述RTMP连接的文件描述符收发数据;
所述现场信息包括剩余的消息块。
13.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至11任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至11任一所述的方法。
CN202210249246.7A 2022-03-14 2022-03-14 Rtmp连接迁移方法、装置、设备及可读存储介质 Active CN114827096B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210249246.7A CN114827096B (zh) 2022-03-14 2022-03-14 Rtmp连接迁移方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210249246.7A CN114827096B (zh) 2022-03-14 2022-03-14 Rtmp连接迁移方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114827096A CN114827096A (zh) 2022-07-29
CN114827096B true CN114827096B (zh) 2023-10-24

Family

ID=82528671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210249246.7A Active CN114827096B (zh) 2022-03-14 2022-03-14 Rtmp连接迁移方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114827096B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910078B1 (en) * 2001-11-15 2005-06-21 Cisco Technology, Inc. Methods and apparatus for controlling the transmission of stream data
US7509390B1 (en) * 2005-06-01 2009-03-24 Cisco Technology, Inc. Methods and apparatus for controlling the transmission of data
CN101415006A (zh) * 2008-11-25 2009-04-22 华为技术有限公司 信令迁移的方法、装置及系统
CN107958010A (zh) * 2016-10-18 2018-04-24 北京京东尚科信息技术有限公司 用于在线数据迁移的方法及系统
CN110381042A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种平滑重启服务的方法、装置、介质和电子设备
CN111225222A (zh) * 2018-11-26 2020-06-02 北京奇虎科技有限公司 基于rtmp的屏幕数据的视频流播放方法、装置和系统
CN114157607A (zh) * 2021-12-06 2022-03-08 上海哔哩哔哩科技有限公司 媒体流传输方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10506072B2 (en) * 2018-04-24 2019-12-10 F5 Networks, Inc. Passing listener sockets between web server processes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910078B1 (en) * 2001-11-15 2005-06-21 Cisco Technology, Inc. Methods and apparatus for controlling the transmission of stream data
US7509390B1 (en) * 2005-06-01 2009-03-24 Cisco Technology, Inc. Methods and apparatus for controlling the transmission of data
CN101415006A (zh) * 2008-11-25 2009-04-22 华为技术有限公司 信令迁移的方法、装置及系统
CN107958010A (zh) * 2016-10-18 2018-04-24 北京京东尚科信息技术有限公司 用于在线数据迁移的方法及系统
CN111225222A (zh) * 2018-11-26 2020-06-02 北京奇虎科技有限公司 基于rtmp的屏幕数据的视频流播放方法、装置和系统
CN110381042A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种平滑重启服务的方法、装置、介质和电子设备
CN114157607A (zh) * 2021-12-06 2022-03-08 上海哔哩哔哩科技有限公司 媒体流传输方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Agent的集群负载均衡模型及其实验研究;尤天舒;中国博士学位论文全文数据库信息科技辑;全文 *
基于集群的Apache服务器进程迁移技术及实现;牟俊, 邓通, 毛文涛 等;重庆邮电学院学报(自然科学版);第17卷(第06期);全文 *

Also Published As

Publication number Publication date
CN114827096A (zh) 2022-07-29

Similar Documents

Publication Publication Date Title
US10911789B2 (en) Automatic failover for live video streaming
JP4723151B2 (ja) ライブメディアコンテンツの耐障害性配信方法
CN107135417B (zh) 一种hls协议的投屏方法及系统
AU2002237989B2 (en) A service gateway for interactive television
US10114689B1 (en) Dynamic playlist generation
US20080016201A1 (en) Methods and apparatus for transferring data
US9240922B2 (en) Transcodeless on-the-fly ad insertion
US8793384B2 (en) Recovery of disconnected channels over a reliable protocol
US20140280784A1 (en) File Transfer Based Upon Streaming Format
WO1997030538A2 (en) Client/server communication system
WO2005111836A2 (en) Session description message extensions
JP2004536393A (ja) ピアツーピア式の電子コンテンツの広範囲の配布の方法および装置
US20230118176A1 (en) Data transmission method and apparatus, computer-readable storage medium, electronic device, and computer program product
US20060224759A1 (en) System and method for a peer-to-peer streaming content operation by a browser plug-in
CN112953850B (zh) 数据传输方法、装置、计算机可读介质及电子设备
US20120242841A1 (en) System and method for transmitting real-time images
US20210409290A1 (en) Unique user session tracking in adaptive bitrate video delivery
CN114827096B (zh) Rtmp连接迁移方法、装置、设备及可读存储介质
US11910044B1 (en) Systems and methods for switching the processing of a live content stream to another datacenter
CN115086714B (zh) 数据处理方法、装置、设备及存储介质
CN111090818A (zh) 资源管理方法、资源管理系统、服务器及计算机存储介质
CN112995697B (zh) 一种流数据恢复方法、服务器、存储介质及计算机设备
CN113973215A (zh) 数据去重方法、装置及存储介质
CN115150675B (zh) 倒序播放方法、系统以及倒序切片方法
CN115567512A (zh) 数据传输方法、装置、服务器、设备、介质及程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant