CN107454416B - 视频流发送方法和装置 - Google Patents
视频流发送方法和装置 Download PDFInfo
- Publication number
- CN107454416B CN107454416B CN201710818448.8A CN201710818448A CN107454416B CN 107454416 B CN107454416 B CN 107454416B CN 201710818448 A CN201710818448 A CN 201710818448A CN 107454416 B CN107454416 B CN 107454416B
- Authority
- CN
- China
- Prior art keywords
- video frame
- header file
- encoded video
- encoded
- frame
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/87—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving scene cut or scene change detection in combination with video compression
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种视频流发送方法及装置,属于互联网技术领域。所述方法包括:采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;若第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则获取第一编码后视频帧对应的参数集,第一编码后视频帧对应的参数集中包括第一编码后视频帧所采用的编码参数;生成第一编码后视频帧所关联的头文件,头文件中包括第一编码后视频帧对应的参数集;向流媒体服务器发送头文件和第一编码后视频帧。通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,达到了提高视频播放的流畅性的效果。
Description
技术领域
本发明实施例涉及互联网技术领域,特别涉及一种视频流发送方法和装置。
背景技术
随着多媒体技术的发展,视频播放场景的多样性成为多媒体应用开发过程中较为重要的一部分。在视频播放过程中,若要实现视频播放场景的切换,通常需要更改视频流中各个视频帧的分辨率。
相关技术中,为了解决视频帧分辨率的更改问题,推流客户端先将正在发送中的视频流暂停发送,按照视频播放场景所需的视频帧的分辨率,重新创建能对该分辨率的视频帧执行编码处理的编码器,再通过新的编码器对已更改过分辨率的视频帧进行编码,最后将编码得到的视频帧发送出去。
相关技术提供的视频流发送方法,由于在视频流的暂停发送和重新发送之间必然存在一定的时间间隔,导致拉流客户端无法连续地接收到视频帧,从而使得在视频播放过程中出现卡顿现象。
发明内容
为了解决现有技术中存在的问题,本发明实施例提供了一种视频流发送方法和装置。所述技术方案如下:
根据本发明实施例的第一方面,提供一种视频流发送方法,应用于推流客户端中,所述推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理;所述方法包括:
采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;
若所述第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则获取所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
生成所述第一编码后视频帧所关联的头文件,所述头文件中包括所述第一编码后视频帧对应的参数集;
向流媒体服务器发送所述头文件和所述第一编码后视频帧。
在一种可能的实施方式中,所述方法还包括:
在检测到视频播放场景由第一场景变更为第二场景时,将所述第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理。
在另一种可能的实施方式中,所述将所述第一编码器切换为第二编码器之后,还包括:
采用所述第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧。
根据本发明实施例的第二方面,提供一种视频流发送方法,应用于流媒体服务器中,所述方法包括:
接收推流客户端发送的视频数据,所述视频数据为头文件或编码后视频帧;其中,所述头文件由所述推流客户端在检测到当前编码得到的第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时生成,所述头文件中包含有所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
向第一拉流客户端或者下一级的第一流媒体服务器转发所述视频数据。
在一种可能的实施方式中,所述接收推流客户端发送的视频数据之后,还包括:
当所述视频数据为所述头文件时,生成与所述头文件对应的元数据消息,所述元数据消息中包括所述参数集,所述元数据消息可被Flash播放器识别;
向所述第一拉流客户端或者所述下一级的第一流媒体服务器发送所述元数据消息。
在另一种可能的实施方式中,所述接收推流客户端发送的视频数据之后,还包括:
当所述视频数据为所述头文件时,在头文件队列的尾部添加所述头文件;
当所述视频数据为所述编码后视频帧时,为所述编码后视频帧添加属性信息,所述属性信息用于指示所述编码后视频帧所关联的头文件;将所述编码后视频帧所关联的头文件的被引用次数加1;在视频帧队列的尾部添加所述编码后视频帧。
在另一种可能的实施方式中,所述在视频帧队列的尾部添加所述编码后视频帧之后,还包括:
检测所述视频帧队列的长度是否超过预设阈值;
若所述视频帧队列的长度超过所述预设阈值,则从所述视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及所述第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除;
对于每一个已删除的编码后视频帧,将所述已删除的编码后视频帧所关联的头文件的被引用次数减1;
当存在被引用次数为0的头文件时,将所述被引用次数为0的头文件从所述头文件队列中删除。
在另一种可能的实施方式中,所述方法还包括:
当接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,从所述视频帧队列的头部开始逐个获取编码后视频帧;
当获取到第1个编码后视频帧时,生成与所述第1个编码后视频帧所关联的头文件对应的元数据消息,向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第1个编码后视频帧所关联的头文件、所述第1个编码后视频帧所关联的头文件对应的元数据消息和所述第1个编码后视频帧。
当获取到第i个编码后视频帧时,检测所述第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同;若相同,则向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧;若不同,则生成与所述第i个编码后视频帧所关联的头文件对应的元数据消息,向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧所关联的头文件、所述第i个编码后视频帧所关联的头文件对应的元数据消息和所述第i个编码后视频帧;其中,所述i为大于1的整数。
根据本发明实施例的第三方面,提供一种视频流发送装置,应用于推流客户端中,所述推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理;所述装置包括:
编码模块,用于采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;
获取模块,用于在所述第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时,获取所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
生成模块,用于生成所述第一编码后视频帧所关联的头文件,所述头文件中包括所述第一编码后视频帧对应的参数集;
发送模块,用于向流媒体服务器发送所述头文件和所述第一编码后视频帧。
在一种可能的实施方式中,所述装置还包括:
切换模块,用于在检测到视频播放场景由第一场景变更为第二场景时,将所述第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理。
在另一种可能的实施方式中,所述编码模块,还用于采用所述第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧。
根据本发明实施例的第四方面,提供一种视频流发送装置,应用于流媒体服务器中,所述装置包括:
接收模块,用于接收推流客户端发送的视频数据,所述视频数据为头文件或编码后视频帧;其中,所述头文件由所述推流客户端在检测到当前编码得到的第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时生成,所述头文件中包含有所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
发送模块,用于向第一拉流客户端或者下一级的第一流媒体服务器转发所述视频数据。
在一种可能的实施方式中,所述装置还包括:生成模块;
所述生成模块,用于当所述视频数据为所述头文件时,生成与所述头文件对应的元数据消息,所述元数据消息中包括所述参数集,所述元数据消息可被Flash播放器识别;
所述发送模块,还用于向所述第一拉流客户端或者所述下一级的第一流媒体服务器发送所述元数据消息。
在另一种可能的实施方式中,所述装置还包括:
添加模块,用于当所述视频数据为所述头文件时,在头文件队列的尾部添加所述头文件;
所述添加模块,还用于当所述视频数据为所述编码后视频帧时,为所述编码后视频帧添加属性信息,所述属性信息用于指示所述编码后视频帧所关联的头文件;将所述编码后视频帧所关联的头文件的被引用次数加1;在视频帧队列的尾部添加所述编码后视频帧。
在另一种可能的实施方式中,所述装置还包括:
检测模块,用于检测所述视频帧队列的长度是否超过预设阈值;
删除模块,用于在所述视频帧队列的长度超过所述预设阈值时,从所述视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及所述第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除;
所述删除模块,还用于对于每一个已删除的编码后视频帧,将所述已删除的编码后视频帧所关联的头文件的被引用次数减1;
所述删除模块,还用于当存在被引用次数为0的头文件时,将所述被引用次数为0的头文件从所述头文件队列中删除。
在另一种可能的实施方式中,所述装置还包括:获取模块;
所述获取模块,用于当接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,从所述视频帧队列的头部开始逐个获取编码后视频帧;
所述生成模块,还用于当获取到第1个编码后视频帧时,生成与所述第1个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第1个编码后视频帧所关联的头文件、所述第1个编码后视频帧所关联的头文件对应的元数据消息和所述第1个编码后视频帧。
所述检测模块,还用于当获取到第i个编码后视频帧时,检测所述第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同;若相同,则通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧;若不同,则通过所述生成模块生成与所述第i个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧所关联的头文件、所述第i个编码后视频帧所关联的头文件对应的元数据消息和所述第i个编码后视频帧;其中,所述i为大于1的整数。
根据本发明实施例的第五方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的视频流发送方法,或者,如第二方面所述的视频流发送方法。
本发明实施例提供的技术方案带来的有益效果是:
通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的实施环境的示意图;
图2是本发明一个实施例提供的视频流发送方法的流程图;
图3是本发明另一个实施例提供的视频流发送方法的流程图;
图4是本发明另一个实施例提供的视频流发送方法的流程图;
图5是本发明一个实施例提供的视频流发送装置的框图;
图6是本发明另一个实施例提供的视频流发送装置的框图;
图7是本发明一个实施例提供的终端的结构示意图;
图8是本发明一个实施例提供的流媒体服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的实施环境的示意图,如图1所示,该实施环境包括:终端110、流媒体服务器120和终端130。
终端110中安装有推流客户端,该推流客户端用于采集视频流中的各个视频帧,并按照一定的编码格式对视频帧执行编码处理后将其发送给流媒体服务器120。流媒体服务器120和终端110之间可以通过网络建立通信连接。示例性地,终端110可以是诸如手机、平板电脑、多媒体播放设备、个人计算机(Personal Computer,PC)之类的电子设备。
流媒体服务器120用于分类存储终端110发送的视频流,并将其转发给终端130。终端130和流媒体服务器120之间可以通过网络建立通信连接。可选地,流媒体服务器120可以是一台服务器,也可以是由若干台服务器组成的服务器集群,还可以是一个云计算服务中心。
终端130通常为多个,终端130中安装有拉流客户端,该拉流客户端用于接收流媒体服务器120发送的视频流,并在对视频流中的编码后视频帧执行解码处理后向用户播放该视频流所对应的视频。示例性地,终端130同样可以是诸如手机、平板电脑、多媒体播放设备、个人计算机之类的电子设备。
可选地,如图1所示,该实施环境中还包括下一级的流媒体服务器140。下一级的流媒体服务器140用于获取流媒体服务器120中的视频流,并将其转发给终端130。下一级的流媒体服务器140和流媒体服务器120之间可以通过网络建立通信连接,并且和终端130之间也可以通过网络建立通信连接。
在实际应用中,终端130中的一部分终端可以从流媒体服务器120中获取所需播放的视频流,另一部分终端可以从下一级的流媒体服务器140中获取所需播放的视频流。
在本发明本实施例中,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
下面将基于上面所述的本发明实施例涉及的共性方面,对本发明实施例作进一步详细说明。
请参考图2,其示出了本发明一个实施例提供的视频流发送方法的流程图。该视频流发送方法应用于推流客户端中。如图2所示,该方法可以包括:
步骤201,采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧。
每个编码器用于对一种分辨率的视频帧执行编码处理,且编码器无法更改其所能支持编码的视频帧的分辨率,为了使推流客户端能对多种分辨率的视频帧执行编码处理,推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理。可选地,推流客户端选择所需启用的编码器,可通过创建一个结构体(struct)来存放推流客户端中的所有编码器,且编码器指针指向所需启用的编码器。
在用户每次启动推流客户端后,推流客户端根据默认的视频播放场景选择所需启用的编码器,并按照所需启用的编码器的类型,实时采集用户通过摄像头上传的原始视频帧。示例性地,若默认的视频播放场景为第一场景,则推流客户端选择所需启用的编码器为第一编码器,并将第一场景下播放视频所采用的视频分辨率作为原始视频帧的分辨率(在本实施例中称为第一分辨率),以第一分辨率对原始视频帧进行采集,采集得到的原始视频帧为第一原始视频帧。随后,推流客户端采用第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧,其中,第一编码后视频帧的分辨率与第一原始视频帧的分辨率相同。
同时,推流客户端默认将当前首个等待编码的原始视频帧强制编码为关键帧。可选地,将所需成为关键帧的编码后视频帧的属性更改为关键帧即可。其中,关键帧为在通过解码器单独解码该视频帧后能得到对应的原始视频帧的编码后视频帧;非关键帧为必须依赖该视频帧的前一帧才能在通过解码器解码后得到对应的原始视频帧的编码后视频帧。在实际应用中,关键帧以固定的周期存在,例如,每20个编码后视频帧中包括1个关键帧,从某个关键帧开始,直至下一个关键帧之前的所有编码后视频帧,被称之为一个视频帧序列,对于一个视频帧序列而言,正因为其第一帧为关键帧,才能在通过解码器解码后得到对应的所有原始视频帧。因此,对于第一原始视频帧中的首个原始视频帧,推流客户端会将其强制编码为关键帧,也即,首个第一编码后视频帧为关键帧。
步骤202,若第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则获取第一编码后视频帧对应的参数集。
每个解码器用于对一种分辨率的编码后视频帧执行解码处理,且解码器在解码某种分辨率的编码后视频帧时,需要依据该分辨率的编码后视频帧的编码参数,才能对其进行准确解码。编码参数包括了设置解码器所需的信息参数,拉流客户端正是根据编码后视频帧的编码参数来设置对应的解码器。在实际应用中,编码参数往往存在多项,以参数集的形式参与视频流的编解码和传输过程。可选地,若本实施例中采用H.264编解码标准,则参数集为SPS(Sequence Parameter Set,序列参数集)和PPS(Picture Parameter Set,图像参数集)。SPS包含了一个视频序列的所有信息,如序列参数集标识(seq_parameter_set_id)、视频序列中的视频帧的总帧数、视频帧的编码方法及视频帧的解码顺序等等;PPS包含了一个视频序列中某一帧视频帧或者某几帧视频帧的相关信息,如图像参数集标识(pic_parameter_set_id)、视频帧的类型、视频帧在序列中的序号等等。
若第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则表明当前所启用的解码器已无法对第一编码后视频帧执行解码处理,推流客户端需要重新获取第一编码后视频帧对应的参数集,将其发送至拉流客户端以指示拉流客户端设置用于解码第一编码后视频帧的解码器。编码后视频帧对应的参数集通常存储在生成该编码后视频帧的编码器中。
若第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率相同,则拉流客户端仍可采用当前启动的解码器对第一编码后视频帧执行解码处理,也即推流客户端无需获取第一编码后视频帧对应的参数集。
步骤203,生成第一编码后视频帧所关联的头文件。
推流客户端根据第一编码后视频帧对应的参数集,生成第一编码后视频帧所关联的头文件。可选地,推流客户端将第一编码后视频帧对应的参数集封装为RTMP(Real TimeMessaging Protocol,实时消息传输协议)格式的头文件。RTMP是一种基于TCP(Transmission Control Protocol,传输控制协议)的用于实时传输音频、视频等数据的网络协议。
步骤204,向流媒体服务器发送头文件和第一编码后视频帧。
可选地,为了更好地传输第一编码后视频帧,推流客户端也将第一编码后视频帧以RTMP格式封装,且每个第一编码后视频帧为单独封装,再将封装后的第一编码后视频帧发送给流媒体服务器。
在实际应用中,由于拉流客户端只能在获取到第一编码后视频帧对应的参数集后才能设置对应的解码器,为了避免拉流客户端无法及时对接收到的第一编码后视频帧执行解码处理,推流客户端通常先向流媒体服务器发送头文件,后发送第一编码后视频帧,以使得流媒体服务器先向拉流客户端转发头文件,再向拉流客户端转发第一编码后视频帧。
需要补充说明的是,在推流客户端的运行过程中,推流客户端实时检测视频播放场景是否变更,若视频播放场景变更,则根据变更后的视频播放场景选择相应的编码器。例如,推流客户端在检测到视频播放场景由第一场景变更为第二场景时,将第一编码器切换为第二编码器。可选地,推流客户端检测视频播放场景是否变更,可通过判断自身是否接收到用户触发的场景变更指令。在推流客户端的运行过程中,不论视频播放场景如何变更,推流客户端始终根据当前启用的编码器的类型,对采集得到的原始视频帧的分辨率进行更改。若推流客户端当前启用的编码器为第二编码器,则将原始视频帧的分辨率更改为第二编码器所能执行编码处理的视频帧的分辨率(在本实施例中称为第二分辨率),更改为第二分辨率的原始视频帧被称之为第二原始视频帧。可选地,更改视频帧的分辨率可通过在原始视频帧中截取部分图像来实现。示例性地,若该视频流发送方法应用于直播场景中,当视频播放场景由主播A单人直播切换为主播A和主播B竞技,或者主播A和观众C连麦时,由于拉流客户端需要同时展示两个推流客户端发送的视频流,则每个推流客户端需要将第二原始视频帧的分辨率更改为原始视频帧的分辨率的一半,推流客户端可截取原始视频帧在宽度方向上的中间一半图像作为第二原始视频帧;当视频播放场景由主播A单人直播切换为主播A、主播B和主播D三人竞技,或者主播A、观众C和观众E三人连麦时,由于拉流客户端需要同时展示三个推流客户端发送的视频流,则每个推流客户端需要将第二原始视频帧的分辨率更改为原始视频帧的分辨率的三分之一,推流客户端可截取原始视频帧在宽度方向上的中间三分之一图像作为第二原始视频帧。
若视频播放场景已变更为第二场景,则推流客户端采用第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,第二编码后视频帧的分辨率与第二原始视频帧的分辨率相同。同样地,第二编码器编码得到的首个第二编码后视频帧被编码为关键帧。
在推流客户端接收到用户的退出指令的同时,推流客户端停止采集和编码视频帧,并销毁本端所有已存储的数据。
综上所述,本实施例提供的视频流发送方法,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
请参考图3,其示出了本发明另一个实施例提供的视频流发送方法的流程图。该视频流发送方法应用于推流客户端中。如图3所示,该方法可以包括:
步骤301,创建组件并调用各组件的初始化函数。
在用户每次启动推流客户端时,推流客户端创建如下组件:采集组件、第一队列、编码器管理器组件、第二队列、传输组件以及至少两个编码器。关于上述各组件的具体用途将在下文中详细介绍。
在调用各组件的初始化函数时,编码器管理器组件根据默认的视频播放场景将编码器指针指向所需启用的编码器,例如,默认的视频播放场景为第一场景,则编码器指针指向第一编码器;编码器管理器组件将强制编码关键帧标志变量IsForceCodeKeyFrame设置为真,当该变量为真时,编码器将当前首个等待编码的原始视频帧强制编码为关键帧;传输组件将上一次发送的编码后视频帧的分辨率类型LastSendedVFType,设置为与默认的编码后视频帧的分辨率类型不同的分辨率类型;第一列队和第二列队为空;推流客户端将推流结束标志变量设置为假,当推流客户端接收到用户的退出指令时,该变量为真。
步骤302,通过采集组件采集原始视频帧,将原始视频帧存储至第一队列。
采集组件将采集得到的原始视频帧按照采集顺序依次放入第一队列。
步骤303,对原始视频帧执行编码处理,得到编码后视频帧,并将编码后视频帧存储至第二队列。
编码器管理器组件从第一队列的头部开始逐个提取原始视频帧,并根据此时编码器指针指向的编码器的类型,对该原始视频帧的分辨率进行更改。随后,编码器管理器组件判断IsForceCodeKeyFrame是否为真,若IsForceCodeKeyFrame为真,则当前启用的编码器将当前首个等待编码的原始视频帧强制编码为关键帧,并将IsForceCodeKeyFrame设置为假;若IsForceCodeKeyFrame为假,则编码器将原始视频帧正常编码为非关键帧。编码器管理器组件按照编码顺序依次将编码后视频帧放入第二队列。
另外,推流客户端创建多个包括两个变量的第一结构体,一个变量指向某个编码后视频帧的分辨率类型,另一个变量指向所有属于该分辨率类型的编码后视频帧,以此为每个编码后视频帧关联其分辨率类型。第一结构体个数与编码器个数相同。
步骤304,编码器管理器组件判断推流结束标志变量是否为真。
若推流结束标志变量为真,则推流客户端执行步骤308;若推流结束标志变量为假,则执行步骤305,并再次执行步骤303。
步骤305,若编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则获取编码后视频帧对应的参数集,生成编码后视频帧所关联的头文件。
传输组件从第二队列的头部开始逐个提取编码后视频帧,并判断当前提取的编码后视频帧(也即当前所需发送的编码后视频帧)的分辨率类型SendingVFType与前一个编码后视频帧(也即上一次发送的编码后视频帧)的分辨率类型LastSendedVFType是否相同。若两者不相同,则表明当前所启用的解码器已无法对编码后视频帧执行解密处理,推流客户端需要重新获取编码后视频帧对应的参数集,将其发送至拉流客户端以指示拉流客户端设置用于解码编码后视频帧的解码器;若两者相同,则拉流客户端仍可采用当前启动的解码器对编码后视频帧执行解密处理,也即推流客户端无需获取编码后视频帧对应的参数集。
编码后视频帧对应的参数集通常存储在生成该编码后视频帧的编码器中。若需获取第一编码后视频帧对应的参数集,编码器管理器组件调用自身的接口函数,向生成第一编码后视频帧的第一编码器请求获取其参数集。
在编码器管理器组件获取到编码后视频帧对应的参数集之后,传输组件根据编码后视频帧对应的参数集,生成编码后视频帧所关联的头文件。可选地,若本实施例采用RTMP协议传输视频流,则传输组件为RTMP网络组件,生成的头文件的格式也为RTMP格式。
步骤306,向流媒体服务器发送头文件和编码后视频帧。
可选地,为了更好地传输编码后视频帧,推流客户端也将编码后视频帧以RTMP格式封装,且每个编码后视频帧为单独封装,再将封装后的编码后视频帧发送给流媒体服务器。
步骤307,传输组件判断推流结束标志变量是否为真。
若推流结束标志变量为真,则推流客户端执行步骤308;若推流结束标志变量为假,则再次从步骤305开始执行。
步骤308,停止所有组件的工作并将所有组件销毁,清除本端所有已存储的数据。
需要说明的是,在推流客户端的运行过程中,推流客户端会根据视频播放场景的变更情况,将编码器指针指向对应的编码器。而一旦编码器指针的指向发生变化,编码器管理器组件将IsForceCodeKeyFrame设置为真,确保对于不同分辨率类型的编码后视频帧,其首个编码后视频帧为关键帧。另外,传输组件在检测到编码后视频帧的分辨率类型发生变化时,就会重新获取当前编码后视频帧的参数集,确保拉流客户端对所有分辨率类型的编码后视频帧都能进行准确解码。
综上所述,本实施例提供的视频流发送方法,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
请参考图4,其示出了本发明一个实施例提供的视频流发送方法的流程图。该视频流发送方法应用于流媒体服务器中。如图4所示,该方法可以包括:
步骤401,接收推流客户端发送的视频数据。
视频数据为上述实施例中推流客户端发送的头文件或编码后视频帧。
步骤402,向第一拉流客户端或者下一级的第一流媒体服务器转发视频数据。
在实际应用中,流媒体服务器在接收到某一数据后,会先判断该数据为视频数据还是音频数据,在确定该数据为视频数据后,再判断该视频数据为头文件还是编码后视频帧,若该视频数据为编码后视频帧,再判断该编码后视频帧为关键帧还是非关键帧。若本实施例采用RTMP协议传输视频流,则该协议本身可帮助流媒体服务器直接读取获取到的数据具体为何种数据。
当视频数据为头文件时,流媒体服务器在头文件队列的尾部添加该头文件。另外,由于Flash播放器无法接收头文件,当拉流客户端采用Flash播放器播放流媒体服务器转发的视频流时,拉流客户端需要获取可被Flash播放器识别的且包括编码后视频帧的参数集的信息,因此,当视频数据为头文件时,流媒体服务器会根据该头文件生成与其对应的元数据消息(onMetaData),从而使得使用Flash播放器的拉流客户端也能对编码后视频帧进行准确解码。在生成元数据消息后,流媒体服务器向第一拉流客户端或者下一级的第一流媒体服务器发送该视频头以及该视频头对应的元数据消息。可选地,元数据消息除了包括编码后视频帧的参数集外,还可以包括用户的自定义信息。
当视频数据为编码后视频帧时,流媒体服务器为该编码后视频帧添加属性信息,其中,属性信息用于指示该编码后视频帧所关联的头文件。同时,流媒体服务器将该编码后视频帧所关联的头文件的被引用次数加1。可选地,流媒体服务器创建多个包括两个变量的第二结构体,一个变量指向所有关联同一头文件的编码后视频帧,另一个变量指向该头文件。
另外,在视频帧队列的尾部添加该编码后视频帧,再将该编码后视频帧发送给第一拉流客户端或者下一级的第一流媒体服务器。由于视频帧队列所能存储的编码后视频帧的个数有限,流媒体服务器会实时检测视频帧队列的长度是否超过预设阈值,若视频帧队列的长度超过其预设阈值,则将视频帧队列中最早缓存的一部分编码后视频帧删除。若是在删除部分编码后视频帧后,视频帧队列头部的第一个编码后视频帧为非关键帧,即使流媒体服务器将其发送给拉流客户端,拉流客户端也无法通过解码器对其解码,因此,在实际应用中,力媒体服务器从视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除,也即从视频帧队列的头部开始,删除一个视频序列。同时,对于每一个已删除的编码后视频帧,将其所关联的头文件的被引用次数减1。当头文件队列中存在被引用次数为0的头文件时,说明该头文件所关联的编码后视频帧已不存在,那么该头文件也失去存在的必要,为了释放头文件队列的存储空间,将其从头文件队列中删除。
相应地,第一拉流客户端或者下一级的第一流媒体服务器接收流媒体服务器发送的编码后视频帧、与编码后视频帧所关联的头文件以及与头文件对应的元数据消息。可选地,流媒体服务器可以先发送头文件以及头文件对应的元数据消息,再发送头文件所关联的编码后视频帧,避免拉流客户端无法及时对编码后视频帧进行解码。若拉流客户端因采用Flash播放器而无法接收头文件,则拉流客户端根据接收到的元数据消息设置对应的解码器;若拉流客户端能接收头文件,则拉流客户端优先根据头文件设置对应的解码器。
需要补充说明的是,当流媒体服务器接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,仍从视频帧队列的头部开始逐个获取编码后视频帧。在获取到第1个编码后视频帧时,根据其所关联的头文件生成与其所关联的头文件对应的元数据消息,再向第二拉流客户端或者下一级的第二流媒体服务器发送第1个编码后视频帧所关联的头文件、第1个编码后视频帧所关联的头文件对应的元数据消息以及第1个编码后视频帧。当流媒体服务器获取到第i个编码后视频帧时,检测第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同,若相同,则向第二拉流客户端或者下一级的第二流媒体服务器发送这第i个编码后视频帧;若不同,则生成与第i个编码后视频帧所关联的头文件对应的元数据消息,再向第二拉流客户端或者下一级的第二流媒体服务器发送这第i个编码后视频帧所关联的头文件、第i个编码后视频帧所关联的头文件对应的元数据消息以及第i个编码后视频帧,其中,所述i为大于1的整数。可选地,由于同一个视频序列中的所有编码后视频帧的分辨率类型都相同,流媒体服务器仅检测第j个关键帧与第j-1个关键帧所关联的头文件是否相同即可。
综上所述,本实施例提供的视频流发送方法,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
另外,通过为编码后视频帧添加用于指示其所关联的头文件的属性信息,确保流媒体服务器在获取不同分辨率的编码后视频帧时也可以准确获取其所关联的头文件;并且根据关联同一头文件的编码后视频帧的帧数来统计该头文件的被引用次数,将被引用次数为0的头文件从头文件队列中删除,达到了释放头文件队列的存储空间的效果。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图5,其示出了本发明一个实施例提供的视频流发送装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置应用于推流客户端中,所述推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理。如图5所示,该装置可以包括:编码模块510、获取模块520、生成模块530和发送模块540。
编码模块510,用于采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;
获取模块520,用于在所述第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时,获取所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
生成模块530,用于生成所述第一编码后视频帧所关联的头文件,所述头文件中包括所述第一编码后视频帧对应的参数集;
发送模块540,用于向流媒体服务器发送所述头文件和所述第一编码后视频帧。
综上所述,本实施例提供的视频流发送装置,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
在基于图5实施例提供的一个可选实施例中,所述装置还包括:
切换模块,用于在检测到视频播放场景由第一场景变更为第二场景时,将所述第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理。
在基于图5实施例提供的另一个可选实施例中,所述编码模块510,还用于采用所述第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧。
请参考图6,其示出了本发明另一个实施例提供的视频流发送装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置应用于流媒体服务器中。如图6所示,该装置可以包括:接收模块610和发送模块620。
接收模块610,用于接收推流客户端发送的视频数据,所述视频数据为头文件或编码后视频帧;其中,所述头文件由所述推流客户端在检测到当前编码得到的第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时生成,所述头文件中包含有所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
发送模块620,用于向第一拉流客户端或者下一级的第一流媒体服务器转发所述视频数据。
综上所述,本实施例提供的视频流发送装置,通过在推流客户端中创建多个编码器,用于对不同分辨率的视频帧执行编码处理,在推流客户端检测到视频播放场景变更之后,采用与当前视频播放场景对应的编码器对适用于当前视频播放场景的视频帧执行编码处理,解决了推流客户端中只包括一个编码器,需要暂停视频流的发送来重新创建编码器以适应视频播放场景的变更,使得视频播放过程中出现卡顿现象的问题,达到了提高视频播放的流畅性的效果。
另外,通过为编码后视频帧添加用于指示其所关联的头文件的属性信息,确保流媒体服务器在获取不同分辨率的编码后视频帧时也可以准确获取其所关联的头文件;并且根据关联同一头文件的编码后视频帧的帧数来统计该头文件的被引用次数,将被引用次数为0的头文件从头文件队列中删除,达到了释放头文件队列的存储空间的效果。
在基于图6实施例提供的一个可选实施例中,所述装置还包括:生成模块;
生成模块,用于当所述视频数据为所述头文件时,生成与所述头文件对应的元数据消息,所述元数据消息中包括所述参数集,所述元数据消息可被Flash播放器识别;
所述发送模块620,还用于向所述第一拉流客户端或者所述下一级的第一流媒体服务器发送所述元数据消息。
在基于图6实施例提供的另一个可选实施例中,所述装置还包括:
添加模块,用于当所述视频数据为所述头文件时,在头文件队列的尾部添加所述头文件;
所述添加模块,还用于当所述视频数据为所述编码后视频帧时,为所述编码后视频帧添加属性信息,所述属性信息用于指示所述编码后视频帧所关联的头文件;将所述编码后视频帧所关联的头文件的被引用次数加1;在视频帧队列的尾部添加所述编码后视频帧。
在基于图6实施例提供的另一个可选实施例中,所述装置还包括:
检测模块,用于检测所述视频帧队列的长度是否超过预设阈值;
删除模块,用于在所述视频帧队列的长度超过所述预设阈值时,从所述视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及所述第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除;
所述删除模块,还用于对于每一个已删除的编码后视频帧,将所述已删除的编码后视频帧所关联的头文件的被引用次数减1;
所述删除模块,还用于当存在被引用次数为0的头文件时,将所述被引用次数为0的头文件从所述头文件队列中删除。
在基于图6实施例提供的另一个可选实施例中,所述装置还包括:获取模块;
获取模块,用于当接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,从所述视频帧队列的头部开始逐个获取所述编码后视频帧;
所述生成模块,还用于当获取到第1个编码后视频帧时,生成与所述第1个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块620向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第1个编码后视频帧所关联的头文件、所述第1个编码后视频帧所关联的头文件对应的元数据消息和所述第1个编码后视频帧。
所述检测模块,还用于当获取到第i个编码后视频帧时,检测所述第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同;若相同,则通过所述发送模块620向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧;若不同,则通过所述生成模块生成与所述第i个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块620向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧所关联的头文件、所述第i个编码后视频帧所关联的头文件对应的元数据消息和所述第i个编码后视频帧;其中,所述i为大于1的整数。
需要说明的是:上述实施例提供的视频流发送装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频流发送装置和视频流发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图7,其示出了本发明一个实施例提供的终端的结构示意图。该终端用于实施上述实施例中提供的推流客户端侧的视频流发送方法。具体来讲:
终端可以包括射频(RF,Radio Frequency)电路701、包括有一个或一个以上计算机可读存储介质的存储器702、输入单元703、显示单元704、传感器705、音频电路706、无线保真(WiFi,Wireless Fidelity)模块707、包括有一个或者一个以上处理核心的处理器708、以及电源709等部件。本领域技术人员可以理解,图7中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路701可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器708处理;另外,将涉及上行的数据发送给基站。通常,RF电路701包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路701还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器702可用于存储软件程序以及模块,处理器708通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器708和输入单元703对存储器702的访问。
输入单元703可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元703可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器708,并能接收处理器708发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元703还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元704可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元704可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器708以确定触摸事件的类型,随后处理器708根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图7中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器705,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路706、扬声器,传声器可提供用户与终端之间的音频接口。音频电路706可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路706接收后转换为音频数据,再将音频数据输出处理器708处理后,经RF电路701以发送给比如另一终端,或者将音频数据输出至存储器702以便进一步处理。音频电路706还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块707可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块707,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器708是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器708可包括一个或多个处理核心;优选的,处理器708可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器708中。
终端还包括给各个部件供电的电源709(比如电池),优选的,电源可以通过电源管理系统与处理器708逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源709还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。
具体在本实施例中,终端中的处理器708会运行存储在存储器702中的至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器708加载并执行以实现上述各个方法实施例中所提供的推流客户端侧的视频流发送方法。
请参考图8,其示出了本发明一个实施例提供的流媒体服务器的结构示意图。该流媒体服务器用于实施上述实施例中提供的关于流媒体服务器侧的视频流发送方法。具体来讲:
所述流媒体服务器800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述流媒体服务器800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为流媒体服务器800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本发明的各种实施例,所述流媒体服务器800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即流媒体服务器800可以通过连接在所述系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括至少一条指令、至少一段程序、代码集或指令集,其中所述至少一条指令、至少一段程序、代码集或指令集存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述视频流发送方法。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由推流客户端的处理器加载并执行以实现上述推流客户端侧的视频流发送方法,或者,由流媒体服务器的处理器加载并执行以实现上述流媒体服务器侧的视频流发送方法。可选地,上述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述视频流发送方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种视频流发送方法,其特征在于,应用于推流客户端中,所述推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理;
所述方法包括:
采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;
若所述第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同,则获取所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
生成所述第一编码后视频帧所关联的头文件,所述头文件中包括所述第一编码后视频帧对应的参数集;
向流媒体服务器发送所述头文件和所述第一编码后视频帧,
所述方法还包括:
在检测到视频播放场景由第一场景变更为第二场景时,将所述第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理,
其中,所述第一场景对应于主播单人直播,所述第二场景对应于竞技或连麦,
所述将所述第一编码器切换为第二编码器之后,还包括:
采用所述第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧,所述关键帧为在通过解码器单独解码视频帧后能得到对应的原始视频帧的编码后视频帧。
2.一种视频流发送方法,其特征在于,应用于流媒体服务器中,所述方法包括:
接收推流客户端发送的视频数据,所述视频数据为头文件或编码后视频帧;其中,所述头文件由所述推流客户端在检测到当前编码得到的第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时生成,所述头文件中包含有所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
向第一拉流客户端或者下一级的第一流媒体服务器转发所述视频数据,
其中,所述推流客户端用于在检测到视频播放场景由第一场景变更为第二场景时,将第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理,
其中,所述第一场景对应于主播单人直播,所述第二场景对应于竞技或连麦,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧,所述关键帧为在通过解码器单独解码视频帧后能得到对应的原始视频帧的编码后视频帧。
3.根据权利要求2所述的方法,其特征在于,所述接收推流客户端发送的视频数据之后,还包括:
当所述视频数据为所述头文件时,生成与所述头文件对应的元数据消息,所述元数据消息中包括所述参数集,所述元数据消息可被Flash播放器识别;
向所述第一拉流客户端或者所述下一级的第一流媒体服务器发送所述元数据消息。
4.根据权利要求2所述的方法,其特征在于,所述接收推流客户端发送的视频数据之后,还包括:
当所述视频数据为所述头文件时,在头文件队列的尾部添加所述头文件;
当所述视频数据为所述编码后视频帧时,为所述编码后视频帧添加属性信息,所述属性信息用于指示所述编码后视频帧所关联的头文件;将所述编码后视频帧所关联的头文件的被引用次数加1;在视频帧队列的尾部添加所述编码后视频帧。
5.根据权利要求4所述的方法,其特征在于,所述在视频帧队列的尾部添加所述编码后视频帧之后,还包括:
检测所述视频帧队列的长度是否超过预设阈值;
若所述视频帧队列的长度超过所述预设阈值,则从所述视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及所述第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除;
对于每一个已删除的编码后视频帧,将所述已删除的编码后视频帧所关联的头文件的被引用次数减1;
当存在被引用次数为0的头文件时,将所述被引用次数为0的头文件从所述头文件队列中删除。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,从所述视频帧队列的头部开始逐个获取编码后视频帧;
当获取到第1个编码后视频帧时,生成与所述第1个编码后视频帧所关联的头文件对应的元数据消息,向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第1个编码后视频帧所关联的头文件、所述第1个编码后视频帧所关联的头文件对应的元数据消息和所述第1个编码后视频帧;
当获取到第i个编码后视频帧时,检测所述第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同;若相同,则向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧;若不同,则生成与所述第i个编码后视频帧所关联的头文件对应的元数据消息,向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧所关联的头文件、所述第i个编码后视频帧所关联的头文件对应的元数据消息和所述第i个编码后视频帧;其中,所述i为大于1的整数。
7.一种视频流发送装置,其特征在于,应用于推流客户端中,所述推流客户端包括至少2个编码器,不同的编码器用于对不同分辨率的视频帧执行编码处理;
所述装置包括:
编码模块,用于采用当前启用的第一编码器对第一原始视频帧执行编码处理,得到第一编码后视频帧;
获取模块,用于在所述第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时,获取所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
生成模块,用于生成所述第一编码后视频帧所关联的头文件,所述头文件中包括所述第一编码后视频帧对应的参数集;
发送模块,用于向流媒体服务器发送所述头文件和所述第一编码后视频帧,
所述装置还包括:
切换模块,用于在检测到视频播放场景由第一场景变更为第二场景时,将所述第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理,
其中,所述第一场景对应于主播单人直播,所述第二场景对应于竞技或连麦,
所述编码模块,还用于采用所述第二编码器对第二原始视频帧执行编码处理,得到第二编码后视频帧,其中,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧,所述关键帧为在通过解码器单独解码视频帧后能得到对应的原始视频帧的编码后视频帧。
8.一种视频流发送装置,其特征在于,应用于流媒体服务器中,所述装置包括:
接收模块,用于接收推流客户端发送的视频数据,所述视频数据为头文件或编码后视频帧;其中,所述头文件由所述推流客户端在检测到当前编码得到的第一编码后视频帧的分辨率与前一个编码后视频帧的分辨率不同时生成,所述头文件中包含有所述第一编码后视频帧对应的参数集,所述第一编码后视频帧对应的参数集中包括所述第一编码后视频帧所采用的编码参数;
发送模块,用于向第一拉流客户端或者下一级的第一流媒体服务器转发所述视频数据,
其中,所述推流客户端用于在检测到视频播放场景由第一场景变更为第二场景时,将第一编码器切换为第二编码器;其中,所述第一场景下采用所述第一编码器执行编码处理,所述第二场景下采用所述第二编码器执行编码处理,
其中,所述第一场景对应于主播单人直播,所述第二场景对应于竞技或连麦,所述第二编码器编码得到的首个第二编码后视频帧被编码为关键帧,所述关键帧为在通过解码器单独解码视频帧后能得到对应的原始视频帧的编码后视频帧。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:生成模块;
所述生成模块,用于当所述视频数据为所述头文件时,生成与所述头文件对应的元数据消息,所述元数据消息中包括所述参数集,所述元数据消息可被Flash播放器识别;
所述发送模块,还用于向所述第一拉流客户端或者所述下一级的第一流媒体服务器发送所述元数据消息。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
添加模块,用于当所述视频数据为所述头文件时,在头文件队列的尾部添加所述头文件;
所述添加模块,还用于当所述视频数据为所述编码后视频帧时,为所述编码后视频帧添加属性信息,所述属性信息用于指示所述编码后视频帧所关联的头文件;将所述编码后视频帧所关联的头文件的被引用次数加1;在视频帧队列的尾部添加所述编码后视频帧。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测所述视频帧队列的长度是否超过预设阈值;
删除模块,用于在所述视频帧队列的长度超过所述预设阈值时,从所述视频帧队列的头部开始,将第一个属于关键帧的编码后视频帧,以及所述第一个属于关键帧的编码后视频帧和第二个属于关键帧的编码后视频帧之间的不属于关键帧的编码后视频帧删除;
所述删除模块,还用于对于每一个已删除的编码后视频帧,将所述已删除的编码后视频帧所关联的头文件的被引用次数减1;
所述删除模块,还用于当存在被引用次数为0的头文件时,将所述被引用次数为0的头文件从所述头文件队列中删除。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:获取模块;
所述获取模块,用于当接收到第二拉流客户端或者下一级的第二流媒体服务器发送的视频获取请求时,从所述视频帧队列的头部开始逐个获取编码后视频帧;
生成模块,还用于当获取到第1个编码后视频帧时,生成与所述第1个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第1个编码后视频帧所关联的头文件、所述第1个编码后视频帧所关联的头文件对应的元数据消息和所述第1个编码后视频帧;
检测模块,还用于当获取到第i个编码后视频帧时,检测所述第i个编码后视频帧所关联的头文件与第i-1个编码后视频帧所关联的头文件是否相同;若相同,则通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧;若不同,则通过所述生成模块生成与所述第i个编码后视频帧所关联的头文件对应的元数据消息,并通过所述发送模块向所述第二拉流客户端或者所述下一级的第二流媒体服务器发送所述第i个编码后视频帧所关联的头文件、所述第i个编码后视频帧所关联的头文件对应的元数据消息和所述第i个编码后视频帧;其中,所述i为大于1的整数。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1所述的视频流发送方法,或者,如权利要求2至6任一项所述的视频流发送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710818448.8A CN107454416B (zh) | 2017-09-12 | 2017-09-12 | 视频流发送方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710818448.8A CN107454416B (zh) | 2017-09-12 | 2017-09-12 | 视频流发送方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107454416A CN107454416A (zh) | 2017-12-08 |
CN107454416B true CN107454416B (zh) | 2020-06-30 |
Family
ID=60495483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710818448.8A Active CN107454416B (zh) | 2017-09-12 | 2017-09-12 | 视频流发送方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107454416B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109982140A (zh) * | 2017-12-28 | 2019-07-05 | 优酷网络技术(北京)有限公司 | 视频播放方法及装置 |
CN108848060B (zh) | 2018-05-17 | 2021-08-24 | 上海哔哩哔哩科技有限公司 | 一种多媒体文件处理方法、处理系统及计算机可读存储介质 |
CN109068172A (zh) * | 2018-08-01 | 2018-12-21 | 威创集团股份有限公司 | 处理器开窗方法、装置、设备及可读存储介质 |
CN109462761A (zh) * | 2018-10-30 | 2019-03-12 | 视联动力信息技术股份有限公司 | 一种视频解码方法及装置 |
CN111836076B (zh) * | 2019-04-18 | 2023-01-20 | 腾讯科技(深圳)有限公司 | 视频分辨率切换方法及装置、电子设备 |
CN110430446B (zh) * | 2019-07-26 | 2021-09-14 | 东软集团股份有限公司 | 视频处理方法、装置、设备和计算机可读存储介质 |
CN110636326A (zh) * | 2019-11-14 | 2019-12-31 | 广州酷狗计算机科技有限公司 | 直播视频处理方法及装置、存储介质 |
CN112995746B (zh) * | 2019-12-18 | 2022-09-09 | 华为技术有限公司 | 视频处理方法、装置与终端设备 |
CN111629277B (zh) * | 2020-04-15 | 2024-06-14 | 视联动力信息技术股份有限公司 | 视频数据传输方法、装置及计算机可读存储介质 |
CN111510720A (zh) * | 2020-04-24 | 2020-08-07 | 深圳市即构科技有限公司 | 实时流媒体数据的传输方法、电子装置及服务器 |
CN111711833B (zh) * | 2020-07-28 | 2022-04-26 | 广州方硅信息技术有限公司 | 直播视频流推送控制方法、装置、设备及存储介质 |
CN111741298B (zh) * | 2020-08-26 | 2020-12-01 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、电子设备及可读存储介质 |
CN114827669B (zh) * | 2022-03-31 | 2023-08-18 | 杭州网易智企科技有限公司 | 一种视频数据的传输方法、装置、介质及设备 |
CN115695385B (zh) * | 2022-12-29 | 2023-03-21 | 北京海誉动想科技股份有限公司 | 视频数据的处理方法及装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201118848Y (zh) * | 2007-10-29 | 2008-09-17 | 神州亿品科技有限公司 | 列车视频监控摄像装置的控制设备 |
CN101371584A (zh) * | 2006-01-09 | 2009-02-18 | 汤姆森特许公司 | 提供用于多视图视频编码的降低分辨率的更新模式的方法和装置 |
CN102724551A (zh) * | 2012-06-13 | 2012-10-10 | 天脉聚源(北京)传媒科技有限公司 | 一种视频编码系统和方法 |
WO2013168414A1 (ja) * | 2012-05-11 | 2013-11-14 | パナソニック株式会社 | 音信号ハイブリッドエンコーダ、音信号ハイブリッドデコーダ、音信号符号化方法、及び音信号復号方法 |
CN105959700A (zh) * | 2016-05-31 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 视频图像编码的方法和装置 |
CN107018413A (zh) * | 2016-01-28 | 2017-08-04 | 安讯士有限公司 | 视频编码方法和视频编码器系统 |
-
2017
- 2017-09-12 CN CN201710818448.8A patent/CN107454416B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101371584A (zh) * | 2006-01-09 | 2009-02-18 | 汤姆森特许公司 | 提供用于多视图视频编码的降低分辨率的更新模式的方法和装置 |
CN201118848Y (zh) * | 2007-10-29 | 2008-09-17 | 神州亿品科技有限公司 | 列车视频监控摄像装置的控制设备 |
WO2013168414A1 (ja) * | 2012-05-11 | 2013-11-14 | パナソニック株式会社 | 音信号ハイブリッドエンコーダ、音信号ハイブリッドデコーダ、音信号符号化方法、及び音信号復号方法 |
CN102724551A (zh) * | 2012-06-13 | 2012-10-10 | 天脉聚源(北京)传媒科技有限公司 | 一种视频编码系统和方法 |
CN107018413A (zh) * | 2016-01-28 | 2017-08-04 | 安讯士有限公司 | 视频编码方法和视频编码器系统 |
CN105959700A (zh) * | 2016-05-31 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 视频图像编码的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107454416A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107454416B (zh) | 视频流发送方法和装置 | |
CN111544886B (zh) | 一种画面显示的方法以及相关装置 | |
CN108737908B (zh) | 一种媒体播放方法、装置及存储介质 | |
WO2018192415A1 (zh) | 数据的直播方法、相关设备及系统 | |
WO2017008627A1 (zh) | 多媒体直播方法、装置和系统 | |
CN104618794B (zh) | 播放视频的方法和装置 | |
US11202066B2 (en) | Video data encoding and decoding method, device, and system, and storage medium | |
CN109151494B (zh) | 多媒体数据传输方法、多媒体采集设备及服务器 | |
CN111866433B (zh) | 视频源切换方法、播放方法、装置、设备和存储介质 | |
CN105430424A (zh) | 一种视频直播的方法、装置和系统 | |
WO2019114724A1 (zh) | 一种相机缩略图生成的方法、移动终端及存储介质 | |
WO2018205786A1 (zh) | 分享录屏视频的方法、装置及设备 | |
CN110248245B (zh) | 一种视频定位方法、装置、移动终端及存储介质 | |
CN112312144B (zh) | 一种直播方法、装置、设备和存储介质 | |
CN108900855A (zh) | 直播内容录制方法及装置 | |
JP2021505081A (ja) | ビデオ伝送方法、ビデオ伝送装置、およびビデオ伝送システム、ならびにコンピュータ可読記憶媒体 | |
CN109495769B (zh) | 视频通信方法、终端、智能电视、服务器及存储介质 | |
CN110636337B (zh) | 视频图像的截取方法、装置及系统 | |
CN110418209B (zh) | 一种应用于视频传输的信息处理方法及终端设备 | |
US12061662B2 (en) | Methods, apparatuses and systems for displaying alarm file | |
CN113873187B (zh) | 跨终端录屏方法、终端设备及存储介质 | |
WO2015062400A1 (zh) | 视频通道分配管理方法和相关设备及通信系统 | |
CN116939212A (zh) | 视频处理方法、装置、计算机可读存储介质及计算机设备 | |
CN106330875B (zh) | 消息显示方法及装置 | |
CN111372127B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 510660 Guangzhou City, Guangzhou, Guangdong, Whampoa Avenue, No. 315, self - made 1-17 Applicant after: Guangzhou KuGou Networks Co., Ltd. Address before: 510000 B1, building, No. 16, rhyme Road, Guangzhou, Guangdong, China 13F Applicant before: Guangzhou KuGou Networks Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |