【技术实现步骤摘要】
一种基于KCP协议的Android端到端直播方法
本专利技术属于视频传输
,尤其基于KCP协议的Android端到端直播方法。
技术介绍
偏传统的Android端到端直播方法通常采用RTMP和HLS协议进行传播。RTMP的直播时延可以维持在2s,但是当网络不稳定时,由于RTMP是基于TCP的协议,它充分利用网络带宽的属性将使得其在直播方案中接收端无法按时接收到的数据,于是便造成了直播延时;HLS协议由于其设计原理是必须用4-10s的时间缓存M3U8文件和TS的Playlist,导致HLS的直播时延一定是4s以上。KCP协议是一个以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果的协议,他可以在网络状态很差的场景下,更快的传输数据。由于KCP的流量耗费巨大,仅用于游戏研发领域。而在网络状态很差的情况下,KCP对流量的高耗费将使得数据更高效的传播,于是本文将它应用于Android’端到端的视频直播,可以在网络状态很差的情况下保证Android播放端能准时接收到Android推流端的视频数据,从而提高直播的实时性和流畅性。基于网络状态很差的场景,进行了本专利技术创造。
技术实现思路
本专利技术旨在解决现有技术中的问题。提出了一种使得直播能够在网络不佳的情况下依旧能维持观看的实时性、流畅性、优化用户的直播体验基于KCP协议的Android端到端直播方法。本专利技术的技术方案如下:一种基于KCP协议的Android端到端直播方法,其包 ...
【技术保护点】
1.一种基于KCP协议的Android端到端直播方法,其特征在于,包括以下步骤:/n101.Android推流端采集直播音视频数据,进行本机预览后拷贝到本机;/n102.Android推流端对拷贝的数据进行转码;/n103.Android推流端通过KCP快速可靠传输协议将数据发送到Android播放端;/n104.Android播放端通过KCP对数据进行接收;/n105.Android播放端对收到的数据采用追帧算法进行计算;/n106.Android播放端对数据进行播放。/n
【技术特征摘要】
1.一种基于KCP协议的Android端到端直播方法,其特征在于,包括以下步骤:
101.Android推流端采集直播音视频数据,进行本机预览后拷贝到本机;
102.Android推流端对拷贝的数据进行转码;
103.Android推流端通过KCP快速可靠传输协议将数据发送到Android播放端;
104.Android播放端通过KCP对数据进行接收;
105.Android播放端对收到的数据采用追帧算法进行计算;
106.Android播放端对数据进行播放。
2.根据权利要求1所述的一种基于KCP协议的Android端到端直播方法,其特征在于,所述步骤101Android推流端采集直播音视频数据进行本机预览并拷贝到本机,具体步骤为:
1011.直播音视频数据采集:打开手机前置或后置摄像头,再设置欲得数据的宽和高,然后在手机摄像头回调函数中循环获取视频数据Image0,每次获得的Image0为当前时刻摄像头产生的图片;
1012.直播音视频数据拷贝:对每个Image0进行拷贝,将拷贝的数据Image1依次存于阻塞队列Queue0;
1013.直播音视频数据预览:将Image0依次显示于手机显示屏上。
3.根据权利要求2所述的一种基于KCP协议的Android端到端直播方法,其特征在于,所述步骤102Android推流端对拷贝的数据进行转码的具体步骤为:
1021.直播音视频拷贝数据加水印:依次从Queue0中取出数据a0,并将a0用数组a0[i0][j0]存储,其中i0表示该图片的宽度,单位为像素;j0表示该图片的高度,单位为像素;
将当前日期和时间生成为一张图片,并用数组a1[i1][j1]存储,其中i1表示该水印的宽度,单位为像素;j1表示该水印的高度,单位为像素,a1中表示日期和时间的元素值为1,其它元素值为0;
如需将水印加在离a0图片左边界x像素距离,离a0图片上边界y像素距离的位置,则从a0中找到从a0[x][y]开始,到a0[x+i1][y+j1]为结束的矩阵a2[i1][j1],将a1[a][b]与a2[a][b]进行对比,当a1[a][b]元素值为1时,将a2[a][b]的元素值置为c,c为想要添加的水印颜色在当前编码格式中对应的数值,其中,
a∈{0,i1-1},b∈{0,j1-1};
1022.直播音视频拷贝数据转码:加水印后的a0的格式为NV21,需将a0转为NV12后,再将a0按照H264编码为a1,最后,Android推流端会将a1保存到阻塞队列Queue1中,等待被发送;
1023.用户可选择的将所推视频数据存于Android推流端本地:将a1进行拷贝,剔除SPS、PPS数据,即可将数据封装为MP4数据存储于指定的手机存储位置。
4.根据权利要求3所述的一种基于KCP协议的Android端到端直播方法,其特征在于,所述步骤103Android推流端通过KCP将数据发送到Android播放端的具体步骤为:
1031.创建并初始化KCP对象:创建并初始化KCP对象Object-KCP,并为Object-KCP设置传输回调函数F0,F0的作用是调用底层的UDP接收函数F1;
1032.循环调用KCP更新函数KCP-Update:每10ms调用一次KCP-Update,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。