iOS直播技术分析与实现
不经意间发现,两个月没写博客了 , 把最近的一些技术成果,总结成了文章,与大家分享。
视频直播技术要点分析
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直播技术分析与实现相关推荐
- HTTP Live Streaming直播(iOS直播)技术分析与实现(转)
HTTP Live Streaming直播(iOS直播)技术分析与实现 转载于:https://www.cnblogs.com/chen-jt/p/3885223.html
- HTTP Live Streaming直播源代码软件开发(iOS直播)技术分析与实现
HLS技术要点分析 HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备( ...
- iOS 直播技术及Demo
要过年了,新年快乐,今天写一些关于iOS直播技术相关知识,及详细Demo介绍,首先请下载Demo Demo下载地址(点击跳转下载) 一.直播介绍 1.1.直播现状 近年来,直播越来越火,但直播技术却对 ...
- iOS直播技术分享-音视频采集(一)
1.iOS直播技术的流程 直播技术的流程大致可以分为几个步骤:数据采集.图像处理(实时滤镜).视频编码.封包.上传.云端(转码.录制.分发).直播播放器. 数据采集:通过摄像头和麦克风获得实时的音视频 ...
- iOS直播技术学习笔记 直播总体概览(一)
####概述 直播的现状 2016年,是一个直播年.直播行业快速发展,同时也滋生了大大小小上千家相关的公司. 中国互联网络信息中心发布的报告显示,截至今年6月,我国网络直播用户规模达到3.25亿,占网 ...
- iOS 直播技术文档
iOS 直播 个人项目可以参考+lflivekit+ljkplayer 第三方推荐使用金山云 im推荐使用容云 网络层(socket或st)负责传输,协议层(rtmp或hls)负责网络打包,封装层(f ...
- iOS直播技术学习笔记 美颜滤镜效果(三)
GPUImage的介绍 GPUImage 是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果 GPUImage是利用GPU,使在图片和视频上应用不同的效果和滤镜变得 ...
- ios直播技术(1)-- 视频采集
自己封装了一个视频采集类. 1.支持动态修改前后置摄像头. 2.支持分辨率.帧率修改,当设置不支持的分辨率时自动匹配最相近的分辨率. 3.视频预览功能 VideoCapture.h // // Vid ...
- 你想知道的直播技术都在这里了
概述 2016年基本上可以说一个直播年,各大互联网挣相进入直播行业,成就了直播技术的发展.之前我们也对直播连麦技术做了一个简单的分析,但是没有从整体上介绍,今天我们就组一个整体的介绍(本文部分资料来源 ...
最新文章
- POJ 1190 生日蛋糕 【DFS + 极限剪枝】
- [51nod]1284 2 3 5 7的倍数(容斥原理)
- 不定积分24个基本公式_高分攻略丨语文阅读理解的24个万能答题公式
- Mathematica函数大全
- [Java]中[this][super]用法总结
- 多activity中退出整个程序
- java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值
- 如何在远程桌面连接的服务器上访问本地磁盘
- 老杨推荐|初级到高级网工学习渠道最全汇总(建议收藏)
- mysql 统计每天、每周、每月、每年数据
- Ubuntu 常用软件推荐(QQ、微信、MATLAB等)及安装过程
- 【android studio】测试不同buf下flash的读写性能2
- THREADED_EXECUTION
- scalac: Token not found...
- Resnet_50网络结构详解
- gets_s()函数
- 火狐浏览器点击下载按钮没反应
- 微信小程序之图表系列——最简单的表格制作
- Android Status Bar
- Windows服务安装卸载 Windows清理实用工具 SQL2000安装挂起修复工具绿色版