现在直播非常火爆, 可以从 PC 或手机直播, 然后从 PC 或是手机或是 支持 html5 的浏览器 收看但是, 你知道直播平台后面的技术和实现原理码?
正好去年过年的时候, 一个朋友破解了 AirPlay 和 Chromecast 协议, 然后开发了一套技术能够截获和播放任何手机 (iOS 或是 Android) 屏幕上的任何内容想到的第一个应用是做一个 直播的直播服务 比如, 通过屏幕直播, 你可以邀请朋友看你正在看的直播的电影, 球赛, 演唱会, 晚会, 不管是免费的还是付费的当初的想法是将屏幕的内容, 通过 AirPlay 或 Chromecast, 推送到后台服务器, 然后, 受邀的朋友就可以从浏览器或是其它视频播放器观看了为此, 我们搭建和开发了一个直播平台, 现在把我们实现的过程记录下来和大家共享首先, 视频有它的播放协议原则上, RTSP,RTMP,HTTP 都可以做直播和点播但一般做直播用 RTSP 和 RTMP, 做点播用 HTTP 我们选用的是 RTMP 协议 RTMP(Real Time Message Protocol / 实时信息传输协议)是应用层协议, 靠底层传输层协议 (通常是 TCP) 来保证信息传输的可靠性的在 TCP 链接建立后, RTMP 协议也要客户端和服务器通过握手来建立 RTMP Connection, 然后在 Connection 上传输控制信息 RTMP 协议传输时会对数据格式化, 而实际传输的时候为了更好地实现多路复用分包和信息的公平性
发送端会把 Message 划分为带有 Message ID 的 Chunk, 每个 Chunk 可能是一个单独的 Message 也可能是 Message 的一部分, 在接受端会根据 Chunk 中包含的 data 的长度, message id 和 message 的长度把 chunk 还原成完整的 Message, 从而实现信息的收发我们看看两个常用的视频服务一个是由客户端向服务器发起请求推流到服务器, 这个就是直播的播放服务. 另一个是由客户端向服务器发起请求从服务器端接受数据, 可以多次调用这就是播放服务 RTMP 是直播后面的协议, 有很多的开源软件实现了, 细节我们不再细说下面, 我们看看怎么搭建后台服务系统直播客户端 (后面我们要介绍的 OBS) 将实时视频推送到 NGINX 的 RTMP 模块 RTMP 模块会根据配置将视频流转换成 HLS 文件这时, HLS 文件可以使用两种模式播放一是点播 VOD 模式, 下载当前时间点可以获取到所有 index 文件和 ts 文件, 并播放这种模式允许部内容, 不一定是实时内容二是 Live 模式, 实时生成 m3u8 和 ts 文件它的索引文件一直处于动态变化的, 播放的时候需要不断下载 index 文件, 以获得最新生成的 ts 文件播放视频一般来说, 实况直播时, 会有一些延时下面, 来看一个 JS 实现的 HLS player, 嵌入到支持 HTML5 的浏览器就可以播放 HLS 文件
基于上面描述的技术和开源系统, 我们用 PHP 实现了一个简单的支持多用户的直播平台用户可以注册, 登录, follow/unfollow, 评论, 标签, 收看, 直播(每个用户有自己的直播密钥), 等等直播的精髓都应该讨论到了, 如果将系统 sharding, 分层, SOA 化, 负载均衡, cache, 就可以搭建出一个可扩展的大规模的直播平台为了让更多的直播人拥有属于自己的直播平台和为每一位直播人打造一个直播梦想作为理念, 现在的直播软件源码有了更多有趣新颖的功能: 游戏直播间一对一直播短视频私密直播间夺宝游戏等等, 支持各种二次开发等等如果您需要进军直播市场的直播平台, 建议找我们专业的直播 APP 源码服务商为您搭建!
来源: http://www.bubuko.com/infodetail-2526415.html