51学通信论坛2017新版
标题:
如何实现一个移动视频直播应用?
[打印本页]
作者:
admin
时间:
2017-9-16 17:27
标题:
如何实现一个移动视频直播应用?
[attach]331[/attach]
视频直播已经成为2016年移动互联网最受关注的一类应用。那么移动视频直播应用是如何实现的呢?
一个基本的视频直播应用主要由三部分组成:流推送端、转发服务端、直播客户端。
因为视频应用都需要一边下载,一边播放;直播应用更是一边录制,一边传输,同时一边播放。所以必须使用流的形式进行内容传输,而不能以完整的视频文件的形式来传输。直播应用常用的流传输协议是RTMP和HLS.
直播传输协议
RTMP(Real Time Messaging Protocol)实时消息传送协议
,是Adobe Systems公司为Flash播放器和支持RTMP协议的流媒体服务器之间传输音频、视频和数据的开放协议。基本的RTMP基于TCP协议,除了RTMP基本协议,还有很多RTMP的变种协议,包括RTMPT、RTMPS、RTMPE协议等,RTMP其实是一个协议族。
HLS 是由Apple公司定义的用于实时流传输的协议。
HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
HLS 的基本原理
当采集推流端将视频流推送到流媒体服务器时,服务器将收到的流信息每缓存一段时间就封包成一个新的 ts 文件,同时服务器会建立一个 m3u8 的索引文件来维护最新几个 ts 片段的索引。
当播放端获取直播时,它是从 m3u8 索引文件获取最新的 ts 视频文件片段来播放,从而保证用户在任何时候连接进来时都会看到较新的内容,实现近似直播的体验。
[attach]332[/attach]
HLS协议流程图
RTMP与HLS的比较
与RTMP协议不同的是,HLS是把视频流分割成一个个小的片段文件,服务器上需要留存这些文件,服务器和客户端之间其实也是以文件的形式来传输的,严格意义上HLS应该说算是一个伪流传输协议。
相对于 HLS 来说,RTMP 延时较小,通常为 1-3s,且基于 TCP 长连接,不需要多次建连。因此业界大部分直播业务都会选择用 RTMP 作为流媒体协议。
如何实现一个直播应用?
一个直播应用主要包括三个部分:流推送端(主播用)、流媒体服务器(直播平台)、客户端(观众)。
流推送端可以采用OBS直播软件。
很多直播平台都使用这款软件,比如龙珠直播等。
开发直播客户端APP,可以基于bilibili的开源框架ijkplayer
,像斗鱼TV等直播平台都在使用。ijkplayer是基于ffplay的直播客户端框架。
- ffplay
是一个使用了 ffmpeg 和 sdl 库的、一个简单的可移植的媒体播放器,支持所有ffmpeg支持的视频格式,也可以播放rtmp流媒体。
- 客户端弹幕
一般使用TCP协议传输,并使用XMPP协议对弹幕信息封装。
直播平台的搭建
基于RTMP流媒体服务器和web服务器(主要起展示所用),并配合CDN为客户端推送音视频流。
- 直播平台的核心是流媒体服务器。
直播流媒体服务器
的前端对流推送端传来的数据进行实时转码,使码流的格式和速率符合流媒体服务器所需的规格。
- 如果自己搭建流媒体服务器,可以采用Red5服务器,这是用Java开发的开源流媒体服务器。
基于 Red5 的流媒体服务器的搭建和应用
https://www.ibm.com/developerworks/cn/opensource/os-cn-Red5/
云平台解决方案
如果要搭建一个直播平台,也不一定非要自己来建流媒体服务器。目前有很多云平台,腾讯云、乐视云等,都提供了网络直播平台的搭建方案,而且除了直播以外,还可以实现点播(VOD)等功能。
乐视方案 http://live.lecloud.com
腾讯方案 http://www.qcloud.com
网易方案 http://netease.im
暴风方案 http://www.baofengcloud.com
原文地址:http://www.toutiao.com/a6408307460969152769/
欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/)
Powered by Discuz! X3