多媒体数据的发送方法、装置、设备、介质及程序产品

专利类型 发明公开 法律事件 公开;
专利有效性 公开 当前状态 公开
申请号 CN202310471966.2 申请日 2023-04-26
公开(公告)号 CN118870120A 公开(公告)日 2024-10-29
申请人 腾讯科技(深圳)有限公司; 申请人类型 企业
发明人 李剑; 张鹏; 第一发明人 李剑
权利人 腾讯科技(深圳)有限公司 权利人类型 企业
当前权利人 腾讯科技(深圳)有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:广东省 城市 当前专利权人所在城市:广东省深圳市
具体地址 当前专利权人所在详细地址:广东省深圳市南山区高新区科技中一路腾讯大厦35层 邮编 当前专利权人邮编:518057
主IPC国际分类 H04N21/4402 所有IPC国际分类 H04N21/4402H04N21/647H04N21/643
专利引用数量 0 专利被引用数量 0
专利权利要求数量 13 专利文献类型 A
专利代理机构 北京三高永信知识产权代理有限责任公司 专利代理人 张所明;
摘要 本 申请 公开了一种多媒体数据的发送方法、装置、设备、介质及程序产品,涉及数据发送领域。该方法包括:按照 抽取 周期从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的第一多媒体数据缓存至传输层;按照发送周期将传输层缓存的多媒体数据发送至接收端;响应于传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的多媒体数据进行丢弃处理;从多媒体数据集中抽取符合第二数据要求的第二多媒体数据。在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费。
权利要求

1.一种多媒体数据的发送方法,其特征在于,所述方法包括:
获取多媒体文件对应的多媒体数据集,所述多媒体数据集中包括多个多媒体数据,所述多个多媒体数据包括音频数据和视频数据中的至少一种;
按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的所述第一多媒体数据缓存至传输层,所述传输层用于提供与接收端之间网络通信的数据传输服务,其中,单个抽取周期抽取m个第一多媒体数据;
按照发送周期将所述传输层缓存的所述多媒体数据发送至所述接收端,其中,单个发送周期发送n个多媒体数据,m和n为正整数;
响应于所述传输层缓存的多媒体数据的数据量达到第一预设数量,对所述传输层缓存的多媒体数据进行丢弃处理;
从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的所述第二多媒体数据缓存至所述传输层,所述多媒体数据集中符合所述第一数据要求的多媒体数据的数据量大于所述多媒体数据集中符合所述第二数据要求的多媒体数据的数据量。
2.根据权利要求1所述的方法,其特征在于,所述符合第一数据要求的第一多媒体数据包括所述多媒体数据集中的全部多媒体数据;
所述按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,包括:
按照所述抽取周期从所述多媒体数据集中顺序抽取多媒体数据。
3.根据权利要求1所述的方法,其特征在于,所述获取多媒体文件对应的多媒体数据集,包括:
对所述多媒体文件进行压缩编码,得到多媒体数据集,所述多媒体数据集中包括关键数据和非关键帧数据,所述关键帧数据是指能够单独解码的数据,所述非关键帧数据是指依赖其他帧数据进行解码的数据。
4.根据权利要求3所述的方法,其特征在于,所述从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,包括:
从所述多媒体数据集中抽取所述关键帧数据,将所述关键帧数据作为所述第二多媒体数据。
5.根据权利要求3所述的方法,其特征在于,所述从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,包括:
从所述多媒体数据集中抽取所述关键帧数据以及依赖所述关键帧数据进行解码的非关键帧数据,将所述关键帧数据以及依赖所述关键帧数据进行解码的非关键帧数据作为所述第二多媒体数据。
6.根据权利要求1至5任一所述的方法,其特征在于,所述对所述传输层缓存的多媒体数据进行丢弃处理,包括:
清空所述传输层缓存的多媒体数据。
7.根据权利要求3至5任一所述的方法,其特征在于,所述对所述传输层缓存的多媒体数据进行丢弃处理,包括:
清空所述传输层缓存的除所述关键帧数据之外的多媒体数据。
8.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
响应于所述传输层缓存的多媒体数据的数据量未达到第一预设数量,接收所述接收端针对至少一个多媒体数据反馈的接收成功通知;
响应于所述接收成功通知,在当前时刻之后的最新一个抽取周期内,从所述多媒体数据集中抽取符合所述第一数据要求的第一数量的多媒体数据,所述第一数量是指在m的基础上增加所述至少一个多媒体数据对应的数据量。
9.根据权利要求1至5任一所述的方法,其特征在于,所述多媒体文件包括视频文件;
所述获取多媒体文件对应的多媒体数据集,包括:
获取所述视频文件;
将所述视频文件输入编码器进行编码处理,输出所述视频文件对应的多个视频帧
对所述多个视频帧进行打包处理,得到所述视频数据集,所述视频数据集中包括对所述多个视频帧进行打包处理得到的多个视频数据包,单个视频数据包中包括至少一个视频帧。
10.一种多媒体数据的发送装置,其特征在于,所述装置包括:
获取模,用于获取多媒体文件对应的多媒体数据集,所述多媒体数据集中包括多个多媒体数据,所述多个多媒体数据包括音频数据和视频数据中的至少一种;
抽取模块,用于按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的所述第一多媒体数据缓存至传输层,所述传输层用于提供与接收端之间网络通信的数据传输服务,其中,单个抽取周期抽取m个第一多媒体数据;
发送模块,用于按照发送周期将所述传输层缓存的多媒体数据发送至所述接收端,其中,单个发送周期发送n个多媒体数据,m和n为正整数;
丢弃模块,用于响应于所述传输层缓存的多媒体数据的数据量达到第一预设数量,对所述传输层缓存的多媒体数据进行丢弃处理;
所述抽取模块,还用于从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的所述第二多媒体数据缓存至所述传输层,所述多媒体数据集中符合所述第一数据要求的多媒体数据的数据量大于所述多媒体数据集中符合所述第二数据要求的多媒体数据的数据量。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行以实现如权利要求1至9任一所述的多媒体数据的发送方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一段计算机程序,所述至少一段计算机程序由处理器加载并执行以实现如权利要求1至9任一所述的多媒体数据的发送方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9任一所述的多媒体数据的发送方法。

说明书全文

多媒体数据的发送方法、装置、设备、介质及程序产品

技术领域

[0001] 本申请实施例涉及数据发送领域,特别涉及一种多媒体数据的发送方法、装置、设备、介质及程序产品。

背景技术

[0002] 在视频或音频播放场景中,当网络卡顿时,为了保持视频或音频播放的低延迟,需要对视频或音频帧进行丢帧处理。
[0003] 相关技术中,发送端向接收端发送视频帧的过程中,若网络异常,视频帧会堆积在网络传输层;当网络恢复后,网络传输层会将堆积的视频帧传输到接收端。若接收的视频帧过多,接收端会对接收到的视频帧进行丢弃处理。
[0004] 然而,相关技术中丢弃的视频帧会对网络传输资源造成浪费。发明内容
[0005] 本申请实施例提供了一种多媒体数据的发送方法、装置、设备、介质及程序产品,所述技术方案如下:
[0006] 一方面,提供了一种多媒体数据的发送方法,所述方法包括:
[0007] 获取多媒体文件对应的多媒体数据集,所述多媒体数据集中包括多个多媒体数据,所述多个多媒体数据包括音频数据和视频数据中的至少一种;
[0008] 按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的所述第一多媒体数据缓存至传输层,所述传输层用于提供与接收端之间网络通信的数据传输服务,其中,单个抽取周期抽取m个第一多媒体数据;
[0009] 按照发送周期将所述传输层缓存的多媒体数据发送至所述接收端,其中,单个发送周期发送n个多媒体数据,m和n为正整数;
[0010] 响应于所述传输层缓存的多媒体数据的数据量达到第一预设数量,对所述传输层缓存的多媒体数据进行丢弃处理;
[0011] 从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的所述第二多媒体数据缓存至所述传输层,所述多媒体数据集中符合所述第一数据要求的多媒体数据的数据量大于所述多媒体数据集中符合所述第二数据要求的多媒体数据的数据量。
[0012] 另一方面,提供了一种多媒体数据的发送装置,所述装置包括:
[0013] 获取模,用于获取多媒体文件对应的多媒体数据集,所述多媒体数据集中包括多个多媒体数据,所述多个多媒体数据包括音频数据和视频数据中的至少一种;
[0014] 抽取模块,用于按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的所述第一多媒体数据缓存至传输层,所述传输层用于提供与接收端之间网络通信的数据传输服务,其中,单个抽取周期抽取m个第一多媒体数据;
[0015] 发送模块,用于按照发送周期将所述传输层缓存的多媒体数据发送至所述接收端,其中,单个发送周期发送n个多媒体数据,m和n为正整数;
[0016] 丢弃模块,用于响应于所述传输层缓存的多媒体数据的数据量达到第一预设数量,对所述传输层缓存的多媒体数据进行丢弃处理;
[0017] 所述抽取模块,还用于从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的所述第二多媒体数据缓存至所述传输层,所述多媒体数据集中符合所述第一数据要求的多媒体数据的数据量大于所述多媒体数据集中符合所述第二数据要求的多媒体数据的数据量。
[0018] 另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述实施例中任一所述多媒体数据的发送方法。
[0019] 另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述实施例中任一所述的多媒体数据的发送方法。
[0020] 另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的多媒体数据的发送方法。
[0021] 本申请实施例提供的技术方案带来的有益效果至少包括:
[0022] 从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将其缓存至传输层进行传输;在多媒体数据的数据传输过程受限(例如:网络环境较差)的情况下,若当前传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的多媒体数据进行丢弃处理,之后从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将其缓存至传输层进行发送。一方面,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另一方面,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。附图说明
[0023] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024] 图1是本申请一个示例性实施例提供的实施环境的示意图;
[0025] 图2是本申请一个示例性实施例提供的多媒体数据的发送方法的流程图
[0026] 图3是本申请另一个示例性实施例提供的多媒体数据的发送方法的流程图;
[0027] 图4是本申请一个示例性实施例提供的多媒体数据的发送方法的整体架构图;
[0028] 图5是本申请一个示例性实施例提供的多媒体数据的发送方法的整体数据反馈流程图;
[0029] 图6是本申请又一个示例性实施例提供的多媒体数据的发送方法的流程图;
[0030] 图7是本申请一个示例性实施例提供的多媒体数据的发送装置的结构框图
[0031] 图8是本申请另一个示例性实施例提供的多媒体数据的发送装置的结构框图;
[0032] 图9是本申请一个示例性实施例提供的计算机设备的结构框图。

具体实施方式

[0033] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0034] 本申请中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
[0035] 在视频或音频播放场景中,当网络卡顿时,为了保持视频或音频播放的低延迟,需要对视频帧或音频帧进行丢帧处理。相关技术中,发送端向接收端发送视频帧的过程中,若网络异常,视频帧会堆积在网络传输层;当网络恢复后,网络传输层会将堆积的视频帧传输到接收端。若接收的视频帧过多,接收端会对接收到的视频帧进行丢弃处理。然而,相关技术中丢弃的视频帧会对网络传输资源造成浪费。
[0036] 本申请实施例提供了一种多媒体数据的发送方法,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另外,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0037] 本申请实施例提供的多媒体数据的发送方法可应用在实时音视频通信(Web Real‑Time Communications,WebRTC)框架下的任意应用场景,包括:视频会议、直播、在线教育、远程医疗、在线游戏、物联网、智能家居等。本申请实施例对此不加以限定。
[0038] 图1是本申请一个示例性实施例提供的实施环境示意图,如图1所示,该实施环境中涉及发送端110、接收端120、服务器130,发送端110和服务器130之间通过通信网络140连接,接收端120和服务器130之间通过通信网络140连接。其中,通信网络140可以是有线网络,还可以是无线网络,本申请实施例对此不加以限定。
[0039] 在一些实施例中,发送端110或者接收端120可以是智能手机、平板电脑笔记本电脑、台式计算机、智能家电、智能车载终端、智能音箱、录像机等,但并不局限于此。
[0040] 可选地,发送端110中安装和运行有支持多媒体文件采集和传输功能的第一应用程序,该第一应用程序可实现为直播类应用程序、线上会议应用程序、游戏应用程序、即时通讯应用程序、视频类应用程序、音乐播放应用程序、浏览器应用程序、社交应用程序等;或者,该第一应用程序实现为依赖宿主应用程序的小程序,宿主应用程序可以实现为上述任意程序,本申请实施例对此不加以限定。
[0041] 可选地,接收端120中安装和运行有多媒体文件传输和播放功能的第二应用程序,该第二应用程序可实现为直播类应用程序、线上会议应用程序、游戏应用程序、即时通讯应用程序、视频类应用程序、音乐播放应用程序、浏览器应用程序、社交应用程序等;或者,该第二应用程序实现为依赖宿主应用程序的小程序,宿主应用程序可以实现为上述任意程序,本申请实施例对此不加以限定。
[0042] 上述第一应用程序和第二应用程序可以是相同的应用程序,也可以是不同的应用程序。
[0043] 示意性的,以多媒体文件实现为视频文件为例进行说明,发送端110采集得到视频文件后,对视频文件进行编码处理,得到视频文件对应的多个视频帧;按照抽取周期从多个视频帧中抽取符合第一数据要求的第一视频帧,并将抽取到的第一视频帧缓存至发送端110对应的传输层;按照发送周期将当前传输层缓存的视频帧发送至服务器130,由服务器
130将视频帧转发至接收端120。接收端120接收到视频帧后,对其进行解码处理,并根据解码后的视频帧数据进行视频文件播放。
[0044] 在当前传输层缓存的视频帧的数据传输过程受限的情况下,当前传输层缓存的视频帧将会增加,当传输层缓存的视频帧的数据量达到第一预设数量,对当前传输层缓存的视频帧进行丢弃处理;并从多个视频帧中抽取符合第二数据要求的第二视频帧,将抽取到的第二视频帧缓存至发送端110对应的传输层,其中多个视频帧中符合第一数据要求的视频帧数量大于多个视频帧中符合第二数据要求的视频帧数量。
[0045] 可选地,将抽取到的第二视频帧缓存至发送端110对应的传输层之后,将当前传输层缓存的视频帧发送至服务器130,由服务器130将视频帧转发至接收端120。接收端120接收到视频帧后,对其进行解码处理,并根据解码后的视频帧数据进行视频文件播放。
[0046] 服务器130用于为发送端110中安装的第一应用程序以及接收端120中安装的第二应用程序提供后台服务。值得注意的是,服务器130能够是独立的物理服务器,也能够是多个物理服务器构成的服务器集群或者分布式系统,还能够是提供服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据人工智能平台等基础云计算服务的云服务器。
[0047] 其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模型应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。可选地,服务器130还可以实现为区块链系统中的节点
[0048] 需要进行说明的是,本申请在收集用户的相关数据(例如:视频数据、音频数据等)之前以及在收集用户的相关数据的过程中,都可以显示提示界面、弹窗或输出语音提示信息,该提示界面、弹窗或语音提示信息用于提示用户当前正在搜集其相关数据,使得本申请仅仅在获取到用户对该提示界面或者弹窗发出的确认操作后,才开始执行获取用户相关数据的相关步骤,否则(即未获取到用户对该提示界面或者弹窗发出的确认操作时),结束获取用户相关数据的相关步骤,即不获取用户的相关数据。换句话说,本申请所采集的所有用户数据都是在用户同意并授权的情况下进行采集的,且相关用户数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0049] 结合上述介绍和实施环境,图2是本申请实施例提供的一种多媒体数据的发送方法的流程图,本申请实施例中,以该方法由发送端执行为例进行说明,如图2所示,该方法包括:
[0050] 步骤201,获取多媒体文件对应的多媒体数据集。
[0051] 其中,多媒体数据集中包括多个多媒体数据,多个多媒体数据包括音频数据和视频数据中的至少一种。
[0052] 示意性的,获取指定视频文件对应的视频数据集,该视频数据集中包括指定视频文件对应的视频数据;或者,获取指定音频文件对应的音频数据集,该音频数据集中包括指定音频文件对应的音频数据;或者,获取指定视频文件对应的多媒体数据集,该多媒体数据集中包括指定视频文件的视频数据和指定视频文件的音频数据。
[0053] 可选地,对多媒体文件进行压缩编码,得到多媒体数据集。
[0054] 对多媒体文件进行压缩编码,得到多媒体数据集,多媒体数据集中包括关键帧数据和非关键帧数据,关键帧数据是指能够单独解码的数据,非关键帧数据是指依赖其他帧数据进行解码的数据。
[0055] 示意性的,缺少关键帧数据,多媒体文件播放时会卡顿,部分画面无法正常显示;缺少非关键帧数据,多媒体文件还可正常播放。
[0056] 可选地,上述多媒体数据包括多媒体数据帧,例如:视频帧、音频帧等,本申请实施例对此不加以限定。
[0057] 步骤202,按照抽取周期从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的第一多媒体数据缓存至传输层。
[0058] 其中,单个抽取周期抽取m个第一多媒体数据,m为正整数。
[0059] 在一些实施例中,符合第一数据要求的第一多媒体数据包括多媒体数据集中的全部多媒体数据;也即,多媒体数据集中的全部数据都可作为第一多媒体数据被抽取。
[0060] 可选地,按照抽取周期从多媒体数据集中顺序抽取多媒体数据。
[0061] 示意性的,按照抽取周期,从多媒体数据集中按照顺序依次抽取多媒体数据,将该抽取的多媒体数据作为第一多媒体数据。
[0062] 示意性的,假设抽取周期为1s,m为1,当前编码器输出有多媒体数据1、多媒体数据2和多媒体数据3(编号为编码器输出数据的顺序),0s时,未抽取数据,1s时,抽取多媒体数据1作为第一多媒体数据。
[0063] 抽取到第一多媒体数据后,将第一多媒体数据缓存至传输层。其中,传输层用于提供与接收端之间网络通信的数据传输服务。
[0064] 传输层是开放系统互连(Open System Interconnect,OSI)参考模型中的第四层,是网络体系结构中的关键层次之一。传输层中定义的数据传输协议包括:传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)、实时传输协议(Real Time Protocol,RTP)、实时传输控制协议(Real Time Control Protocol,RTCP)、实时流协议(Real Time Streaming Protocol,RTSP)等中的至少一种,本申请实施例对此不加以限定。对于在发送端的第一多媒体数据来说,当第一多媒体数据离开了网卡(网卡上装有处理器和存储器,是一块被设计用来允许计算机在网络上进行通信的计算机硬件)即进入了传输层。
[0065] 可选地,传输层中包括缓存区,缓存区用于缓存待发送的多媒体数据;则,按照抽取周期从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的第一多媒体数据缓存至传输层中的缓存区。
[0066] 步骤203,按照发送周期将传输层缓存的多媒体数据发送至接收端。
[0067] 其中,单个发送周期发送n个多媒体数据,n为正整数。
[0068] 示意性的,假设发送周期为2s,n为2,那么,当前传输层缓存的多媒体数据包括多媒体数据1、多媒体数据2和多媒体数据3,0s时,未发送数据,2s时,发送多媒体数据1和多媒体数据2至接收端。
[0069] 步骤204,响应于传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的多媒体数据进行丢弃处理。
[0070] 由于发送端和接收端之间通过网络进行通信,在没有网络或者弱网环境(即网络环境较差)下,多媒体数据会停止发送至接收端或者多媒体数据发送至接收端的速率会变慢。由于从多媒体数据集中抽取第一多媒体数据的过程不受网络环境的影响,那么,在传输层缓存的多媒体数据停止发送至接收端或者发送至接收端的速率变慢,且不断有新的多媒体数据被缓存至传输层的情况下,传输层缓存的多媒体数据将不断增加。
[0071] 示意性的,当传输层缓存的多媒体数据不断增加,且数据量达到第一预设数量时,发送端触发数据丢弃策略,即将当前传输层缓存的多媒体数据进行丢弃处理。
[0072] 可选地,对传输层缓存的多媒体数据进行丢弃处理的情况包括以下情况中的至少一种:
[0073] 情况一:清空传输层缓存的多媒体数据。
[0074] 示意性的,将缓存区的所有多媒体数据进行删除。
[0075] 情况二:清空传输层缓存的除关键帧数据之外的多媒体数据。
[0076] 示意性的,缓存区内缓存的多媒体数据可能包含非关键帧数据和关键帧数据,那么,将其中的非关键帧数据清空,保留关键帧数据。
[0077] 步骤205,从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的第二多媒体数据缓存至传输层。
[0078] 其中,多媒体数据集中符合第一数据要求的多媒体数据的数据量大于多媒体数据集中符合第二数据要求的多媒体数据的数据量。
[0079] 在一些实施例中,在对视频文件进行压缩编码的情况下,符合第二数据要求的数据是指多媒体数据集中的关键帧数据。
[0080] 可选地,将当前传输层缓存的多媒体数据进行丢弃处理后,从多媒体数据集中抽取关键帧数据,将关键帧数据作为第二多媒体数据。
[0081] 可选地,将抽取到的第二多媒体数据缓存至传输层后,响应于当前传输层缓存的多媒体数据达到第二预设数量,将第二预设数量的多媒体数据发送至接收端。
[0082] 其中,第二预设数量小于第一预设数量;可选地,将第二预设数量设置为n(即单个发送周期发送n个第一多媒体数据中的n)。
[0083] 示意性的,对于一段视频来说,在网络环境良好的情况下,可以将该段视频解码得到的所有视频帧按照顺序发送至接收端;在网络环境较差的情况下,可首先对堆积在传输层待发送的视频帧进行清空处理,后续,可仅将解码得到的关键视频帧发送至接收端,在保证视频可播放的情况下,降低视频播放的延迟。
[0084] 综上所述,本申请实施例提供的多媒体数据的发送方法,从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将其缓存至传输层进行传输;在多媒体数据的数据传输过程受限(例如:网络环境较差)的情况下,若当前传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的多媒体数据进行丢弃处理,之后从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将其缓存至传输层进行发送。一方面,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另一方面,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0085] 本申请实施例提供的方法,在传输层堆积的数据达到第一预设数量之前,会按照抽取周期从多媒体数据集中顺序抽取全量的多媒体数据,保证多媒体文件能够在接收端高质量的播放。
[0086] 本申请实施例提供的方法,会对多媒体数据集进行压缩编码,从而减小需要进行网络传输的多媒体数据的大小,节省了网络传输资源。
[0087] 本申请实施例提供的方法,在传输层堆积的数据达到第一预设数量之后,会从多媒体数据集中抽取关键帧数据进行传输,在保证多媒体文件正常播放的情况下,减少了后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0088] 本申请实施例提供的方法,在传输层堆积的数据达到第一预设数量之后,会清空当前传输层堆积的数据,减少需要传输的多媒体数据量,降低网络发送负载,避免对网络传输资源的浪费;另外,释放了传输层内的存储空间,避免传输层数据出现数据堵塞的情况。
[0089] 本申请实施例提供的方法,在传输层堆积的数据达到第一预设数量之后,会清空当前传输层堆积除关键帧数据之外的其他数据,在减少需要传输的多媒体数据量的同时,保留关键帧数据,避免接收端在播放多媒体文件时出现卡顿的情况。
[0090] 在一些可选的实施例中,接收端成功接收到多媒体数据后,会向发送端反馈接收成功的通知,从而发送端能够根据接收端的反馈,对单个抽取周期抽取的多媒体数据的数据量进行更新。图3是本申请实施例提供的一种多媒体数据的发送方法的流程图,本申请实施例中,以该方法由发送端执行为例进行说明,如图3所示,该方法包括:
[0091] 步骤301,获取多媒体文件对应的多媒体数据集。
[0092] 其中,多媒体数据集中包括多个多媒体数据,多个多媒体数据包括音频数据和视频数据中的至少一种。
[0093] 在一些实施例中,当多媒体数据包括多媒体数据帧的情况下,获取多媒体文件对应的多媒体数据集还包括:获取多媒体文件;将多媒体文件输入编码器中进行编码处理,得到多媒体数据集,多媒体数据集中包括多个多媒体数据帧。
[0094] 示意性的,获取到一段视频后,将这段视频输入到编码器中进行编码,得到多个视频帧,其中编码器包括H.264编码器、H.265编码器、VP9解码器、AV1编码器等中的任意一种,本申请实施例对此不加以限定。
[0095] 可选地,下面以多媒体文件包括视频文件为例进行说明:
[0096] 将视频文件输入编码器进行编码处理,得到视频文件对应的视频数据集,视频数据集中包括对视频文件进行编码得到的多个视频帧。
[0097] 其中,每个视频帧都对应有解码时间戳(Decoding Time Stamp,DTS)和显示时间戳(Presentation Time Stamp,PTS)。解码时间戳表示视频帧的解码时刻,相当于告诉接收端中的播放器什么时候解码这一帧的数据。显示时间戳表示将视频帧解码后得到的原始帧的显示时间,相当于告诉接收端中的播放器什么时候显示这一帧的数据。
[0098] 可选地,当视频文件进行压缩编码时,编码得到的多个视频帧中包括关键视频帧和非关键视频帧。
[0099] 示意性的,在对一段视频进行压缩编码时,可以通过编码相邻两个视频帧之间的差异,来减少数据量,那么,对于一段视频来说,其编码得到的多个视频帧主要包括以下类型:
[0100] 1、帧内编码帧。
[0101] 帧内编码帧又被称为I帧,I帧通常是每个图片组(Group Of Pictures,GOP)的第1帧。I帧无需其他视频帧即可解码,可以说是一张完整的视频帧图像;I帧用于随机访问,并用作其他视频帧解码的参考。
[0102] 2、前向预测编码帧。
[0103] 前向预测编码帧又被称为P帧,P帧表示与前一帧(I帧或P帧)之间的差异,需要参考前面的I帧或前面的P帧才能解码得到完整的视频帧图像。
[0104] 3、双向预测编码帧。
[0105] 双向预测编码帧又被称为B帧,B帧表示与前后两帧的差异,需要参考前面的I帧或前面的P帧以及后面的P帧才能解码得到完整的视频帧图像。
[0106] 针对上述提到的图片组:对视频进行分帧时,通常会将视频切分为多段子视频进行分帧,每一段子视频分帧得到的多个视频帧即为一个图片组。每个图片组都以I帧为起始点(即子视频分帧得到的第一个视频帧),其他为P帧和B帧。
[0107] 可选地,在上述编码方式下,关键视频帧(即关键帧数据)为帧内编码帧;非关键视频帧(即非关键帧数据)为前向预测编码帧和双向预测编码帧。
[0108] 可选地,上述获取多媒体文件的方法包括以下情况中的至少一种:
[0109] 1、获取多媒体采集设备采集的多媒体文件。
[0110] 其中,多媒体采集设备包括摄像头、麦克等,本申请实施例对此不加以限定。
[0111] 示意性的,在进行通话或者直播时,通过终端设备中的摄像头采集环境画面作为视频文件,和/或,通过麦克风采集环境声音作为音频文件。
[0112] 2、获取当前终端显示屏中显示内容对应的多媒体文件。
[0113] 示意性的,在进行录屏分享时,采集终端显示屏的显示内容作为视频文件,和/或,采集终端显示屏的显示内容对应的音频播放内容作为音频文件。
[0114] 3、获取当前终端存储的多媒体文件。
[0115] 示意性的,当前终端在本地存储的多媒体文件,该多媒体文件可以是通过移动存储设备上传至当前终端的文件。
[0116] 示意性的,请参考图4,其示出了一种多媒体数据的发送方法的整体架构示意图,通过发送端中的多媒体数据采集设备401获取视频,并将视频输入到编码器402中进行压缩编码处理,得到视频数据集,该视频数据集中包括多个视频帧。
[0117] 可选地,每个多个多媒体数据帧对应有第一帧类型,第一帧类型用于标识多媒体数据帧属于视频帧还是音频帧;每个多个多媒体数据帧还对应有第二帧类型,第二帧类型用于标识多媒体数据帧属于关键帧数据帧还是非关键帧数据帧。每个多个多媒体数据帧还对应有帧时间,其中帧时间包括:解码时间戳和显示时间戳。
[0118] 步骤302,按照抽取周期从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的第一多媒体数据缓存至传输层的缓存区。
[0119] 其中,单个抽取周期抽取m个第一多媒体数据,m为正整数。
[0120] 以多媒体数据集实现为视频数据集为例进行说明:
[0121] 在一些实施例中,符合第一数据要求的数据是指视频数据集中的所有视频帧。也即,视频数据集中的全部视频帧都可作为第一视频帧被抽取。
[0122] 可选地,按照抽取周期,从编码器输出的多个视频帧中按照顺序依次抽取视频帧,将该抽取的视频帧作为第一视频帧,并将第一视频帧缓存至传输层的缓存区,缓存区内存储的视频帧为待发送的视频帧。
[0123] 在m为1的情况下,按照抽取周期,从编码器输出的多个视频帧中按照顺序逐个抽取视频帧,将该抽取的视频帧作为第一视频帧,并将第一视频帧缓存至传输层的缓存区。
[0124] 如图4所示,每间隔一个抽取周期,从编码器402输出的多个视频帧中,按照顺序依次抽取1个视频帧缓存至传输层对应的缓存区403中。
[0125] 步骤303,按照发送周期将传输层缓存的多媒体数据发送至接收端。
[0126] 其中,单个发送周期发送n个多媒体数据,n为正整数。
[0127] 可选地,在传输层缓存的多媒体数据的数据量未达到第一预设数量且传输层缓存的多媒体数据的数据量达到第二预设数量的情况下,按照发送周期将传输层缓存的第一多媒体数据发送至接收端。其中,第二预设数量即为n。
[0128] 示意性的,判断当前传输层的缓存区缓存的视频帧的数量,若缓存区缓存的视频帧数量未达到第一预设数量,且达到第二预设数量,则按照发送周期将传输层缓存的第二预设数量的视频帧发送至接收端。
[0129] 如图4所示,每间隔一个发送周期,从缓存区403中缓存的视频帧中按照顺次依次抽取n个视频帧写入传输协议中,该传输协议可实现为TCP。
[0130] 当发送端和接收端之间建立了TCP连接,假设n个视频帧为视频帧7、视频帧8、视频帧9(数字代表视频帧的顺序),那么,会将视频帧8、视频帧9和视频帧10发送到接收端(此时发送的顺序可以不按照数字的顺序,可以是乱序的);若接收端确认接收到视频帧,在TCP中会对对应的视频帧进行确认,当确认了视频帧8、视频帧9和视频帧10后,对视频帧8、视频帧9和视频帧10按照数字顺序进行排序,即将可能出现的乱序数据整理为顺序数据。最后,接收端可以顺序读取视频帧8、视频帧9和视频帧10。
[0131] 步骤304,响应于传输层缓存的多媒体数据的数据量未达到第一预设数量,接收接收端针对至少一个多媒体数据反馈的接收成功通知。
[0132] 示意性的,在当前传输层缓存的多媒体数据的数据量未达到第一预设数量的情况下,说明多媒体数据能够按照正常的传输速度被发送至接收端,当接收端成功接收到指定多媒体数据后,会向发送端反馈消息,从而通知发送端,其已经成功接收到指定多媒体数据。
[0133] 可选地,接收接收端针对单个多媒体数据反馈的接收成功通知;或者,接收接收端针对多个多媒体数据反馈的接收成功通知。
[0134] 步骤305,响应于接收成功通知,在当前时刻之后的最新一个抽取周期内,从多媒体数据集中抽取符合第一数据要求的第一数量的多媒体数据。
[0135] 其中,第一数量是指在m的基础上增加至少一个多媒体数据对应的数据量。
[0136] 如图4所示,此时接收端的帧接收区域404读取的帧为视频帧6,表示接收端已成功接收视频帧6,则接收端会向发送端反馈对视频帧6的接收成功通知。当发送端接收到该接收成功通知,则可以在当前时刻之后的最新一个抽取周期内,从编码器输出的多个视频帧中按照顺序依次抽取m+1个视频帧至传输层对应的缓存区403中。
[0137] 如图4所示,当前视频帧1、视频帧2、视频帧3、视频帧4、视频帧5正按照顺序在接收端中的播放器内进行渲染播放。
[0138] 步骤306,响应于传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的第一多媒体数据进行丢弃处理。
[0139] 由于发送端和接收端之间通过网络进行通信,在没有网络或者弱网环境(即网络环境较差)下,多媒体数据会停止发送至接收端或者多媒体数据发送至接收端的速率会变慢。由于从多媒体数据集中抽取第一多媒体数据的过程不受网络环境的影响,那么,在传输层缓存的多媒体数据停止发送至接收端或者发送至接收端的速率变慢,且不断有新的多媒体数据被缓存至传输层的情况下,传输层缓存的多媒体数据将不断增加。
[0140] 示意性的,当传输层缓存的视频帧不断增加,且数据量达到第一预设数量时,发送端触发数据丢弃策略,即将当前传输层缓存的视频帧全部清空。如图4所示,若当前传输层对应的缓存区403中缓存的视频帧达到第一预设数量,清空缓存区403中的视频帧。
[0141] 步骤307,从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的第二多媒体数据缓存至传输层。
[0142] 其中,多媒体数据集中符合第一数据要求的数据量大于多媒体数据集中符合第二数据要求的数据量。
[0143] 可选地,每间隔一个抽取周期,从多媒体数据集中抽取一个符合第二数据要求的第二多媒体数据,并将抽取到的第二多媒体数据缓存至传输层。
[0144] 在一些实施例中,将当前传输层缓存的多媒体数据清空后,从多媒体数据集中抽取关键帧数据作为第二多媒体数据。
[0145] 可选地,将当前传输层缓存的视频帧清空后,从解码器解码得到的多个视频帧中抽取I帧作为第二视频帧,并将抽取到的I帧缓存至传输层。
[0146] 在另一些实施例中,将当前传输层缓存的多媒体数据清空后,从多媒体数据集中抽取关键帧数据以及依赖关键帧数据进行解码的非关键帧数据,将关键帧数据以及依赖关键帧数据进行解码的非关键帧数据作为第二多媒体数据。
[0147] 可选地,将当前传输层缓存的视频帧清空后,从解码器解码得到的多个视频帧中依次抽取I帧和P帧作为第二视频帧,并将抽取到的I帧和P帧缓存至传输层。
[0148] 在一些实施例中,将当前传输层缓存的多媒体数据清空后,对于使用何种多媒体数据库抽取方案,可通过检测实时网速来确定。
[0149] 可选地,响应于当前实时网速处于第一网速区间,将当前传输层缓存的多媒体数据清空后,从多媒体数据集中抽取关键帧数据;响应于当前实时网速处于第二网速区间,将当前传输层缓存的多媒体数据清空后,从多媒体数据集中抽取关键帧数据以及依赖关键帧数据进行解码的非关键帧数据。
[0150] 其中,第一网速区间内的所有网速小于第二网速区间内的所有网速。
[0151] 步骤308,响应于当前传输层缓存的多媒体数据达到第二预设数量,将第二预设数量的多媒体数据发送至接收端。
[0152] 在一些实施例中,响应于当前传输层缓存的第二多媒体数据达到第二预设数量,将第二预设数量的第二多媒体数据发送至接收端。
[0153] 示意性的,持续从编码器中获取第一视频帧(即关键视频帧,例如:I帧),当第二视频帧的数量达到第二预设数量(由于此前缓存区内的视频帧已被清空,故(1)当前缓存区内的视频帧都是第二视频帧;(2)当前缓存区内的视频帧一定小于第一预设数量,故不会触发数据丢弃策略),将第二预设数量的第二视频帧发送至接收端。
[0154] 可选地,当缓存区内第二视频帧的数量达到第二预设数量,后续按照抽取周期从多媒体数据集中抽取符合第一数据要求的多媒体数据,并将抽取到的第一多媒体数据缓存至传输层。
[0155] 在另一些实施例中,响应于当前传输层缓存的第二多媒体数据达到第一预设数量,且当前传输层缓存的多媒体数据达到第二预设数量,将第二预设数量的多媒体数据发送至接收端。
[0156] 其中,第一预设数量小于第二预设数量,且第二预设数量的多媒体数据中包括第一预设数量的第二多媒体数据。
[0157] 示意性的,持续从编码器中获取第二视频帧,当关键视频帧的数量达到第一预设数量,后续从编码器中获取第一视频帧,在当前传输层缓存的第一视频帧和第二视频帧达到第二预设数量,将当前传输层缓存的第一视频帧和第一预设数量的第二视频帧发送至接收端。
[0158] 综上所述,本申请实施例提供的多媒体数据的发送方法,从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将其缓存至传输层进行传输;在第一多媒体数据的数据传输过程受限(例如:网络环境较差)的情况下,若当前传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的第一多媒体数据进行丢弃处理,之后从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将其缓存至传输层进行发送。一方面,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另一方面,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0159] 本申请实施例提供的方法,在传输层堆积的数据达到第一预设数量之后,会从多媒体数据集中抽取关键帧数据和部分非关键帧数据进行传输,其中,部分非关键帧数据为依赖关键帧数据进行解码的数据,也就是说,在传输关键帧数据的情况下,还会传输一些与关键帧数据关联解码的非关键帧数据,从而提高了多媒体文件在接收端进行播放时的流畅度。
[0160] 本申请实施例提供的方法,能够根据接收端反馈的针对多媒体数据的接收成功通知,快速感知网络发送情况,对传输层缓存多媒体数据的速率进行调整,对传输层整体缓存的数据量进行自动控制,降低在传输层数据堆积的概率。
[0161] 示意性的,请参考图5,其示出了本申请实施例提供的一种传输层丢帧策略的整体数据反馈流程图,如图5所示,该流程包括如下步骤:
[0162] S501,开始。
[0163] 即开始判断是否在传输层执行丢帧策略。
[0164] S502,判断传输层缓存帧数是否小于B。
[0165] 示意性的,判断当前传输层的缓存区缓存的视频帧数量是否小于B,B即为上述第一预设数量,B为可配置的参数。
[0166] S503,若传输层缓存帧数小于B,判断传输层缓存帧数是否小于A。
[0167] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量小于B,继续判断当前传输层的缓存区缓存的视频帧数量是否小于A,A即为上述第二预设数量,A为可配置的参数,A<B。
[0168] S504,若传输层缓存帧数小于A,缓存数据到缓存区。
[0169] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量小于A,说明当前传输层缓存视频帧数量不够传输协议单次传输的数量,则缓存区持续从编码器处获取视频帧,直到缓存区缓存的视频帧数量达到A。
[0170] S505,结束。
[0171] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量小于A,说明当前缓存区堆积的视频帧较少,网络环境较好,不需要在传输层执行丢帧策略,结束流程。
[0172] S506,若传输层缓存帧数大于或者等于A,交付数据到传输层。
[0173] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量大于或者等于A,说明当前传输层缓存视频帧数量已足够传输协议单次传输的数量,那么将交付数量A的视频帧到传输协议进行数据传输。
[0174] S505,结束。
[0175] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量大于或者等于A但小于B,说明当前缓存区堆积的视频帧仍较少,网络环境较好,不需要在传输层执行丢帧策略,结束流程。
[0176] S507,若传输层缓存帧数大于或者等于B,清空缓存帧,通知编码器从关键帧给数据。
[0177] 示意性的,当判断当前传输层的缓存区缓存的视频帧数量大于或者等于B,说明当前缓存区堆积的视频帧仍较多,网络环境较差,需要在传输层执行丢帧策略,即清空当前缓存区的视频帧,且从编码器处仅获取关键视频帧到缓存区。
[0178] S505,结束。
[0179] 可选地,当从编码器处仅获取关键视频帧达到数量A,结束流程。或者,判断当前缓存区缓存的视频帧数量小于B,结束流程。
[0180] 在一些可选的实施例中,多媒体数据集中的多个多媒体数据还可实现为多媒体数据包。图6是本申请实施例提供的一种多媒体数据的发送方法的流程图,本申请实施例中,以该方法由发送端执行为例进行说明,如图6所示,该方法包括:
[0181] 步骤601,获取多媒体文件。
[0182] 其中,多媒体文件包括视频文件和音频文件中的至少一种。
[0183] 可选地,上述获取多媒体文件的方法包括以下情况中的至少一种:
[0184] 1、获取多媒体采集设备采集的多媒体文件。
[0185] 其中,多媒体采集设备包括摄像头、麦克风等,本申请实施例对此不加以限定。
[0186] 示意性的,在进行通话或者直播时,通过终端设备中的摄像头采集环境画面作为视频文件,和/或,通过麦克风采集环境声音作为音频文件。
[0187] 2、获取当前终端显示屏中显示内容对应的多媒体文件。
[0188] 示意性的,在进行录屏分享时,采集终端显示屏的显示内容作为视频文件,和/或,采集终端显示屏的显示内容对应的音频播放内容作为音频文件。
[0189] 3、获取当前终端存储的多媒体文件。
[0190] 示意性的,当前终端在本地存储的多媒体文件,该多媒体文件可以是通过移动存储设备上传至当前终端的文件。
[0191] 步骤602,将多媒体文件输入编码器中进行编码处理,得到多个多媒体数据帧。
[0192] 可选地,以多媒体文件实现为视频文件为例进行说明:将视频文件输入编码器进行编码处理,输出视频文件对应的多个视频帧。
[0193] 对多个视频帧的说明可参考步骤302,此处不再赘述。
[0194] 步骤603,将多个多媒体数据帧进行打包处理,得到多媒体数据集。
[0195] 其中,多媒体数据集中包括多个多媒体数据包,单个多媒体数据包中包括一个或者多个多媒体数据帧。
[0196] 可选地,对多个视频帧进行打包处理,得到视频数据集,视频数据集中包括对多个视频帧进行打包处理得到的多个视频数据包,单个视频数据包中包括至少一个视频帧。
[0197] 示意性的,获取到一段视频后,将这段视频输入到编码器中进行编码,得到多个视频帧,然后将多个视频帧封装成多个视频数据包,每个视频数据包中可以包含一个视频帧,也可以包含多个视频帧。可选地,根据RTP协议或者RTCP协议将多个视频帧封装成多个视频数据包。
[0198] 步骤604,按照抽取周期从多媒体数据集中抽取符合第三数据要求的第一多媒体数据包,并将抽取到的第一多媒体数据包缓存至传输层。
[0199] 其中,单个抽取周期抽取p个第一多媒体数据包,p为正整数。
[0200] 以多媒体数据集实现为视频数据集为例进行说明:
[0201] 在一些实施例中,符合第三数据要求的数据是指视频数据集中的所有视频数据包。也即,视频数据集中的全部视频数据包都可作为第一视频数据包被抽取。
[0202] 可选地,按照抽取周期,从多个视频数据包中按照顺序依次抽取视频数据包,将该抽取的视频数据包作为第一视频数据包,并将第一视频数据包缓存至传输层的缓存区,缓存区内存储的视频数据包为待发送的视频数据包。
[0203] 在m为1的情况下,按照抽取周期,从多个视频数据包中按照顺序逐个抽取视频数据包,将该抽取的视频数据包作为第一视频数据包,并将第一视频数据包缓存至传输层的缓存区。
[0204] 步骤605,按照发送周期将传输层缓存的第一多媒体数据包发送至接收端。
[0205] 其中,单个发送周期发送q个第一多媒体数据包,q为正整数。
[0206] 可选地,在传输层缓存的多媒体视频数据包的数据量未达到第一预设数量且传输层缓存的多媒体数据的数据量达到第二预设数量的情况下,按照发送周期将传输层缓存的第一多媒体数据发送至接收端。其中,第二预设数量即为q。
[0207] 对第一多媒体数据包的具体传输过程可参考步骤303中对视频帧的传输过程,此处不再赘述。
[0208] 步骤606,响应于传输层缓存的多媒体数据包的数据量达到第一预设数量,对传输层缓存的第一多媒体数据包进行丢弃处理。
[0209] 由于发送端和接收端之间通过网络进行通信,在没有网络或者弱网环境(即网络环境较差)下,多媒体数据包会停止发送至接收端或者多媒体数据包发送至接收端的速率会变慢。由于从多媒体数据集中抽取第一多媒体数据包的过程不受网络环境的影响,那么,在传输层缓存的多媒体数据包停止发送至接收端或者发送至接收端的速率变慢,且不断有新的多媒体数据包被缓存至传输层的情况下,传输层缓存的多媒体数据包将不断增加。
[0210] 示意性的,当传输层缓存的多媒体数据包不断增加,且数据量达到第一预设数量时,发送端触发数据丢弃策略,即将当前传输层缓存的多媒体数据包全部清空。
[0211] 步骤607,从多媒体数据集中抽取符合第四数据要求的第二多媒体数据包,并将抽取到的第二多媒体数据包缓存至传输层。
[0212] 其中,多媒体数据集中符合第三数据要求的多媒体数据包的数据量大于多媒体数据集中符合第二数据要求的多媒体数据包的数据量。
[0213] 可选地,符合第四数据要求的数据是指多媒体数据集中包含关键帧数据帧的多媒体数据包。
[0214] 可选地,每间隔一个抽取周期,从多媒体数据集中抽取一个符合第四数据要求的第二多媒体数据包,并将抽取到的第二多媒体数据包缓存至传输层。
[0215] 在一些实施例中,将当前传输层缓存的多媒体数据包清空后,从多媒体数据集中抽取包含关键帧数据帧的多媒体数据包作为第二多媒体数据包。
[0216] 可选地,将当前传输层缓存的视频帧清空后,从多个视频数据包中抽取包含I帧的视频数据包作为第二视频数据包,并将抽取到的第二视频数据包缓存至传输层。
[0217] 综上所述,本申请实施例提供的多媒体数据的发送方法,从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将其缓存至传输层进行传输;在第一多媒体数据的数据传输过程受限(例如:网络环境较差)的情况下,若当前传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的第一多媒体数据进行丢弃处理,之后从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将其缓存至传输层进行发送。一方面,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另一方面,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0218] 本申请实施例提供的方法,对视频文件对应的多个视频帧进行打包处理,后续,得到多个视频数据包,后续,以视频数据包为单位,进行包级别的数据传输和数据丢弃,提高了对多媒体数据进行数据处理的效率。
[0219] 图7是本申请一个示例性实施例提供的多媒体数据的发送装置的结构框图,如图7所示,该装置包括如下部分:
[0220] 获取模块700,用于获取多媒体文件对应的多媒体数据集,所述多媒体数据集中包括多个多媒体数据,所述多个多媒体数据包括音频数据和视频数据中的至少一种;
[0221] 抽取模块710,用于按照抽取周期从所述多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将抽取到的所述第一多媒体数据缓存至传输层,所述传输层用于提供与接收端之间网络通信的数据传输服务,其中,单个抽取周期抽取m个第一多媒体数据;
[0222] 发送模块720,用于按照发送周期将所述传输层缓存的多媒体数据发送至所述接收端,其中,单个发送周期发送n个多媒体数据,m和n为正整数;
[0223] 丢弃模块730,用于响应于所述传输层缓存的多媒体数据的数据量达到第一预设数量,对所述传输层缓存的多媒体数据进行丢弃处理;
[0224] 所述抽取模块710,还用于从所述多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将抽取到的所述第二多媒体数据缓存至所述传输层,所述多媒体数据集中符合所述第一数据要求的多媒体数据的数据量大于所述多媒体数据集中符合所述第二数据要求的多媒体数据的数据量。
[0225] 示意性的,请参考图8,在一些实施例中,所述符合第一数据要求的第一多媒体数据包括所述多媒体数据集中的全部多媒体数据;所述抽取模块710,还用于按照所述抽取周期从所述多媒体数据集中顺序抽取多媒体数据。
[0226] 在一些实施例中,所述获取模块700,用于对所述多媒体文件进行压缩编码,得到多媒体数据集,所述多媒体数据集中包括关键帧数据和非关键帧数据,所述关键帧数据是指能够单独解码的数据,所述非关键帧数据是指依赖其他帧数据进行解码的数据。
[0227] 在一些实施例中,所述抽取模块710,还用于从所述多媒体数据集中抽取所述关键帧数据,将所述关键帧数据作为所述第二多媒体数据。
[0228] 在一些实施例中,所述抽取模块710,还用于从所述多媒体数据集中抽取所述关键帧数据以及依赖所述关键帧数据进行解码的非关键帧数据,将所述关键帧数据以及依赖所述关键帧数据进行解码的非关键帧数据作为所述第二多媒体数据。
[0229] 在一些实施例中,所述丢弃模块730,用于清空所述传输层缓存的多媒体数据。
[0230] 在一些实施例中,所述丢弃模块730,还用于清空所述传输层缓存的除所述关键帧数据之外的多媒体数据。
[0231] 在一些实施例中,所述装置还包括:
[0232] 接收模块740,用于响应于所述传输层缓存的多媒体数据的数据量未达到第一预设数量,接收所述接收端针对至少一个多媒体数据反馈的接收成功通知;
[0233] 所述抽取模块710,还用于响应于所述接收成功通知,在当前时刻之后的最新一个抽取周期内,从所述多媒体数据集中抽取符合所述第一数据要求的第一数量的多媒体数据,所述第一数量是指在m的基础上增加所述至少一个多媒体数据对应的数据量。
[0234] 在一些实施例中,所述多媒体文件包括视频文件;所述获取模块700,用于获取所述视频文件;所述获取模块700,包括:
[0235] 编码单元701,用于将所述视频文件输入编码器进行编码处理,输出所述视频文件对应的多个视频帧;
[0236] 打包单元702,用于对所述多个视频帧进行打包处理,得到所述视频数据集,所述视频数据集中包括对所述多个视频帧进行打包处理得到的多个视频数据包,单个视频数据包中包括至少一个视频帧。
[0237] 综上所述,本申请实施例提供的多媒体数据的发送装置,从多媒体数据集中抽取符合第一数据要求的第一多媒体数据,并将其缓存至传输层进行传输;在多媒体数据的数据传输过程受限(例如:网络环境较差)的情况下,若当前传输层缓存的多媒体数据的数据量达到第一预设数量,对传输层缓存的多媒体数据进行丢弃处理,之后从多媒体数据集中抽取符合第二数据要求的第二多媒体数据,并将其缓存至传输层进行发送。一方面,在多媒体数据堆积在传输层的情况下,对多媒体数据进行丢弃处理,同时提高在多媒体数据集中进行数据抽取的数据要求,从而降低数据在传输层的堆积,降低网络发送负载,避免对网络传输资源的浪费;另一方面,根据数据堆积量(即第一预设数量)及时丢弃堆积的多媒体数据,并减少后续需要传输到接收端的数据,降低了多媒体数据在接收端的播放延迟,提高了多媒体数据的传输效率。
[0238] 需要说明的是:上述实施例提供的多媒体数据的发送装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的多媒体数据的发送装置与多媒体数据的发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0239] 图9示出了本申请一个示例性实施例提供的计算机设备900的结构框图。该计算机设备900可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
[0240] 通常,计算机设备900包括有:处理器901和存储器902。
[0241] 处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
[0242] 存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的多媒体数据的发送方法。
[0243] 在一些实施例中,计算机设备900还可选包括其他组件,本领域技术人员可以理解,图9中示出的结构并不构成对计算机设备900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0244] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述实施例中任一所述的多媒体数据的发送方法。
[0245] 可选的,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance Random Access Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0246] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0247] 以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
QQ群二维码
意见反馈