一,直播云架构

2. RTMP 协议

RTMP(Real Time Messaging Protocol)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。它有三种变种:

(1)工作在TCP之上的明文协议,使用端口1935;

(2)RTMPT封装在HTTP请求之中,可穿越防火墙;

(3)RTMPS类似RTMPT,但使用的是HTTPS连接。

RTMP视频播放的特点:

(1)RTMP协议是采用实时的流式传输,所以不会缓存文件到客户端,这种特性说明用户想下载RTMP协议下的视频是比较难的;

(2)视频流可以随便拖动,既可以从任意时间点向服务器发送请求进行播放,并不需要视频有关键帧。相比而言,HTTP协议下视频需要有关键帧才可以随意拖动。

(3)RTMP协议支持点播/回放(通俗点将就是支持把flv,f4v,mp4文件放在RTMP服务器,客户端可以直接播放),直播(边录制视频边播放)。

RTMP环境的架设:

因为该协议是adobe公司开发的,所以最初服务器端架设的环境是FMS(Flash Media Server),该软件为收费软件,价格昂贵。后来,开源软件red5的推出,使rtmp协议的架设成本大大缩小,但是在性能方面不如fms的稳定。此外,wowza虽然是收费的,但价格比较适中。

3. HLS协议

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。

相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。 

根据以上的了解要实现HTTP Live Streaming直播,需要研究并实现以下技术关键点

  1. 采集视频源和音频源的数据
  2. 对原始数据进行H264编码和AAC编码
  3. 视频和音频数据封装为MPEG-TS包
  4. HLS分段生成策略及m3u8索引文件
  5. HTTP传输协议

最新文章

  1. CGRectInset & CGRectOffset
  2. [问题2015S03] 复旦高等代数 II(14级)每周一题(第四教学周)
  3. Android设计模式系列--工厂方法模式
  4. 关于打开Eclipse时出现eclipse failed to create the java virtual machine与locking is not possible in the direc
  5. 线程池 异步I/O线程 <第三篇>
  6. 基于visual Studio2013解决面试题之0410计算二进制中1的个数
  7. Java在Debug的时候,有些变量能无限展开(循环了)?
  8. 【Alpha阶段】第四次 Scrum Meeting
  9. HDU 2243 Knight Moves
  10. javaScript中关于字符串的操作函数和方法
  11. python教你用微信每天给女朋友说晚安
  12. 4. Go常量
  13. java socket编程实例代码
  14. Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
  15. 使用 PLSQL 连接 Oracle9i 数据库
  16. [osgearth][原]仿照谷歌,修改oe漫游器中focal(视角切换)功能
  17. 算法:整数与ip地址转换
  18. SDN竞赛思考总结
  19. Scala的类继承
  20. H-ui框架制作选项卡

热门文章

  1. [转]Tomcat处理一个HTTP请求的过程
  2. eclipse debug调试java程序的九个技巧
  3. oc 跳转控制方法
  4. java消息中间件之ActiveMQ初识
  5. 高速上手Unity中最好的补间动画插件DFTween
  6. inotify+rsync
  7. Ubuntu14下Hadoop开发<1> 基础环境安装
  8. mysql命令行导入和导出数据
  9. java中高级写法
  10. Swing实现右下角消息框