HTTP Live Streaming直播(iOS直播)技术分析与实现

  • 时间:
  • 浏览:2
  • 来源:uu快3倍率_uu快3网游_单双计划

  HTTP Live StreamingHLS)是苹果机机公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如苹果机机、iPad)提供音视频直播和点播方案。HLS点播,基本上假如有一天常见的分段HTTP点播,不同在于,它的分段非常小。要实现HLS点播,重点在于对媒体文件分段,目前有不少开源工具还需用使用,这里让我不再讨论,只谈HLS直播技术。

对原始数据进行H264编码和AAC编码

本文转自 卓行天下  51CTO博客,原文链接:http://blog.51cto.com/9951038/17860 88,如需转载请自行联系原作者

HLS的分段策略,基本上推荐是10秒原先分片,当然,具体时间需用根据分好后的分片的实际时长做标注

  其中第1点和第2点,我如果 的文章中将会提到过了,而最后这名,亲戚亲戚大伙儿还需用借助现有的HTTP服务器,这名,实现第3点和第4点是关键所在。

   不经意间发现,大三天 没写博客了,自觉汗颜。实则2012后三天 ,家中的事一样接着一样所处,虽然是没法时间。快过年了,总算忙里偷闲,把最近的这名技术成果,总结成了文章,与亲戚亲戚大伙儿分享。

     

  相对于常见的流媒体直播协议,类式RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并就有原先完整性的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放有有哪些小文件,将会服务器端老要会将最新的直播数据生成新的小文件,另原先客户端假如有一天不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上还需用认为,HLS是以点播的技术法律法律法律依据来实现直播。将会数据通过HTTP协议传输,这名完整性不要再考虑防火墙将会代理的有哪些的疑问,或者分段文件的时长很短,客户端还需用更快的挑选和切换码率,以适应不同速率单位条件下的播放。不过HLS的这名技术特点,决定了它的延迟一般老要会高于普通的流媒体直播协议。

  在Nginx工作目录下启动HLSLiveEncoder,并用VLC播放器连接播放

  m3u8,是HTTP Live Streaming直播的索引文件。m3u8基本上还需用认为假如有一天.m3u格式文件,区别在于,m3u8文件使用UTF-8字符编码。

  通过以上分析,实现HLS LiveEncoder直播编码器,其逻辑和流程基本上很清楚了:分别开启音频与视频编码守护线程,通过DirectShow(或这名)技术来实现音视频派发,如果 分别调用libx264和libfaac进行视频和音频编码。原先编码守护线程实时编码音视频数据后,根据自定义的分片策略,存储在某个MPEG-TS格式分段文件中,当完成原先分段文件的存储后,更新m3u8索引文件。如下图所示:

  前些日子,也是项目需用,花了这名时间研究了HTTP Live StreamingHLS)技术,并实现了原先HLS编码器HLSLiveEncoder,当然,C++写的。其功能是派发摄像头与麦克风,实时进行H.264视频编码和AAC音频编码,并按照HLS的协议规范,生成分段的标准TS文件以及m3u8索引文件。通过我的HLSLiveEncoder和第三方Http服务器(类式:Nginx),成功实现了HTTP Live Streaming直播,并在iphone上测试通过。让我把这当中的这名收获写在这里。

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

  通过苹果机机播放的效果

    

  原先简单的m3u8索引文件

派发视频源和音频源的数据

  

通常来说,为了缓存等方面的因为,在索引文件中会保留最新的原先分片地址,以类式“滑动窗口”的形式,进行更新。

     

    

HLS分段生成策略及m3u8索引文件

视频和音频数据封装为MPEG-TS包

HTTP传输协议

  上图中HLSLiveEncoder当收到视频和音频数据后,需用首先判断,当前分片算是应该如果 如果 刚开始了,并创建新分片,以延续TS分片的不断生成。需用注意的是,新的分片,应当从关键帧如果 如果 刚开始了了,补救播放器解码失败。核心代码如下所示:

  TsMuxer的接口也是比较简单的。