CN114363662A - 推流方法、装置、终端及存储介质 - Google Patents

推流方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN114363662A
CN114363662A CN202210015842.9A CN202210015842A CN114363662A CN 114363662 A CN114363662 A CN 114363662A CN 202210015842 A CN202210015842 A CN 202210015842A CN 114363662 A CN114363662 A CN 114363662A
Authority
CN
China
Prior art keywords
coding type
video data
rtmp
video
setting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210015842.9A
Other languages
English (en)
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.)
Kandao Technology Co Ltd
Original Assignee
Kandao 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 Kandao Technology Co Ltd filed Critical Kandao Technology Co Ltd
Priority to CN202210015842.9A priority Critical patent/CN114363662A/zh
Publication of CN114363662A publication Critical patent/CN114363662A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种推流方法,其包括:基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;利用设置完成videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER;将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;将封装后的第二视频数据进行推流操作。

Description

推流方法、装置、终端及存储介质
技术领域
本发明涉及推流领域,尤其涉及一种推流方法、装置、终端及存储介质。
背景技术
近年来,由于高清、高画质视频的普及,对推流技术提出了更高的要求。现有技术中,RTMP推流受限制于推流的视频编码类型,无法实现4K以上的推流,比如6K或者8K乃至12K的视频。
故需要提供基于RTMP-H265推流协议的推流方法来解决上述技术问题。
发明内容
本发明的主要目的在于提供一种推流方法、装置、终端、及计算机可读存储介质,旨在解决现有技术中无法实现高清、高画质视频数据推流的问题。
为实现上述目的,本发明提供一种基于RTMP-H265推流协议的推流方法,所述推流方法应用于RTMP推流端,所述推流方法包括:
基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;
利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER;
将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
将封装后的第二视频数据进行推流操作。
可选地,所述基于视频编码类型设置视频编码类型标识videocodecid包括:
将所述videocodecid对应的预设位置或所述videocodecid对应的预设区域中的随机位置设置为视频编码标识字符7或12。
可选地,所述基于视频编码类型设置视频编码类型标识videocodecid包括:
基于预设存储路径信息确定所述videocodecid的设置位置;其中,所述预设存储路径信息包括所述videocodecid的存储层级信息和/或位序信息;所述设置位置包括一个或多个;
基于所述设置位置以及视频编码类型设置所述videocodecid。
可选地,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括第一预设存储层级及附属于所述第一预设存储层级的第一预设子存储层级;所述基于预设存储路径信息确定所述videocodecid的设置位置包括:
查找所述第一预设存储层级对应的第一层级位置;
在所述第一层级位置下查找所述第一预设子存储层级对应的第一子层级位置;
基于所述第一子层级位置确定视频编码类型标识videocodecid的设置位置。
可选地,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括依次排列的第二预设存储层级至第n预设存储层级,其中,n>2;所述基于预设存储路径信息确定所述videocodecid的设置位置包括:
按照顺序从所述第二预设存储层级开始,依次查找遍历各个预设存储层级位置,直至确定所述第n预设存储层级对应的第n层级位置;
基于所述第n层级位置确定所述视频编码类型标识videocodecid的设置位置。
可选地,所述推流方法应用于推流***,所述推流***至少包括RTMP推流端、RTMP流服务器以及RTMP播放器;所述推流方法包括:
所述RTMP推流端执行如上所述的推流方法的步骤,其中,所述RTMP推流端执行将封装后的第二视频数据进行推流操作的步骤时,所述RTMP推流端将所述第二视频数据推送至所述RTMP流服务器;
所述RTMP流服务器接收所述RTMP推流端推送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二视频数据中的videocodecid字符为12,所述RTMP流服务器判定所述第二视频数据为H265编码类型;
若所述第二视频数据中的videocodecid字符为7,所述RTMP流服务器判定所述第二视频数据为H264编码类型;
所述RTMP流服务器将所述第二视频数据发送至所述RTMP播放器;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二频数据中的videocodecid字符为12,所述RTMP播放器利用H265解码器对所述第二视频数据进行解码播放;
若所述第二频数据中的videocodecid字符为7,所述RTMP播放器利用H264解码器对所述第二视频数据进行解码播放。
可选地,所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符包括:
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,从多个videocodecid设置位置中提取所述第二视频数据中的videocodecid字符;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符的步骤之后包括:
将多个预设位置中的videocodecid字符进行对比校验;
若对比校验结果不一致,则向所述RTMP流服务器返回校验错误的校验结果信息。
为实现上述目的,本发明还提供一种推流装置,所述推流装置包括:
videocodecid设置模块,用于基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
第一形成模块,用于利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;
第二形成模块,用于利用Signature、Version、Flags以及DataOffset形成FLVFILE HEADER;
数据封装模块,用于数据将FLV FILE BODY以及对应的FLV FILE HE ADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
推流模块,用于将封装后的第二视频数据进行推流操作。
此外,为实现上述目的,本发明还提供一种推流终端,所述推流终端包括处理器和存储器,所述存储器上存储有推流程序,所述推流程序被所述处理器执行时实现如上所述的推流方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质所述计算机可读存储介质上存储有推流程序,所述推流程序被处理器执行时实现如上所述的推流方法的步骤。
本发明提供的推流方法、装置、终端及计算机可读存储介质,相较于现有技术,其有益效果为,通过基于视频编码类型设置视频编码类型标识vide ocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型,然后利用设置完成的videocodecid以及PreviousTagSize、NextTagH eader、NextTagData依次循环排列的结构形成FLV FILEBODY,再利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER,将FLVFILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装,最后将封装后的第二视频数据进行推流操作,从而实现利用RTMP推流H265的视频编码类型的视频数据,进而实现4k以上的高清、高画质视频数据推流,满足更高清视频数据推流的需要,有更广阔的适用前景。。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的***结构示意图;
图2为本发明推流方法一实施例的流程示意图;
图3为本发明FLV封装视频数据的一般结构示意图;
图4为本发明一实施例中FLV FILE BODY具体数据示例图;
图5为本发明一实施例中FLV FILE HEADER具体数据示例图;
图6为本发明推流方法另一实施例的流程示意图;
图7为本发明推流方法另一实施例的流程示意图;
图8为本发明推流方法另一实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,RTMP推流受限制于推流的视频编码类型,无法实现4K以上的推流,比如6K或者8K乃至12K的视频。
为了解决上述技术问题,本发明提供一种推流方法,在本方法中,通过基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型,然后利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY,再利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER,将FLV FILE BODY以及对应的FLVFILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装,最后将封装后的第二视频数据进行推流操作,从而实现利用RTMP推流H265的视频编码类型的视频数据,进而实现4k以上的高清、高画质视频数据推流。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的***结构示意图。
本发明实施例终端可以是具有计算能力的终端设备,也可以是PC,还可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及推流程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的推流程序,并执行以下操作:
基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;
利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER;
将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
将封装后的第二视频数据进行推流操作。
进一步地,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
将所述videocodecid对应的预设位置或所述videocodecid对应的预设区域中的随机位置设置为视频编码标识字符7或12。
进一步地,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
基于预设存储路径信息确定所述videocodecid的设置位置;其中,所述预设存储路径信息包括所述videocodecid的存储层级信息和/或位序信息;所述设置位置包括一个或多个;
基于所述设置位置以及视频编码类型设置所述videocodecid。
进一步地,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
查找所述第一预设存储层级对应的第一层级位置;
在所述第一层级位置下查找所述第一预设子存储层级对应的第一子层级位置;
基于所述第一子层级位置确定视频编码类型标识videocodecid的设置位置。
进一步的,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
按照顺序从所述第二预设存储层级开始,依次查找遍历各个预设存储层级位置,直至确定所述第n预设存储层级对应的第n层级位置;
基于所述第n层级位置确定所述视频编码类型标识videocodecid的设置位置。
进一步地,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
所述RTMP推流端执行如上所述的推流方法的步骤,其中,所述RTMP推流端执行将封装后的第二视频数据进行推流操作的步骤时,所述RTMP推流端将所述第二视频数据推送至所述RTMP流服务器;
所述RTMP流服务器接收所述RTMP推流端推送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二视频数据中的videocodecid字符为12,所述RTMP流服务器判定所述第二视频数据为H265编码类型;
若所述第二视频数据中的videocodecid字符为7,所述RTMP流服务器判定所述第二视频数据为H264编码类型;
所述RTMP流服务器将所述第二视频数据发送至所述RTMP播放器;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二频数据中的videocodecid字符为12,所述RTMP播放器利用H265解码器对所述第二视频数据进行解码播放;
若所述第二频数据中的videocodecid字符为7,所述RTMP播放器利用H264解码器对所述第二视频数据进行解码播放。
进一步的,处理器1001可以调用存储器1005中存储的推流程序,还执行以下操作:
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,从多个videocodecid设置位置中提取所述第二视频数据中的videocodecid字符;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符的步骤之后包括:
将多个预设位置中的videocodecid字符进行对比校验;
若对比校验结果不一致,则向所述RTMP流服务器返回校验错误的校验结果信息。
参照图2,图2为本发明推流方法一实施例流程示意图,
本发明的推流方法基于RTMP-H265推流协议,在一般的现有技术中,一般RTMP推流的视频编码格式为H264。本发明提出RTMP-H265推流方法,其区别在于可以用H265视频格式进行推流。RTMP-H265推流协议是基于传统的RTMP推流协议开发的。RTMP协议是基于TCP协议的,RTMP协议中推流中使用了基于FLV格式封装视频数据。本实施例的推流方法可以应用于RTMP推流端。在一些实施例中,本发明推流方法包括以下步骤:
步骤S10,基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型。
本发明的实施例中的视频编码类型标识videocodecid用于标识视频编码类型,视频编码类型包括但不限于H265编码类型和H264编码类型。其中,H265编码类型对应视频编码类型标识字符12,H264编码类型对应视频编码类型字符7。设置视频编码类型标识videocodecid指的是根据待推流的视频数据的实际编码类型将videocodecid对应的存储位置或者设置位置的值设置为字符12或字符7。videocodecid一般设置在FLV元信息metadata中,metadata为一些描述FLV文件各类属性的信息。这些信息以AMF格式保存在文件的起始部分。FLV元信息可以包括:audiochannels、audiocodecid、audiodatarate、audiodevice、audioinputvolume、audiosamplerate、creationdate、duration(mediafiles only)、fmleversion(Flash Media Live Encoder version)(media files only)、framerate、height、lastkeyframetimestamp(media files only)、lasttimestamp(mediafiles only)、presetname、videocodecid、videodatarate、videodevice、videokeyframe_frequency、width。
步骤S20,利用设置完成的videocodecid以及PreviousTagSize、Nex tTagHeader、NextTagData依次循环排列的结构形成FLVFILEBODY;
本发明的videocodecid为在FLVFILEBODY中特定位置或者特定区域中的随机位置中设置。设置完成的videocodecid指的是在FLVFILEBODY中设置完成。
如图3所示,图3为FLV封装视频数据的一般结构示意图。FLV封装的视频数据包括FLV FILE BODY和FLV FILE HEADER两部分组成。其中,FLV FIL E BODY由Previous Tagsize和Tag循环组成,而Tag可以分为TagHeader和TagData,因此,FLV FILE BODY由以下结构的循环结构形成:prev_tag_size+NextTagHeader+NextTagData|prev_tag_size+NextTagHeader+NextTagData|prev_tag_size+NextTagHeader+NextTagData|……。其中,prev_tag_size的大小为4个字节,标记前面一个TagHeader+TagData的大小,第一个Tag因为之前没有对应的数据,所以四个字节为0,这里四个字节为大端序;NextTagHeader的大小一般为11个字节,里面包含tag类型,时间戳,数据大小等;NextTagData是真正的数据,也就是H264或者H265的NALU的裸数据(即去掉开始码)。
如图4所示,图4为本发明一实施例中FLV FILE BODY具体数据示例图。在一些实施例中,FLV FILE BODY由一系列的back-pointers(如图4中方块4所示部分)以及Tag构成。其中,back-pointers即如上所述的prev_tag_size,大小为4个字节,用来表示前一个tag的大小。Tag由以下几个部分组成:tag type(如图4中方块5所示部分)、tag data size(如图4中方块6所示部分)、TimestampsExtended(如图4中方块1所示部分)、streamid(如图4中方块2所示部分)以及tag data(如图4中方块7所示部分)。其中,tag type的大小为1字节,用于标识tag类型,值设置为字符8表示Audio,值设置字符9表示Video,值设置为字符18表示scripts。tag data size的大小为3字节,用来表示tag data的长度。Timestamps即时间戳,大小为3个字节,TimestampsExtended时间戳扩展字段,扩展部分1字节,加上原来3字节共4字节。streamid共3字节,总是设置为0。除此之外,图4中的方块3所示部分表示前header部分。
步骤S30,利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER;
如图5所示,图5为本发明一实施例中FLV FILE HEADER具体数据示例图。在一些实施例中FLV FILE HEADER由Signature(如图5中方块1所示部分)、Version(如图5中方块2所示部分)、Flags(如图5中方块3所示部分)以及DataOffset(如图5中方块4所示部分)形成。其中,Signature的大小为3字节,设置固定的字符,用来标示FLV,当识别出FLV FILEHEADER的首部三个字符为FLV时,确定该视频数据为FLV文件。Version的大小为1字节,用来标示FLV的版本号。Flags的大小为1字节,用作内容标示,第0位和第二位分别表示video和audio存在的情况(1表示存在,0表示不存在)。图5中对应为0x05,也就是00000101,代表既有视频,也有音频。DataOffset的大小为4字节,表示FLV FILE HEADER长度,一般长度固定为9。
步骤S40,将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装。
基于上述步骤,在形成FLV FILE HEADER以及对应的FLV FILE BODY时后,可以利用得到的FLV FILE HEADER以及对应的FLV FILE BODY对待推流的第一视频数据进行封装,封装后得到第二视频数据。其中,待推流的第一视频数据可以是H265编码类型的视频数据,也可以是H264编码类型的视频数据。
步骤S50,将封装后的第二视频数据进行推流操作。
在获得封装后的第二视频数据后,对第二视频数据进行推流操作。具体的,RTMP推流端可以将封装后的第二视频数据推送至RTMP流服务器,再由RTMP流服务器将第二视频数据推送至播放端进行播放。
本发明的推流方法,应用在RTMP推流端,基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE B ODY;利用Signature、Version、Flags以及DataOffset形成FLVFILE HEA DER;将FLV FILE BODY以及对应的FLVFILEHEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;将封装后的第二视频数据进行推流操作。通过上述方式,与现有技术相比,其实现的有益效果是,可以实现利用RTMP推流H265的视频编码类型的视频数据,进而实现4k以上的高清、高画质视频数据推流,满足更高清视频数据推流的需要,有更广阔的适用前景。
在一些实施例中,步骤S10包括:
步骤S11,将所述videocodecid对应的预设位置或所述videocodecid对应的预设区域中的随机位置设置为视频编码标识字符7或12。
如图6所示,图6为本发明推流方法另一实施例流程示意图。在一些实施例中,可以预先设定videocodecid的设置位置,即预设位置,具体的,如图4所示,可以将方块9所示的位置设定为用来设置videocodecid的固定位置,作为预设位置。在推流前执行设置videocodecid的步骤时,基于待推流的视频数据的视频编码类型将该预设位置的值设置为7(视频编码类型为H264编码类型)或12(视频编码类型为H265编码类型)。然后在后续推流后,接收端再从该预设位置读取videocodecid字符,基于从该预设读取的videocodecid字符判定接收的视频数据为H265视频编码数据或者H264视频编码数据。
在一些实施例中,可以预先设定videocodecid的设置区域,即预设区域,其中,预设区域存在多个可以用来设置videocodecid的位置。在推流前执行设置videocodecid的步骤时,可以基于随机算法确定预设区域内的随机位置,用来设置videocodecid,然后添加videocodecid的位置标识。然后在后续推流后,接收端再基于该位置标识从对应的位置中读取videocodecid字符。具体的,如图4所示,可以将方块8所示的区域设定为用来设置videocodecid的区域,作为预设区域,在设置videocodecid,可以先基于随机算法从方块8所示区域中随机确定一个或者多个随机位置,用来设置videocodecid。
需要说明的是,图4所示的方块8或方块9均只是用来举例说明预设位置或者预设区域,仅起到解释说明的作用,而非限定预设位置或预设区域的所在,也不一定对应实际的videocodecid设置位置或区域。
上述推流方法中,将所述videocodecid对应的预设位置或所述videocodecid对应的预设区域中的随机位置设置为视频编码标识字符7或12,可以避免videocodecid在后续推流后被修改,提高数据的稳定性,且便于推流识别读取。
如图7所示,图7为本发明推流方法另一实施例的流程示意图。在一些实施例中,步骤S10包括:
步骤S12,基于预设存储路径信息确定所述videocodecid的设置位置;其中,所述预设存储路径信息包括所述videocodecid的存储层级信息和/或位序信息;所述设置位置包括一个或多个。
预设存储路径信息指的是预先设定的关于videocodecid字符存储位置的路径信息。预设存储路径信息包括videocodecid的存储层级信息。位序信息指的是具体的位置或者位置序号等信息。具体的,在一些实施例中,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括第一预设存储层级及附属于所述第一预设存储层级的第一预设子存储层级。可以预先将所有的数据存储位置划分为多个并列的第一层的存储层级,第一预设存储层级指的是videocodecid存储的位置在这些并列的第一层的存储层级中的哪一存储层级。在各个第一层的存储层级下,可以设置附属该第一层的存储层级对应的第二层的存储层级,亦即第一层的存储层级的子存储层级。第一预设存储层级指的是videocodecid存储在哪一第二层的存储层级。在一些实施例中,第一预设子存储层级可以对应具体的存储位置,预设存储路径信息精确到该层级即可;在一些实施例中,还可以继续对第二层的存储层级设置下级附属层级,预设存储路径信息还可以包括具体的数位信息。具体的,可以参照图4,方块8所示为第一预设存储层级,方块9所示为第一预设子存储层级。在一些实施例中,步骤S12可以包括:
步骤S121,查找所述第一预设存储层级对应的第一层级位置。
如上所述,在设置videocodecid时,先查找第一预设存储层级对应的第一层级位置,参照图4所示的方块8所示位置。
步骤S122,在所述第一层级位置下查找所述第一预设子存储层级对应的第一子层级位置。
在确定第一层级位置,即方块8所示位置后,在第一层级位置中查找第一预设子层级对对应的第一子层级位置,即如图4所示的方块9所示位置。
步骤S123,基于所述第一子层级位置确定视频编码类型标识videocodecid的设置位置。
基于上述步骤,若第一子层级位置只能容纳一videocodecid设置位置时,如图4所示的方块9,可以直接将该videocodecid存储在该第一层级位置中。
当然,在一些实施例中,第一子层级位置可以包括能够容纳多个videocodecid设置位置的空间,在此情况下,可以基于随机算法从第一层级位置中确定一个或多个设置位置来设置videocodecid。
上述推流方法中,查找所述第一预设存储层级对应的第一层级位置;在所述第一层级位置下查找所述第一预设子存储层级对应的第一子层级位置;基于所述第一子层级位置确定视频编码类型标识videocodecid的设置位置。通过上述方式,至少根据两个存储层级来确定videocodecid的设置位置,可以提高videocodecid的稳定性,且便于设置和查找。
此外,在一些实施例中,可以基于FLV封装的视频数据的实际数据类型来对应划分存储层级例如HEADER和BODY为第一层,各自的下属数据类型对应第二层等。
步骤S13,基于所述设置位置以及视频编码类型设置所述videocodecid。
在基于上述步骤确定设置位置后,根据视频数据的实际视频编码类型将该设置位置的值设置为视频编码类型对应的标识字符,从而完成videocodecid的设置。
上述推流方法,基于预设存储路径信息确定所述videocodecid的设置位置;其中,所述预设存储路径信息包括所述videocodecid的存储层级信息和/或位序信息;所述设置位置包括一个或多个;基于所述设置位置以及视频编码类型设置所述videocodecid。通过上述方式,可以预先设存储路径信息确定videocodecid的设置位置,可以提高videocodecid的稳定性,其便于videocodecid设置和查找。
此外,在一些实施例中,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括依次排列的第二预设存储层级至第n预设存储层级,其中,n>2。
具体的,在一些实施例中,可以将参考起始数据至存储videocodecid的数据仅划分止于第一层存储层级,在第一层存储层级划分了第二预设存储层级至第n预设存储层级后,不划分或设置下属的下级存储层级。其中,这里的第二预设存储层级仅起到区分第一预设存储层级的作用,与第一预设存储层级不存在顺序前后或大小的作用。
并列的第二预设存储层级至第n预设存储层级可以基于实际存储的数据类型来划分,每个数据类型占据一个预设存储层级。第二预设存储层级为起始参考层级,videocodecid存储在第n预设存储层级。当然,也可以以等数位的方式来划分预设存储层级,使得第二预设存储层级至第n预设存储层级为相同大小的分区。
步骤S12包括:
步骤S124,按照顺序从所述第二预设存储层级开始,依次查找遍历各个预设存储层级位置,直至确定所述第n预设存储层级对应的第n层级位置;
在确定videocodecid的设置位置时,先识起始参考层级别第二预设存储层级,然后从第二预设存储层级开始,依次查找遍历各个预设存储层级,对查找遍历的层级进行计数直至到达videocodecid所在的第n预设存储层级。确定第n预设存储层级对应的第n层级位置。
步骤S125,基于所述第n层级位置确定所述视频编码类型标识videocodecid的设置位置。
在一些实施例中,可以将第n层级位置的大小划分为与videocodecid的设置位置实际大小一致,在这种情况下,直接将第n层级位置作为videocodecid的设置位置。在一些实施例中,可以将第n层级位置划分为可以容纳多个videocodecid的设置位置的存储区域,在这种情况下,可以基于随机算法确定一个或多个用来设置videocodecid的设置位置。
上述推流方法中,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括依次排列的第二预设存储层级至第n预设存储层级,其中,n>2;按照顺序从所述第二预设存储层级开始,依次查找遍历各个预设存储层级位置,直至确定所述第n预设存储层级对应的第n层级位置;基于所述第n层级位置确定所述视频编码类型标识videocodecid的设置位置。通过上述方式,只设置一个预设存储层级,根据一个预设存储层级来确定videocodecid的设置位置,简化数据结构,便于设置和查找videocodecid。
如图8所示,图8为本发明推流方法另一实施例的流程示意图。
在一些实施例中,本发明推流方法可以应用在推流***中,所述推流***至少包括RTMP推流端、RTMP流服务器以及RTMP播放器。具体的,推流方法包括以下步骤。
首先由RTMP推流端执行步骤S50,步骤S50具体执行为:
步骤S51,所述RTMP推流端将所述第二视频数据推送至所述RTMP流服务器。
基于上述推流方法,RTMP推流端封装FLV视频数据完成后得到封装后的视频数据,即第二视频数据,RTMP推流端再基于通信网络,例如有线通信网络或者无线通信网络(例如WiFi或者蜂窝数据网络等),将第二视频数据推送至RTMP流服务器。
步骤S60,所述RTMP流服务器接收所述RTMP推流端推送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
基于上述推流方法,RTMP流服务器在接收到RTMP推流端推送的第二视频数据时,从上述设置位置中读取videocodecid字符。若设置位置时随机确定的,基于设置位置的标识信息确定设置位置后再读取videocodecid字符。若设置位置存在多个,可以根据预先设定从一个设置位置读取videocodecid字符或者读取多个乃至全部设置位置的videocodecid字符。
步骤S70,若所述第二视频数据中的videocodecid字符为12,所述RTMP流服务器判定所述第二视频数据为H265编码类型。
步骤S80,若所述第二视频数据中的videocodecid字符为7,所述RTMP流服务器判定所述第二视频数据为H264编码类型。
RTMP流服务器提取videocodecid字符后,若提取的字符为12,则判定第二视频数据为H265编码类型的视频数据;若提取的字符为7,则判定第二视频数据为H264编码类型的视频数据。
步骤S90,所述RTMP流服务器将所述第二视频数据发送至所述RTMP播放器。
RTMP流服务器再基于有线通信网络或者无线通信网络将第二视频数据发送至RTMP播放器。
步骤S100,所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符。
RTMP播放器在接收到RTMP流服务器推送的第二视频数据时,从上述设置位置中读取videocodecid字符。若设置位置时随机确定的,基于设置位置的标识信息确定设置位置后再读取videocodecid字符。若设置位置存在多个,可以根据预先设定从一个设置位置读取videocodecid字符或者读取多个乃至全部设置位置的videocodecid字符。
步骤S110,若所述第二频数据中的videocodecid字符为12,所述RTMP播放器利用H265解码器对所述第二视频数据进行解码播放。
步骤S120,若所述第二频数据中的videocodecid字符为7,所述RTMP播放器利用H264解码器对所述第二视频数据进行解码播放。
RTMP播放器至少包括H265解码器以及H264解码器这两种类型的解码器,以分别对H265编码类型或H264编码类型的第二视频数据进行解码播放。基于上述步骤,若RTMP读取的第二视频数据中videocodecid字符为12,则说明第二视频数据为H265编码类型的视频数据,可以利用H265解码器对第二视频数据进行解码播放。若RTMP读取的第二视频数据中的videocodecid字符为7,则说明第二视频数据是H264编码类型的视频数据,可以利用H264解码器对第二视频数据进行解码播放。
上述推流方法中,应用在包括RTMP推流端、RTMP流服务器、RTMP播放器的推流***中,推流后,RTMP播放器基于videocodecid字符确定视频编码类型后采用对应的解码器进行解码播放,从而实现不同编码类型的视频数据均可在RTMP推流***中进行推流播放,扩展了其适用场景,满足高清视频数据推流的需求。
在一些实施例中,步骤S100可以包括:
步骤S101,所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,从多个videocodecid设置位置中提取所述第二视频数据中的videocodecid字符。
基于上述推流方法,在一些实施例中,videocodecid的设置位置可以存在多个,可以在多个设置位置中均设置videocodecid。同一FLV视频数据的多个设置位置videocodecid字符原则上相同。RTMP播放器在接收到第二视频数据时,可以从多个设置位置中分别读取对应的videocodecid字符。
步骤S100之后可以包括:
步骤S130,将多个预设位置中的videocodecid字符进行对比校验。
然后,再将多个设置位置中读取的videocodecid字符进行对比校验,判端多个videocodecid字符是否一致。
步骤S140,若对比校验结果不一致,则向所述RTMP流服务器返回校验错误的校验结果信息。
若多个videocodecid字符均一致,则利用对应的解码器进行解码播放。若对比校验结果不一致,则说明推流过程中发生过数据变更,此时为避免解码失败浪费解码时间,可以向RTMP流服务器返回校验错误的校验结果信息,以使RTMP流服务器或者RTMP推流端重新推流对应的视频数据。
上述推流方法中,所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,从多个videocodecid设置位置中提取所述第二视频数据中的videocodecid字符;将多个预设位置中的videocodecid字符进行对比校验;若对比校验结果不一致,则向所述RTMP流服务器返回校验错误的校验结果信息。通过上述方式,可以及时识别推流过程中发生变更数据,经过校验可以确保不会使用错误的解码器进行解码,避免解码失败。
此外,本发明还提供一种推流装置。
其中,本发明的推流装置包括:
videocodecid设置模块,用于基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
第一形成模块,用于利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;
第二形成模块,用于利用Signature、Version、Flags以及DataOffset形成FLVFILE HEADER;
数据封装模块,用于数据将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
推流模块,用于将封装后的第二视频数据进行推流操作。
其中,本发明推流装置的具体实施方式可以参考本发明推流方法各个实施例,此处不再赘述。
此外,本发明还提供一种推流终端。
所述推流终端包括处理器和存储器,所述存储器上存储有推流程序,所述推流程序被所述处理器执行时实现如上所述的推流方法的步骤。
其中,在所述处理器上运行的推流程序被执行时所实现的方法可参照本发明推流方法各个实施例,此处不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质。
本发明计算机可读存储介质上存储有推流程序,所述推流程序被处理器执行时实现如上所述的推流方法的步骤。
其中,在所述处理器上运行的推流程序被执行时所实现的方法可参照本发明推流方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种推流方法,其特征在于,所述推流方法应用于RTMP推流端,所述推流方法包括:
基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILE BODY;
利用Signature、Version、Flags以及DataOffset形成FLV FILE HEADER;
将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
将封装后的第二视频数据进行推流操作。
2.如权利要求1所述的推流方法,其特征在于,所述基于视频编码类型设置视频编码类型标识videocodecid包括:
将所述videocodecid对应的预设位置或所述videocodecid对应的预设区域中的随机位置设置为视频编码标识字符7或12。
3.如权利要求1所述的推流方法,其特征在于,所述基于视频编码类型设置视频编码类型标识videocodecid包括:
基于预设存储路径信息确定所述videocodecid的设置位置;其中,所述预设存储路径信息包括所述videocodecid的存储层级信息和/或位序信息;所述设置位置包括一个或多个;
基于所述设置位置以及视频编码类型设置所述videocodecid。
4.如权利要求3所述的推流方法,其特征在于,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括第一预设存储层级及附属于所述第一预设存储层级的第一预设子存储层级;所述基于预设存储路径信息确定所述videocodecid的设置位置包括:
查找所述第一预设存储层级对应的第一层级位置;
在所述第一层级位置下查找所述第一预设子存储层级对应的第一子层级位置;
基于所述第一子层级位置确定视频编码类型标识videocodecid的设置位置。
5.如权利要求3所述的推流方法,其特征在于,所述预设存储路径信息为所述videocodecid的存储层级信息;所述存储层级信息至少包括依次排列的第二预设存储层级至第n预设存储层级,其中,n>2;所述基于预设存储路径信息确定所述videocodecid的设置位置包括:
按照顺序从所述第二预设存储层级开始,依次查找遍历各个预设存储层级位置,直至确定所述第n预设存储层级对应的第n层级位置;
基于所述第n层级位置确定所述视频编码类型标识videocodecid的设置位置。
6.一种推流方法,其特征在于,所述推流方法应用于推流***,所述推流***至少包括RTMP推流端、RTMP流服务器以及RTMP播放器;所述推流方法包括:
所述RTMP推流端执行如权利要求1-5任一项所述的推流方法的步骤,其中,所述RTMP推流端执行将封装后的第二视频数据进行推流操作的步骤时,所述RTMP推流端将所述第二视频数据推送至所述RTMP流服务器;
所述RTMP流服务器接收所述RTMP推流端推送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二视频数据中的videocodecid字符为12,所述RTMP流服务器判定所述第二视频数据为H265编码类型;
若所述第二视频数据中的videocodecid字符为7,所述RTMP流服务器判定所述第二视频数据为H264编码类型;
所述RTMP流服务器将所述第二视频数据发送至所述RTMP播放器;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符;
若所述第二频数据中的videocodecid字符为12,所述RTMP播放器利用H265解码器对所述第二视频数据进行解码播放;
若所述第二频数据中的videocodecid字符为7,所述RTMP播放器利用H264解码器对所述第二视频数据进行解码播放。
7.如权利要求6所述的推流方法,其特征在于,所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符包括:
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,从多个videocodecid设置位置中提取所述第二视频数据中的videocodecid字符;
所述RTMP播放器接收到所述RTMP流服务器发送的第二视频数据,并提取所述第二视频数据中的videocodecid字符的步骤之后包括:
将多个预设位置中的videocodecid字符进行对比校验;
若对比校验结果不一致,则向所述RTMP流服务器返回校验错误的校验结果信息。
8.一种推流装置,其特征在于,所述推流装置包括:
videocodecid设置模块,用于基于视频编码类型设置视频编码类型标识videocodecid,其中,所述视频编码类型至少包括H265编码类型或H264编码类型;
第一形成模块,用于利用设置完成的videocodecid以及PreviousTagSize、NextTagHeader、NextTagData依次循环排列的结构形成FLV FILEBODY;
第二形成模块,用于利用Signature、Version、Flags以及DataOffset形成FLV FILEHEADER;
数据封装模块,用于数据将FLV FILE BODY以及对应的FLV FILE HEADER完成H265编码类型或H264编码类型的第一视频数据的数据封装;
推流模块,用于将封装后的第二视频数据进行推流操作。
9.一种推流终端,其特征在于,所述推流终端包括处理器和存储器,所述存储器上存储有推流程序,所述推流程序被所述处理器执行时实现如权利要求1至7中任一项所述的推流方法的步骤。
10.一种计算机可读存储介质,其特征在于,其特征在于,所述计算机可读存储介质上存储有推流程序,所述推流程序被处理器执行时实现如权利要求1至7中任一项所述的推流方法的步骤。
CN202210015842.9A 2022-01-07 2022-01-07 推流方法、装置、终端及存储介质 Pending CN114363662A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210015842.9A CN114363662A (zh) 2022-01-07 2022-01-07 推流方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210015842.9A CN114363662A (zh) 2022-01-07 2022-01-07 推流方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN114363662A true CN114363662A (zh) 2022-04-15

Family

ID=81107776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210015842.9A Pending CN114363662A (zh) 2022-01-07 2022-01-07 推流方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN114363662A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020062313A1 (en) * 2000-10-27 2002-05-23 Lg Electronics Inc. File structure for streaming service, apparatus and method for providing streaming service using the same
CN102131084A (zh) * 2010-01-19 2011-07-20 深圳市在线通网络科技开发有限公司 音视频流媒体rtmp推送装置和音视频流媒体rtmp推送方法
CN104602105A (zh) * 2014-12-31 2015-05-06 腾讯科技(北京)有限公司 视频文件的播放方法及用户设备
CN107147916A (zh) * 2017-06-09 2017-09-08 苏州蜗牛数字科技股份有限公司 一种在传输层上传输h.265编码视频数据的方法
CN110858915A (zh) * 2018-08-24 2020-03-03 北京字节跳动网络技术有限公司 媒体文件播放过程中的分辨率切换方法、装置及存储介质
CN111010593A (zh) * 2019-11-08 2020-04-14 深圳市麦谷科技有限公司 基于flv格式封装h.265视频数据的方法和装置
CN111083510A (zh) * 2019-12-18 2020-04-28 深圳市麦谷科技有限公司 推送hevc视频的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020062313A1 (en) * 2000-10-27 2002-05-23 Lg Electronics Inc. File structure for streaming service, apparatus and method for providing streaming service using the same
CN102131084A (zh) * 2010-01-19 2011-07-20 深圳市在线通网络科技开发有限公司 音视频流媒体rtmp推送装置和音视频流媒体rtmp推送方法
CN104602105A (zh) * 2014-12-31 2015-05-06 腾讯科技(北京)有限公司 视频文件的播放方法及用户设备
CN107147916A (zh) * 2017-06-09 2017-09-08 苏州蜗牛数字科技股份有限公司 一种在传输层上传输h.265编码视频数据的方法
CN110858915A (zh) * 2018-08-24 2020-03-03 北京字节跳动网络技术有限公司 媒体文件播放过程中的分辨率切换方法、装置及存储介质
CN111010593A (zh) * 2019-11-08 2020-04-14 深圳市麦谷科技有限公司 基于flv格式封装h.265视频数据的方法和装置
CN111083510A (zh) * 2019-12-18 2020-04-28 深圳市麦谷科技有限公司 推送hevc视频的方法和装置

Similar Documents

Publication Publication Date Title
CN103402126B (zh) 一种广告信息的显示方法及装置
CN110446062B (zh) 大数据文件传输的接收处理方法、电子装置及存储介质
CN108495185B (zh) 一种视频标题生成方法和装置
US20030063675A1 (en) Image data providing system and method thereof
CN110996160B (zh) 视频处理方法、装置、电子设备及计算机可读取存储介质
CN106131550B (zh) 播放多媒体文件的方法及装置
CN103609117A (zh) 编码和解码图像的方法及装置
CN107864384B (zh) 重定向云桌面上互联网视频播放的方法及装置
CN108377394B (zh) 视频编码器的图像数据读取方法、计算机装置及计算机可读存储介质
CN108399327B (zh) 电子装置、基于动态图片的用户验证方法及存储介质
WO2006009414A1 (en) Extended package scheme to support application program downloading, and system and method for application program service using the same
CN112055254A (zh) 视频播放的方法、装置、终端及存储介质
CN113254393A (zh) 一种互动视频的封装方法及装置、电子设备
CN112423101B (zh) 远程展示方法、装置、设备及计算机可读存储介质
CN111506747B (zh) 文件解析方法、装置、电子设备及存储介质
CN114363662A (zh) 推流方法、装置、终端及存储介质
CN107634928A (zh) 一种码流数据的处理方法及装置
CN108184101B (zh) 处理视频的设备和方法
CN101335884B (zh) 多媒体数据的获取方法及多媒体设备
CN115866254A (zh) 一种传输视频帧及摄像参数信息的方法与设备
CN116962714A (zh) 视频解码方法、装置、电子设备及计算机可读存储介质
CN111885417B (zh) Vr视频播放方法、装置、设备以及存储介质
CN114827735A (zh) 视频回看方法、装置、设备及存储介质
CN113657928A (zh) 广告展示方法、装置、存储介质以及终端设备
CN113099270A (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