您的位置 首页 > 腾讯云社区

直播APP开发使用流媒体做直播推流---直播系统开发直播软件开发

目前开源项目或市面上的直播APP开发方式都是使用ffmpeg来实现视频推流。

数据流

这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上,服务器上的数据再实时发送到播放客户端上。

以视频数据为例:

获取camera画面→首先是摄像头拍摄得到的原始画面数据,原始画面数据格式没有特殊要求→利用camera获取的画面

Camera会把获得的画面保存为opengl的一个纹理,我们使用这个纹理就能使用camera画面。

绘制画面

在获得画面后,我们要把这个画面的纹理画到mediacodec上,由它提供surface供我们把纹理画到上面。

H.264数据

画面画上去后,mediacodec会帮我们把原始画面数据,压缩成相应的视频数据,目前常用的压缩是H.264格式。所谓的H.264数据,其实是一堆byte数组。

RTMP

开源项目,可以将视频数据封成RTMP包,发送到服务器上。

总结

数据流完整的流畅:Camera→SurfaceTexture→Surface→MediaCodec→encodedate→RTMPMuxer→Server

音频数据

对比视频里数据简单一些,从AudioRecord里获取原始音视频数据,编码成AAC数据,然后给RTMPMuxer,封装成RTMP包,发到服务器麦克风MIC→AudioRecord→voice data→MediaCodec→encode data→RTMPMuxer→Server

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

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

---来自腾讯云社区的---直播系统开发直播软件开发

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: