源码目录
云豹资讯
直播APP开发,直播推流怎么靠流媒体实现的
时间:2021-10-18

直播APP开发选对流媒体传输协议可以节省不少传输的时间,现在常见的传输协议有很多,多种多样的协议让客户选昏了头,简单来说,不同协议的差距就在于平台之间针对用户需求的差异,目前开源项目或市面上的直播APP开发都是用ffmpeg来实现视频的推流。


1.png

 

一、数据流

直播在传输到用户的屏幕前,只是一堆视频数据,需要先把数据发送到服务器上,服务器上的数据再实时发送到播放客户端上。以视频数据传输为例:获取camera画面,从摄像头、屏幕采集器开始获取到原始的画面数据,原始数据格式没有特殊要求,然后服务器会把获取到的画面保存到opengl的英文里,我们使用这个纹理得到camera的画面。

 

2.png


二、绘制画面和传输数据

在获取到画面后,我们要把这画面的纹理渲染到mediacodec上,由它提供surface供我们把纹理画到上面。画面画上去后,mediacodec会帮我们把原始画面数据压缩成相应的视频数据,目前常用的压缩格式是H.264,所谓的H.264数据,就是一堆byte的数组。

总结来看,直播APP开发的画面传输视频数据的完整顺序是:camera-surfacetexture-surface-mediacodec-encodedate-rtmpmuxer-server

 

3.png


三、音频数据传输

直播APP开发中,音频数据的传输比视频要简单,从audiorecord里获取原始音视频数据,编码成AAC数据,然后给RTMPmuxer封包成RTMP包,发到服务器麦克风的处理顺序是MIC-audiorecord-vidce data-mediacodec-encode data-rtmpmuxer-server

直播APP开发视频RTMP包和音频RTMP包之间是按照时间排序排列的,mediacoodec返回编码数据时,会返回数据的时间戳,但需要注意在数据编码成RTMP包时,取得的是相对的时间戳,也就是说取到时间戳时,需要计算与上一包的时间戳差值,记录到RTMP包里。

直播APP开发完成后测试服务器,需要测试的朋友请自行搭建RTMP服务器,如有开发团队开发可不必自己动手。运用搭建的服务器,用Modulenginx-rtmp-module。搭建服务器不需要写代码,根据教程进行命令编写即可。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任m.yunbaokj.com

#直播APP开发

声明

以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任
| 已有成品解决方案
| 相关推荐
咨询电话:0538-8270220