在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己的直播产品。本文主要从直播的一些基本知识,一步步打造直播app。直播那么火的背后有什么样的技术支撑呢?
以知名软件开发商云豹直播的手机直播系统开发为例,我们来简单分析一下,手机直播系统开发的主要步骤。
大体框架
基本是下图这个套路:
PC直播(固定场所)——>移动端(形式自由)。
随着越来越多的直播类 App 上线,移动直播进入了前所未有的爆发阶段,目前大多数移动直播以 Native 客户端为主。但是H5端的直播在移动直播端也承载着不可替代的作用,例如 H5 有着传播快,易发布的优势。
完整的直播包括:
1. 视频录制端
电脑上的音视频输入设备或者手机端的摄像头或者麦克风,目前以移动端的手机视频为主。
2. 视频播放端
可以是电脑上的播放器,手机端的 Native 播放器,还有 H5 的 video 标签等。
3. 流媒体服务器端
用来接受视频录制端提供的视频源,同时提供给视频播放端流服务。目前开源的流媒体有RED5,CRTMPD,NGINX-RTMP,SRS。
1.如何生产视频数据
封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。
为什么要分封装格式和视频编码格式呢?
这个其实跟网络分七层模型一个原理。解耦和,降低依赖,底层给上层提供基础功能,底层和上层都都可以单独扩展,可以以多种方案组合编码与封装,比如MP4与H264、MP4与MPEG、TS与H264等等。比如这里面的这边文章的编码就只负责将最原始的音频和视频数据就行压缩,而压缩完的数据要怎么组织就拜托给上层的封装,封装接到视频音频数据负责给数据编号,指定同步协议,加入字幕等操作。经过封装后,得到的就是可以播放的上面提到的视频文件MP4或者MKV等等。把这个过程反过来就是上图描述的视频播放的过程。
2. 使用 webRTC 录制视频基本流程是:
(1) 调用window.navigator.webkitGetUserMedia() 获取用户的PC摄像头视频数据。
(2)将获取到视频流数据转换成 window.webkitRTCPeerConnection (一种视频流数据格式)。
(3)利用webscoket将视频流数据传输到服务端
由于许多方法都要加上浏览器前缀,所以很多移动端的浏览器还不支持 webRTC,所以真正的视频录制还是要靠客户端(iOS,Android)来实现,效果会好一些。
推荐Andorid4.3(API18)或以上使用硬编,以下版本使用软编;iOS使用全硬编方案。
1. 软编码:
libffmpeg
2. 硬编码:
MediaCodec(sdk level 16+, Android 4.1, 4.1.1, the JELLY_BEAN)
FLV(Flash Video)是Adobe公司设计开发的一种流行的流媒体格式,FLV可以使用Flash Player进行播放,FLV封装格式的文件后缀通常为“.flv”。总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag组成。
特点:视频文件体积轻巧、封装简单
以上,是手机直播系统开发的几个简单步骤,关注云豹直播还有更多惊喜在等着您,云豹直播作为首家直播系统开发商专注于为各大企业提供优质直播系统开发服务,为您搭建一个只属于您的直播平台!
0 (0%) 好评 | 0 (0%) 中评 | 0 (0%) 差评 |