java将h264裸流打包为flv_H264、H265裸流数据封装成FLV格式以NIO传输的方法与流程...

本发明介绍了一种将H264或H265裸流数据封装为FLV格式并通过NIO传输的方法,适用于Android5.0以上版本的录屏数据。该方法通过FLV格式提高数据传输效率,减少流量消耗,提升用户体验。

d019d3b2e88d23fc0d09d9c94966dcf1.gif

本发明涉及FLV格式数据传输,尤其涉及一种H264、H265裸流数据封装成FLV格式以NIO传输的方法。

背景技术:

FLV是FLASHVIDEO的简称,FLV流媒体格式是一种新的视频格式,全称为FlashVideo。FLV格式视频主要特点是体积小,适合作为流媒体在网上进行传播,本身占有率低,视频质量良好,目前大部分播放器都支持FLV视频格式播放。

如图1所示,FLV包括文件头(File Header)和文件体(File Body)两部分。FLV封装格式由一个FLV Header文件和一个一个的Tag组成的,Tag中包含了音频数据和视频数据。现有技术H264、H265裸流数据传输效率不高,本发明结合FLV格式的优点而开发。

技术实现要素:

本发明正是针对上述的问题,提出一种H264、H265裸流数据封装成FLV格式以NIO传输的方法。

为实现上述目的,本发明具体技术方案如下:

一种H264、H265裸流数据封装成FLV格式以NIO传输的方法,包括步骤:

S1、录屏端采集到第一数据,将其进行转换成H264或H265数据格式,获得H264或H265裸流数据;

S2、将H264或H265裸流数据封装成FLV格式,通过NIO将FLV格式数据传输到客户端。

优选地,所述录屏端采集Android5.0以上版本的第一数据。

进一步地,所述第一数据的数据格式是ByteBuffer类型。

优选地,所述步骤S2中将H264或H265裸流数据封装成FLV格式的方法为:

S201、首先通过录屏获取到数据源,将得到的ByteBuffer进行处理,通过ByteBuffer读取到该数据的长度;

S202、声明一个数据包的长度,其中FLV header占9个字节;

S203、然后通过自带的函数获取一遍数据;

S204、进行tag封装。

本发明技术所具有的有益效果为:

本发明中借助FLV的优点和NIO的优点结合在一起进行字节数据的传输,可以更高效的处理数据,以及减少用户的流量;适合在手机录屏、投屏操控上带来更好的体验。

附图说明

图1为现有技术FLV格式的结构示意图;

图2为本发明流程图;

图3为本发明中FLV格式封装流程图。

具体实施方式

为了便于本领域的普通技术人员能够理解并实施本发明,下面将结合附图对本发明实施例作进一步说明。

参考图2,本发明提供一种H264、H265裸流数据封装成FLV格式以NIO传输的方法,包括步骤:

S1、录屏端采集到第一数据,将其进行转换成H264或H265数据格式,获得H264或H265裸流数据;

S2、将H264或H265裸流数据封装成FLV格式,通过NIO将FLV格式数据传输到客户端。

其中,所述录屏端采集Android5.0以上版本的第一数据。

所述第一数据的数据格式是ByteBuffer类型。

参考图3,所述步骤S2中将H264或H265裸流数据封装成FLV格式的方法为:

S201、首先通过录屏获取到数据源,将得到的ByteBuffer进行处理,通过ByteBuffer读取到该数据的长度;

S202、声明一个数据包的长度,其中FLV header占9个字节;

S203、然后通过自带的函数获取一遍数据;

S204、进行tag封装。

本发明工作原理为:

Android5.0以上录屏采集获取到的数据格式是ByteBuffer类型的,然后再将获取到的ByteBuffer数据进行封装,转换成H264或H265的数据格式,然后再使用FLV进行对H264或H265的裸流数据封装。

录屏端以nio的实现方式作为服务端,使用nio socket给客户端传输数据,将封装好的FLV数据格式通过nio把数据给到以nio方案实现的客户端。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值