不经意间发现,两个月没写博客了 , 把最近的一些技术成果,总结成了文章,与大家分享。

视频直播技术要点分析

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。要实现HLS点播,重点在于对媒体文件分段,目前有不少开源工具可以使用,这里我就不再讨论,只谈HLS直播技术。相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。根据以上的了解要实现HTTP Live Streaming直播,需要研究并实现以下技术关键点1. 采集视频源和音频源的数据
2. 对原始数据进行H264编码和AAC编码
3. 视频和音频数据封装为MPEG-TS包
4. HLS分段生成策略及m3u8索引文件
4. HTTP传输协议

程序框架与实现

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

HLS分段生成策略和m3u8

1. 分段策略

HLS的分段策略,基本上推荐是10秒一个分片,当然,具体时间还要根据分好后的分片的实际时长做标注
通常来说,为了缓存等方面的原因,在索引文件中会保留最新的三个分片地址,以类似“滑动窗口”的形式,进行更新。

2. m3u8文件简介

  m3u8,是HTTP Live Streaming直播的索引文件。m3u8基本上可以认为就是.m3u格式文件,区别在于,m3u8文件使用UTF-8字符编码。

#EXTM3U                     m3u文件头,必须放在第一行
#EXT-X-MEDIA-SEQUENCE       第一个TS分片的序列号
#EXT-X-TARGETDURATION       每个分片TS的最大的时长
#EXT-X-ALLOW-CACHE          是否允许cache
#EXT-X-ENDLIST              m3u8文件结束符
#EXTINF                     extra info,分片TS的信息,如时长,带宽等

iOS直播技术分析与实现相关推荐

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

    HTTP Live Streaming直播(iOS直播)技术分析与实现 转载于:https://www.cnblogs.com/chen-jt/p/3885223.html

  2. HTTP Live Streaming直播源代码软件开发(iOS直播)技术分析与实现

    HLS技术要点分析 HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备( ...

  3. iOS 直播技术及Demo

    要过年了,新年快乐,今天写一些关于iOS直播技术相关知识,及详细Demo介绍,首先请下载Demo Demo下载地址(点击跳转下载) 一.直播介绍 1.1.直播现状 近年来,直播越来越火,但直播技术却对 ...

  4. iOS直播技术分享-音视频采集(一)

    1.iOS直播技术的流程 直播技术的流程大致可以分为几个步骤:数据采集.图像处理(实时滤镜).视频编码.封包.上传.云端(转码.录制.分发).直播播放器. 数据采集:通过摄像头和麦克风获得实时的音视频 ...

  5. iOS直播技术学习笔记 直播总体概览(一)

    ####概述 直播的现状 2016年,是一个直播年.直播行业快速发展,同时也滋生了大大小小上千家相关的公司. 中国互联网络信息中心发布的报告显示,截至今年6月,我国网络直播用户规模达到3.25亿,占网 ...

  6. iOS 直播技术文档

    iOS 直播 个人项目可以参考+lflivekit+ljkplayer 第三方推荐使用金山云 im推荐使用容云 网络层(socket或st)负责传输,协议层(rtmp或hls)负责网络打包,封装层(f ...

  7. iOS直播技术学习笔记 美颜滤镜效果(三)

    GPUImage的介绍 GPUImage 是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果 GPUImage是利用GPU,使在图片和视频上应用不同的效果和滤镜变得 ...

  8. ios直播技术(1)-- 视频采集

    自己封装了一个视频采集类. 1.支持动态修改前后置摄像头. 2.支持分辨率.帧率修改,当设置不支持的分辨率时自动匹配最相近的分辨率. 3.视频预览功能 VideoCapture.h // // Vid ...

  9. 你想知道的直播技术都在这里了

    概述 2016年基本上可以说一个直播年,各大互联网挣相进入直播行业,成就了直播技术的发展.之前我们也对直播连麦技术做了一个简单的分析,但是没有从整体上介绍,今天我们就组一个整体的介绍(本文部分资料来源 ...

最新文章

  1. POJ 1190 生日蛋糕 【DFS + 极限剪枝】
  2. [51nod]1284 2 3 5 7的倍数(容斥原理)
  3. 不定积分24个基本公式_高分攻略丨语文阅读理解的24个万能答题公式
  4. Mathematica函数大全
  5. [Java]中[this][super]用法总结
  6. 多activity中退出整个程序
  7. java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值
  8. 如何在远程桌面连接的服务器上访问本地磁盘
  9. 老杨推荐|初级到高级网工学习渠道最全汇总(建议收藏)
  10. mysql 统计每天、每周、每月、每年数据
  11. Ubuntu 常用软件推荐(QQ、微信、MATLAB等)及安装过程
  12. 【android studio】测试不同buf下flash的读写性能2
  13. THREADED_EXECUTION
  14. scalac: Token not found...
  15. Resnet_50网络结构详解
  16. gets_s()函数
  17. 火狐浏览器点击下载按钮没反应
  18. 微信小程序之图表系列——最简单的表格制作
  19. Android Status Bar
  20. Windows服务安装卸载 Windows清理实用工具 SQL2000安装挂起修复工具绿色版

热门文章

  1. js创建数组的简单方法
  2. linux如何给文件设置a属性,Linux文件的特殊属性chattr工具
  3. Windows 服务程序、窗口界面、桌面交互、与远程桌面
  4. iOS音频播放编程简介
  5. HTML常用标签(二)
  6. element ui Table表格数据筛选功能实现
  7. 手机触屏版页面开发总结
  8. vuex中更新对象或数组的值页面不更新的问题
  9. python截图代码_Python为PPT文件进行截图操作的代码
  10. 计算机论文 表格形式展示,巧借WPS表格实现WPS文字自动双色排版 -电脑资料