RTSP转RTMP协议的媒体资源处理方法及装置与流程

文档序号:29789664发布日期:2022-04-23 17:10阅读:127来源:国知局
RTSP转RTMP协议的媒体资源处理方法及装置与流程
rtsp转rtmp协议的媒体资源处理方法及装置
技术领域
1.本发明涉及视频处理技术领域,尤其涉及一种rtsp转rtmp协议的媒体资源处理方法及装置。


背景技术:

2.在视频处理技术领域中,存在实时流传输协议(real time streaming protocol,rtsp)格式视频流、实时消息传输协议(real time messaging protocol,rtmp)格式视频流。在流媒体的开发中,常常会遇到协议转换的问题,如摄像机常常支持rtsp协议,而实际上rtmp协议是播放端服务器支持的协议,这样的话就需要做协议之间的转换以达到更好的兼容性和后续业务流程的一致性。
3.目前,不同的流媒体协议转换也是实际需要的。然而,现有rtsp转rtmp协议过程繁琐、复杂,导致处理效率低,如何找到简单、高效完成转换过程的具体实施方法,是亟待进一步研究开发的。


技术实现要素:

4.有鉴于此,本发明提供一种rtsp转rtmp协议的媒体资源处理方法及装置,主要目的在于优化在rtsp转rtmp协议过程,能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,从而当逐个将流视频数据包含的数据帧推送到支持rtmp协议的服务器时,确保播放端播放流视频数据的正确性。
5.为了达到上述目的,本发明主要提供如下技术方案:
6.一方面,本发明提供了一种rtsp转rtmp协议的媒体资源处理方法,该方法包括:
7.在通过rtsp协议获取流视频数据时,按照持续接收到的至少两个数据帧的先后顺序,对所述至少两个数据帧分别添加解码时间戳;
8.将所述至少两个数据帧存储到预置数据帧缓存链表,在所述预置数据帧缓存链表中所述至少两个数据帧是按照其对应的原始时间戳的先后顺序进行排序的;
9.根据所述至少两个数据帧对应的排序位置,确定所述至少两个数据帧各自对应的显示时间戳;
10.根据所述数据帧对应的解码时间戳和显示时间戳,计算所述数据帧对应的偏移量并将所述偏移量添加至所述数据帧的报文头信息内;
11.逐次从所述预置数据帧缓存链表中提取头指针指向的数据帧,推送至支持rtmp协议的服务器。
12.可选的,在所述通过rtsp协议获取流视频数据之后,所述方法还包括:
13.通过解析所述流视频数据对应的图像参数组报文,获取所述流视频数据对应的帧率;
14.根据所述帧率,计算接收每两个相邻数据帧之间的时间间隔。
15.可选的,所述按照持续接收到的至少两个数据帧的先后顺序,对所述至少两个数
据帧分别添加解码时间戳,包括:
16.根据接收到至少两个数据帧的先后顺序,逐个对所述至少两个数据帧分别添加序号n,所述序号n起始值为0且为整数;
17.获取所述每两个相邻数据帧之间的时间间隔;
18.利用所述时间间隔与所述序号n的乘积,作为所述序号n对应的数据帧的解码时间;
19.根据所述解码时间,对所述序号n对应的数据帧添加解码时间戳。
20.可选的,所述将所述至少两个数据帧存储到预置数据帧缓存链表,包括:
21.通过解析所述至少两个各自的数据帧的报文头信息,获取所述至少两个各自的对应的原始时间戳;
22.将所述至少两个数据帧添加到预置数据帧缓存链表;
23.确定所述预置数据帧缓存链表存在的数据帧数目是否达到预设阈值;
24.响应于所述存在的数据帧数目是达到预设阈值,通过比较所述至少两个数据帧对应的原始时间戳,触发所述至少两个数据帧按照其对应原始时间戳的先后顺序进行排序。
25.可选的,所述通过比较所述至少两个数据帧对应的原始时间戳,触发所述至少两个数据帧按照其对应原始时间戳的先后顺序进行排序,包括:
26.按照所述至少两个数据帧对应原始时间戳的先后顺序,利用二分排序对所述预置数据帧缓存链表内的所述至少两个数据帧执行排序,其中,所述预置数据帧缓存链表内头指针指向数据帧的原始时间戳早于其他数据帧对应的原始时间戳。
27.可选的,所述根据所述至少两个数据帧对应的排序位置,确定所述至少两个数据帧各自对应的显示时间戳,包括:
28.在预置数据帧缓存链表内以头指针指向数据帧为起始,逐个对所述至少两个数据帧分别添加序号m,所述序号m起始值为0且为整数;
29.获取所述每两个相邻数据帧之间的时间间隔;
30.利用所述时间间隔与所述序号m的乘积,作为所述序号m对应的数据帧的解码时间;
31.根据所述显示时间,对所述序号m对应的数据帧添加显示时间戳。
32.另一方面,本发明还提供了一种rtsp转rtmp协议的媒体资源处理装置,该装置包括:
33.添加单元,用于在通过rtsp协议获取流视频数据时,按照持续接收到的至少两个数据帧的先后顺序,对所述至少两个数据帧分别添加解码时间戳;
34.存储单元,用于将所述至少两个数据帧存储到预置数据帧缓存链表,在所述预置数据帧缓存链表中所述至少两个数据帧是按照其对应的原始时间戳的先后顺序进行排序的;
35.确定单元,用于根据所述存储单元存储的至少两个数据帧对应的排序位置,确定所述至少两个数据帧各自对应的显示时间戳;
36.计算单元,用于根据所述数据帧对应的所述添加单元添加的解码时间戳和所述确定单元确定的显示时间戳,计算所述数据帧对应的偏移量;
37.所述添加单元,还用于将所述计算单元得到的偏移量添加至数据帧的报文头信息
内;
38.提取单元,用于逐次从所述预置数据帧缓存链表中提取头指针指向的数据帧;
39.推送单元,用于推送所述提取单元提取的数据帧至支持rtmp协议的服务器。
40.可选的,所述装置还包括:
41.获取单元,用于通过解析所述流视频数据对应的图像参数组报文,获取所述流视频数据对应的帧率;
42.所述计算单元,还用于根据所述获取单元获取到的帧率,计算接收每两个相邻数据帧之间的时间间隔。
43.可选的,所述添加单元包括:
44.第一添加模块,用于根据接收到至少两个数据帧的先后顺序,逐个对所述至少两个数据帧分别添加序号n,所述序号n起始值为0且为整数;
45.获取模块,用于获取所述每两个相邻数据帧之间的时间间隔;
46.执行模块,用于利用所述获取模块获取到的时间间隔与所述第一添加模块添加的序号n的乘积,作为所述序号n对应的数据帧的解码时间;
47.第二添加模块,用于根据所述执行模块得到的解码时间,对所述序号n对应的数据帧添加解码时间戳。
48.可选的,所述存储单元包括:
49.获取模块,用于通过解析所述至少两个各自的数据帧的报文头信息,获取所述至少两个各自的对应的原始时间戳;
50.添加模块,用于将所述至少两个数据帧添加到预置数据帧缓存链表;
51.确定模块,用于确定所述预置数据帧缓存链表存在的所述添加模块添加的数据帧数目是否达到预设阈值;
52.执行模块,用于响应于所述确定模块确定存在的数据帧数目是达到预设阈值,通过比较所述至少两个数据帧对应的原始时间戳,触发所述至少两个数据帧按照其对应原始时间戳的先后顺序进行排序。
53.可选的,所述执行模块,还用于按照所述至少两个数据帧对应原始时间戳的先后顺序,利用二分排序对所述预置数据帧缓存链表内的所述至少两个数据帧执行排序,其中,所述预置数据帧缓存链表内头指针指向数据帧的原始时间戳早于其他数据帧对应的原始时间戳。
54.可选的,所述确定单元包括:
55.第一添加模块,用于在预置数据帧缓存链表内以头指针指向数据帧为起始,逐个对所述至少两个数据帧分别添加序号m,所述序号m起始值为0且为整数;
56.获取模块,用于获取所述每两个相邻数据帧之间的时间间隔;
57.执行模块,用于利用所述获取模块获取的时间间隔与所述第一添加模块添加的序号m的乘积,作为所述序号m对应的数据帧的解码时间;
58.第二添加模块,用于根据所述执行模块得到的显示时间,对所述序号m对应的数据帧添加显示时间戳。
59.再一方面,本发明还提供一种非瞬态计算可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述的rtsp转rtmp协
议的媒体资源处理方法。
60.又一方面,本发明还提供一种电子设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;
61.其中,所述处理器、所述存储器通过所述总线完成相互间的通信;
62.所述处理器用于调用所述存储器中的程序指令,以执行如上述的rtsp转rtmp协议的媒体资源处理方法。
63.借由上述技术方案,本发明提供的技术方案至少具有下列优点:
64.本发明提供一种rtsp转rtmp协议的媒体资源处理方法及装置,本发明应用于推流端,在通过rtsp协议获取流视频数据时,按照持续接收到至少两个数据帧的先后顺序,逐个添加解码时间戳,而后再利用预置数据帧缓存链表存储并对接收到的多个数据帧进行重新排序,由于重新排序是按照每个数据帧的原始时间戳的先后顺序执行的,进而便于根据该重新排序计算出每个数据帧对应的显示时间戳,在得到数据帧对应的解码时间戳和显示时间戳之后,就方便高效地计算出偏移量,而后将该偏移量添加至数据帧报文头信息内,以上在推流端实现rtsp转rtmp协议的媒体资源处理过程。相较于现有技术,解决现有rtsp转rtmp协议过程繁琐、复杂的技术问题,本发明在rtsp转rtmp协议处理过程中能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,从而当逐次将流视频数据包含的数据帧推送到支持rtmp协议的服务器时,确保播放端播放流视频数据的正确性。
65.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
66.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
67.图1为本发明一个或多个实施例提供的一种rtsp转rtmp协议的媒体资源处理方法流程图;
68.图2为本发明一个或多个实施例提供的另一种rtsp转rtmp协议的媒体资源处理方法流程图;
69.图3为本发明一个或多个实施例例举的预先设置的数据帧缓存链表;
70.图4为本发明一个或多个实施例提供的一种rtsp转rtmp协议的媒体资源处理装置的组成框图;
71.图5为本发明一个或多个实施例提供的另一种rtsp转rtmp协议的媒体资源处理装置的组成框图;
72.图6为本发明一个或多个实施例提供的rtsp转rtmp协议的媒体资源处理的电子设备。
具体实施方式
73.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明
的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
74.本发明一个或多个实施例提供了一种rtsp转rtmp协议的媒体资源处理方法,如图1所示,该方法是在rtsp转rtmp协议处理过程中能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,对此本发明一个或多个实施例提供以下具体步骤:
75.101、在通过rtsp协议获取流视频数据时,按照持续接收到的至少两个数据帧的先后顺序,对至少两个数据帧分别添加解码时间戳。
76.本发明一个或多个实施例提供的方法应用于推流端,是由推流服务器作为客户端通过rtsp协议去获取流视频数据,例如,获取红外摄像头的直播视频数据。在获取流视频数据的过程中,也就是流视频数据的多个数据帧会不断地被发送到该推流端。
77.在本发明一个或多个实施例中,在获取流视频数据的过程中,也就是不断地接收被推送到推流端的数据帧,可以对数据帧进行有效性检测(切分出rtmp需要的h264数据流),并且按照该推流端接收到多个数据帧的先后顺序,对数据帧添加解码时间戳(decode time stamp,dts)。
78.102、将至少两个数据帧存储到预置数据帧缓存链表,在预置数据帧缓存链表中至少两个数据帧是按照其对应的原始时间戳的先后顺序进行排序的。
79.需要说明的是,对于本发明一个或多个实施例,作为推流端获取流视频数据,相应的,另一端作为发送流视频数据的客户端,该客户端与该推流端相当于是在数据链路层传递数据报文,而对于传递数据报文的过程中,数据帧是被随机发送到推流端的,也就是,并不能根据推流端接收到数据帧的先后顺序而组成完整的播放顺序的流视频数据。因此,推流端虽然按照时间先后顺序不断地获取到数据帧,但是还需要对这些数据帧重新排序,才能够得到与播放顺序相适应的流视频数据。
80.在本发明一个或多个实施例中,在推流端,是将不断获取到的数据帧存储到一个预置数据帧缓存链表中,进而根据链表结构的特点(即:数据元素的逻辑顺序是通过链表中的指针链接次序实现的),方便于实现对链表内缓存的数据帧执行重新排序,而执行排序所依据的规则就是:按照数据帧对应原始时间戳的先后顺序执行排序,进而链表内头指针指向的数据帧的原始时间戳早于其他数据帧对应的原始时间戳。
81.此处需要说明的是,原始时间戳相当于是按照流视频数据的播放顺序而对每个数据帧进行的标识,它存储在数据帧的报文头信息中。因此,按照原始时间戳的先后执行排序之后,该预置数据帧缓存链表内多个数据帧的排序与流视频数据播放顺序是相一致的。
82.103、根据至少两个数据帧对应的排序位置,确定至少两个数据帧各自对应的显示时间戳。
83.在本发明一个或多个实施例中,是在预置数据帧缓存链表内,根据每个数据帧对应的排序位置,来计算每个数据帧对应的显示时间戳(presentation time stamp),该显示时间戳用于表示预置数据帧缓存链表内多个数据帧被显示的先后顺序,该先后顺序是与流视频数据的播放顺序一致的。
84.104、根据数据帧对应的解码时间戳和显示时间戳,计算数据帧对应的偏移量并将偏移量添加至数据帧的报文头信息内。
85.在本发明一个或多个实施例中,数据帧的偏移量d=pts-dts,即每个数据帧的偏移量等于它的显示时间戳标记时间与解码时间戳标记时间之差。将该偏移量添加到数据帧的报文头信息中,那么当该数据帧被推送到支持rtmp协议的服务器时,在支持rtmp协议的服务器侧,解析数据帧的报文头信息得到偏移量,以及再根据该数据帧的解码时间戳标记的解码时间,就能够得到对应的显示时间。
86.105、逐次从预置数据帧缓存链表中提取头指针指向的数据帧,推送至支持rtmp协议的服务器。
87.在本发明一个或多个实施例中,从预置数据帧缓存链表中提取头指针指向的数据帧,相应的,该预置数据帧缓存链表就删除一个数据帧,由于根据链表结构的特点(数据元素的逻辑顺序是通过链表中的指针链接次序实现的),逐次从该预置数据帧缓存链表中提取数据帧,就实现在预置数据帧缓存链表中按照步骤102得到排序而逐个提取数据帧,并向支持rtmp协议的服务器推送。由于每个数据帧报文头信息已经被更新而添加了偏移量,所以在支持rtmp协议的服务器侧就能够根据偏移量完成正确地播放流视频数据。
88.本发明一个或多个实施例提供一种rtsp转rtmp协议的媒体资源处理方法,本发明一个或多个实施例应用于推流端,在通过rtsp协议获取流视频数据时,按照持续接收到至少两个数据帧的先后顺序,逐个添加解码时间戳,而后再利用预置数据帧缓存链表存储并对接收到的多个数据帧进行重新排序,由于重新排序是按照每个数据帧的原始时间戳的先后顺序执行的,进而便于根据该重新排序计算出每个数据帧对应的显示时间戳,在得到数据帧对应的解码时间戳和显示时间戳之后,就方便高效地计算出偏移量,而后将该偏移量添加至数据帧报文头信息内,以上在推流端实现rtsp转rtmp协议的媒体资源处理过程。相较于现有技术,解决现有rtsp转rtmp协议过程繁琐、复杂的技术问题,本发明一个或多个实施例在rtsp转rtmp协议处理过程中能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,从而当逐次将流视频数据包含的数据帧推送到支持rtmp协议的服务器时,确保播放端播放流视频数据的正确性。
89.为了对上述实施例做出更加详细的说明,本发明一个或多个实施例还提供了另一种rtsp转rtmp协议的媒体资源处理方法,如图2所示,该方法进一步地陈述了高效地对数据帧添加解码时间戳和显示时间戳的具体实施方法,从而也就高效地得到对应偏移量,对此本发明一个或多个实施例提供以下具体步骤:
90.201、通过解析流视频数据对应的图像参数组报文,获取流视频数据对应的帧率。
91.在本发明一个或多个实施例中,对应于推流端获取的流视频数据,可以预先获取该流视频数据的图像参数组(picture parameter set,pps)报文,通过解析pps报文而获取到该流视频数据对应的传输数据帧的帧率。
92.202、根据帧率,计算接收每两个相邻数据帧之间的时间间隔。
93.在本发明一个或多个实施例中,在获取到流视频数据对应传输帧率之后,就能够计算得到接收每两个相邻数据帧之间的时间间隔,例如,帧率为r,则该时间间隔t1=1/r*1000ms。
94.203、按照持续接收到的至少两个数据帧的先后顺序,对至少两个数据帧分别添加解码时间戳。
95.在本发明一个或多个实施例中,对本步骤细化陈述,可以包括如下:
96.首先,根据接收到至少两个数据帧的先后顺序,逐个对至少两个数据帧分别添加序号n,该序号n起始值为0且为整数。将接收到的第一个数据帧添加序号标记为0,即初始添加序号是为0而不是1,持续接收到的第二个数据帧添加序号标记为1,按照序号的依次递增加1,以后根据接收到的数据帧逐个添加序号,
97.其次,获取每两个相邻数据帧之间的时间间隔,该时间间隔在步骤202中已经可以计算得到,利用该时间间隔与序号n的乘积,作为序号n对应的数据帧的解码时间,进一步的,根据该解码时间,对该序号n对应的数据帧添加解码时间戳。
98.在本发明一个或多个实施例中,相当于是以接收到第一个数据帧为衡量基准,由于对数据帧添加序号时第一个数据帧的序号为初始值0,从第二个数据帧才被添加序号为1,而后序号依次递增加1,从而“利用该时间间隔与序号n的乘积”,也就是,以第一个数据帧解码时间为基准,而后统计其他数据帧与该第一个数据帧之间存在多少个间隔时间,就能够高效地确定其他数据帧对应的解码时间了,从而简单、高效地确定其他数据帧对应的解码时间戳。
99.需要说明的是,在本发明一个或多个实施例中,也可以预先创建一个缓存队列,用于存储持续接收到的数据帧,从而方便于按照存储至该队列的顺序,为每个数据帧添加序号。
100.204、将至少两个数据帧存储到预置数据帧缓存链表,在预置数据帧缓存链表中至少两个数据帧是按照其对应的原始时间戳的先后顺序进行排序的。
101.在本发明一个或多个实施例中,对本步骤细化陈述,可以包括如下:
102.首先,通过解析至少两个各自的数据帧的报文头信息,获取至少两个各自的对应的原始时间戳。原始时间戳相当于是按照流视频数据的播放顺序而对每个数据帧进行的标识,它存储在数据帧的报文头信息中。因此,按照原始时间戳的先后执行排序之后,该预置数据帧缓存链表内多个数据帧的排序与流视频数据播放顺序是相一致的。
103.其次,将至少两个数据帧添加到预置数据帧缓存链表,利用链表结构的特点(即:数据元素的逻辑顺序是通过链表中的指针链接次序实现的),方便于对按照接收顺序排序的数据帧进行存储,以及后续对这些数据帧执行重新排序。
104.再者,在本发明一个或多个实施例中,还可以对预置数据帧缓存链表预先设定一个执行重新排序的触发机制,即:确定预置数据帧缓存链表存在的数据帧数目是否达到预设阈值,响应于存在的数据帧数目是达到预设阈值,就触发执行重新排序操作。
105.在本发明一个或多个实施例中,是通过比较多个数据帧对应的原始时间戳,触发多个数据帧按照其对应原始时间戳的先后顺序进行排序,具体的,可以但不限于采用二分排序方法执行排序操作,得到的重新排序为:预置数据帧缓存链表内头指针指向数据帧的原始时间戳早于其他数据帧对应的原始时间戳。
106.如图3所例举的数据帧缓存链表,该数据帧缓存链表中“rtsp数据帧1”中“1”对应为接收到数据帧时添加的序号n,“timestampl”为原始时间戳,该“l”为正整数,仅用于表示衡量原始时间戳的个数,且“l”越小表明原始时间戳越早,经执行重新排序后,由于原始时间戳“timestamp3”排序在“timestamp2”和“timestamp4”之间,因此“rtsp数据帧0”被重新插入排序在“rtsp数据帧3”和“rtsp数据帧2”两者之间。
107.205、根据至少两个数据帧对应的排序位置,确定至少两个数据帧各自对应的显示
时间戳。
108.在本发明一个或多个实施例中,对本步骤细化陈述,可以包括如下:
109.首先,在预置数据帧缓存链表内以头指针指向数据帧为起始,逐个对至少两个数据帧分别添加序号m,该序号m起始值为0且为整数。
110.其次,获取每两个相邻数据帧之间的时间间隔,该时间间隔在步骤202中已经可以计算得到,利用该时间间隔与序号m的乘积,作为序号m对应的数据帧的显示时间,进一步的,根据该显示时间,对该序号m对应的数据帧添加显示时间戳。
111.需要说明的是,如此操作,相当于是以重新排序后第一个数据帧为衡量基准,由于对数据帧添加序号时第一个数据帧的序号为初始值0,从第二个数据帧才被添加序号为1,而后序号依次递增加1,从而“利用该时间间隔与序号m的乘积”,也就是,以第一个数据帧解码时间为基准,而后统计其他数据帧与该第一个数据帧之间存在多少个间隔时间,就能够高效地确定其他数据帧对应的显示时间了,从而简单、高效地确定其他数据帧对应的显示时间戳。
112.以上,结合步骤203-205,可以启动一个协程执行计算dts和pts。另外执行步骤包括了:将接收到数据帧的排序执行重新排序操作。在此需要说明的是,为了降低缓存接收到数据帧和重新排序的时间消耗,应该对推流端一次缓存接收到数据帧的数目和在预置数据缓存链表内触发重新排序时数据帧的数目,都预先设定上限阈值,且该阈值在不影响rtsp转rtmp协议的处理过程的前提下,应该选取尽量小的数值,进而降低处理时延,有助于提高rtsp转rtmp协议的处理过程的处理效率。
113.206、根据数据帧对应的解码时间戳和显示时间戳,计算数据帧对应的偏移量并将偏移量添加至数据帧的报文头信息内。
114.在本发明一个或多个实施例中,数据帧的偏移量d=pts-dts,即每个数据帧的偏移量等于它的显示时间戳标记时间与解码时间戳标记时间之差。将该偏移量添加到数据帧的报文头信息中,那么当该数据帧被推送到支持rtmp协议的服务器时,在支持rtmp协议的服务器侧,解析数据帧的报文头信息得到偏移量,以及再根据该数据帧的解码时间戳标记的解码时间,就能够得到对应的显示时间。
115.207、逐次从预置数据帧缓存链表中提取头指针指向的数据帧,推送至支持rtmp协议的服务器。
116.在本发明一个或多个实施例中,从预置数据帧缓存链表中提取头指针指向的数据帧,相应的,该预置数据帧缓存链表就删除一个数据帧,由于根据链表结构的特点(数据元素的逻辑顺序是通过链表中的指针链接次序实现的),逐次从该预置数据帧缓存链表中提取数据帧,就实现在预置数据帧缓存链表中按照步骤204得到排序而逐个提取数据帧,并向支持rtmp协议的服务器推送。由于每个数据帧报文头信息已经被更新而添加了偏移量,所以在支持rtmp协议的服务器侧就能够根据偏移量完成正确地播放流视频数据。
117.进一步的,作为对上述图1、图2所示方法的实现,本发明一个或多个实施例提供了一种rtsp转rtmp协议的媒体资源处理装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置应用于rtsp转rtmp协议的媒体资源处理过程,具体如图4所示,该装置包括:
118.添加单元31,用于在通过rtsp协议获取流视频数据时,按照持续接收到的至少两个数据帧的先后顺序,对所述至少两个数据帧分别添加解码时间戳;
119.存储单元32,用于将所述至少两个数据帧存储到预置数据帧缓存链表,在所述预置数据帧缓存链表中所述至少两个数据帧是按照其对应的原始时间戳的先后顺序进行排序的;
120.确定单元33,用于根据所述存储单元32存储的至少两个数据帧对应的排序位置,确定所述至少两个数据帧各自对应的显示时间戳;
121.计算单元34,用于根据所述数据帧对应的所述添加单元31添加的解码时间戳和所述确定单元33确定的显示时间戳,计算所述数据帧对应的偏移量;
122.所述添加单元31,还用于将所述计算单元34得到的偏移量添加至数据帧的报文头信息内;
123.提取单元35,用于逐次从所述预置数据帧缓存链表中提取头指针指向的数据帧;
124.推送单元36,用于推送所述提取单元35提取的数据帧至支持rtmp协议的服务器。
125.进一步的,如图5所示,所述装置还包括:
126.获取单元37,用于通过解析所述流视频数据对应的图像参数组报文,获取所述流视频数据对应的帧率;
127.所述计算单元34,还用于根据所述获取单元37获取到的帧率,计算接收每两个相邻数据帧之间的时间间隔。
128.进一步的,如图5所示,所述添加单元31包括:
129.第一添加模块311,用于根据接收到至少两个数据帧的先后顺序,逐个对所述至少两个数据帧分别添加序号n,所述序号n起始值为0且为整数;
130.获取模块312,用于获取所述每两个相邻数据帧之间的时间间隔;
131.执行模块313,用于利用所述获取模块获取到的时间间隔与所述第一添加模块添加的序号n的乘积,作为所述序号n对应的数据帧的解码时间;
132.第二添加模块314,用于根据所述执行模块313得到的解码时间,对所述序号n对应的数据帧添加解码时间戳。
133.进一步的,如图5所示,所述存储单元32包括:
134.获取模块321,用于通过解析所述至少两个各自的数据帧的报文头信息,获取所述至少两个各自的对应的原始时间戳;
135.添加模块322,用于将所述至少两个数据帧添加到预置数据帧缓存链表;
136.确定模块323,用于确定所述预置数据帧缓存链表存在的所述添加模块322添加的数据帧数目是否达到预设阈值;
137.执行模块324,用于响应于所述确定模块323确定存在的数据帧数目是达到预设阈值,通过比较所述至少两个数据帧对应的原始时间戳,触发所述至少两个数据帧按照其对应原始时间戳的先后顺序进行排序。
138.进一步的,如图5所示,所述执行模块324,还用于按照所述至少两个数据帧对应原始时间戳的先后顺序,利用二分排序对所述预置数据帧缓存链表内的所述至少两个数据帧执行排序,其中,所述预置数据帧缓存链表内头指针指向数据帧的原始时间戳早于其他数据帧对应的原始时间戳。
139.进一步的,如图5所示,所述确定单元33包括:
140.第一添加模块331,用于在预置数据帧缓存链表内以头指针指向数据帧为起始,逐个对所述至少两个数据帧分别添加序号m,所述序号m起始值为0且为整数;
141.获取模块332,用于获取所述每两个相邻数据帧之间的时间间隔;
142.执行模块333,用于利用所述获取模块332获取的时间间隔与所述第一添加模块331添加的序号m的乘积,作为所述序号m对应的数据帧的解码时间;
143.第二添加模块334,用于根据所述执行模块333得到的显示时间,对所述序号m对应的数据帧添加显示时间戳。
144.综上所述,本发明一个或多个实施例提供一种rtsp转rtmp协议的媒体资源处理方法及装置,本发明一个或多个实施例应用于推流端,在通过rtsp协议获取流视频数据时,按照持续接收到至少两个数据帧的先后顺序,逐个添加解码时间戳,而后再利用预置数据帧缓存链表存储并对接收到的多个数据帧进行重新排序,由于重新排序是按照每个数据帧的原始时间戳的先后顺序执行的,进而便于根据该重新排序计算出每个数据帧对应的显示时间戳,在得到数据帧对应的解码时间戳和显示时间戳之后,就方便高效地计算出偏移量,而后将该偏移量添加至数据帧报文头信息内,以上在推流端实现rtsp转rtmp协议的媒体资源处理过程。相较于现有技术,解决现有rtsp转rtmp协议过程繁琐、复杂的技术问题,本发明一个或多个实施例在rtsp转rtmp协议处理过程中能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,从而当逐次将流视频数据包含的数据帧推送到支持rtmp协议的服务器时,确保播放端播放流视频数据的正确性。
145.所述rtsp转rtmp协议的媒体资源处理装置包括处理器和存储器,上述添加单元、存储单元、确定单元、计算单元、提取单元和推送单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
146.处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来优化在rtsp转rtmp协议过程,能够操作简单、处理高效地获取到流视频数据内每个数据帧对应的偏移量,从而当逐个将流视频数据包含的数据帧推送到支持rtmp协议的服务器时,确保播放端播放流视频数据的正确性。
147.本发明一个或多个实施例提供了一种非瞬态计算可读存储介质,其上存储有程序,该程序被处理器执行时实现所述rtsp转rtmp协议的媒体资源处理方法。
148.本发明一个或多个实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述rtsp转rtmp协议的媒体资源处理方法。
149.本发明一个或多个实施例提供了一种电子设备40,如图6所示,设备包括至少一个处理器401、以及与处理器401连接的至少一个存储器402、总线403;其中,处理器401、存储器402通过总线403完成相互间的通信;处理器401用于调用存储器402中的程序指令,以执行上述的rtsp转rtmp协议的媒体资源处理方法。
150.本文中的设备可以是服务器、pc、pad、手机等。
151.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:在通过rtsp协议获取流视频数据时,按照持续接收到的至少两个数据帧的先后顺序,对所述至少两个数据帧分别添加解码时间戳;将所述至少两个数据帧存储到预置数据帧缓存链表,在所述预置数据帧缓存链表中所述至少两个数据帧是按
照其对应的原始时间戳的先后顺序进行排序的;根据所述至少两个数据帧对应的排序位置,确定所述至少两个数据帧各自对应的显示时间戳;根据所述数据帧对应的解码时间戳和显示时间戳,计算所述数据帧对应的偏移量并将所述偏移量添加至所述数据帧的报文头信息内;逐次从所述预置数据帧缓存链表中提取头指针指向的数据帧,推送至支持rtmp协议的服务器。
152.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
153.在一个典型的配置中,设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
154.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
155.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
156.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
157.本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
158.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1