`

深入浅出移动直播技术(一)

阅读更多

2016年被誉为“移动直播元年”,中国的网络直播用户已经超过3亿,百度,腾讯,淘宝,网易等都有自己的直播平台。本文主要分享一些移动直播的相关技术点。

 

一、什么是视频

 

任何一个视频文件,从结构上讲,都是这样一种组成方式:

 

-由图像和音频构成最基本的内容元素;

-图像经过视频编码压缩格式处理(通常是 H.264);

-音频经过音频编码压缩格式处理(例如 AAC);

-注明相应的元信息(Metadata);

-最后经过一遍容器(Container)封装打包(例如 MP4),构成一个完整的视频文件。

 

 二、什么是视频直播

 

简而言之,直播就是将每一帧数据 ( Video / Audio / Data Frame ),打上时序标签 ( Timestamp ) 后进行流式传输的过程。发送端源源不断的采集音视频数据,经过编码、封包、推流,再经过中继分发网络进行扩散传播,播放端再源源不断地下载数据并按时序进行解码播放。如此就实现了 “边生产、边传输、边消费” 的直播过程。

 

三、GOP ( Group of Pictures )

 

为了便于视频内容的存储和传输,通常需要减少视频内容的体积,也就是需要将原始的内容元素(图像和音频)经过压缩,压缩算法也简称编码格式。例如视频里边的原始图像数据会采用 H.264 编码格式进行压缩,音频采样数据会采用 AAC 编码格式进行压缩。当要观看播放时,相应地也需要解码过程。因此编码和解码之间,需要约定一种编码器和解码器都可以理解的约定。就视频图像编码和解码而言,这种约定很简单:

 

编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。GOP 是一组连续的画面,由一张 I 帧和数张 B / P 帧组成,是视频图像编码器和解码器存取的基本单位,它的排列顺序将会一直重复到影像结束。I 帧是内部编码帧(也称为关键帧),P 帧是前向预测帧(前向参考帧),B 帧是双向内插帧(双向参考帧)。简单地讲,I 帧是一个完整的画面,而 P 帧和 B 帧记录的是相对于 I 帧的变化。如果没有 I 帧,P 帧和 B 帧就无法解码。因此,一个视频,其图像部分的数据是一组 GOP 的集合, 而单个 GOP 则是一组 I / P / B 帧图像的集合。

 

四、推流和拉流的概念以及RTMP和HLS协议

 

推流,指的是把采集阶段封包好的内容传输到服务器的过程;拉流,是服务器已有直播内容,用指定地址进行拉取的过程。

 

RTMP

 

RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写,是Adobe公司为Flash/AIR平台和服务器之间音、视频及数据传输开发的实时消息传送协议。RTMP协议基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。不过RTMP有着一个最大的不足——不支持浏览器,且Adobe已不再更新。因此直播服务要支持浏览器的话,需要另外的推送协议支持。

 

HLS

 

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。基本可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。HLS传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。

 

每一个 .m3u8 文件,分别对应若干个 ts 文件,这些 ts 文件才是真正存放视频的数据,m3u8 文件只是存放了一些 ts 文件的配置信息和相关路径,当视频播放时,.m3u8 是动态改变的。一般为了加快速度,.m3u8 放在 Web 服务器上,ts 文件放在 CDN 上。.m3u8 文件,其实就是以 UTF-8 编码的 m3u 文件,这个文件本身不能播放,只是存放了播放信息的文本文件。

 

HLS请求流程:HTTP 请求 m3u8 的url;服务端返回一个 m3u8 的播放列表,这个播放列表是实时更新的,一般一次给出5段数据的 url;客户端解析 m3u8 的播放列表,再按序请求每一段的 url,获取 ts 数据流。

 

HLS延时:假设列表里包含5个 ts 文件,每个 TS 文件包含5秒的视频内容,那么整体的延迟就是25秒。因为当用户看到这些视频时,主播已经将视频录制好上传上去了。当然可以缩短列表的长度和单个 ts 文件的大小来降低延迟,极致来说可以缩减列表长度为1,并且 ts 的时长为1s,但是这样会造成请求次数增加,增大服务器压力,当网速慢时会造成更多的缓冲,所以苹果官方推荐的 ts 时长为10s,所以这样就会大概有30s的延迟。

 

  协议 原理 延时 优点 使用场景
RTMP

长链接

tcp

每个时刻的数据收到后立刻发送 2s 延时低 即时互动
HLS

短链接

http

集合一段时间数据生成ts切片文件更新m3u8文件

10-30s 跨平台 H5直播

 

 

 

分享到:
评论

相关推荐

    5g英文文档附赠《深入浅出:5G移动通信标准和架构》的赠阅版

    《深入浅出:5G移动通信标准和架构》是一本深度解析5G技术的专业书籍,其赠阅版包含了丰富的5G知识,对于理解和掌握5G技术具有重要价值。5G,全称为第五代移动通信技术,是当前全球信息技术领域的热点,它的出现不仅...

    移动通信移动通信移动通信移动通信

    总的来说,移动通信是一个涉及多层面、多技术的复杂系统,它的发展历程从模拟到数字,从单一语音服务到多媒体业务,反映了信息技术的飞速进步。随着5G和未来6G的到来,移动通信将继续革新我们的生活方式,提供更高速...

    《深入浅出MyBatis技术原理与实战》高清完整PDF下载

    当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时MyBatis就进入了我们的视野,随着移动互联网应用的持续发酵,Spring MyBatis的应用已在Java互联网平台上得到...

    WPF深入浅出高清PDF

    ### WPF深入浅出知识点详解 #### 一、引言:生产力与软件开发工具的进化 自古以来,生产工具的先进程度一直是衡量生产力水平的关键指标。随着科技的进步,计算机软件开发领域同样经历了一系列工具和技术的革新。从...

    高清版WPF深入浅出.pdf

    本书《深入浅出WPF》是刘铁猛所著,目的是为了深入浅出地介绍WPF技术。作者利用丰富的开发经验和对技术的深刻理解,将WPF的复杂概念分解成浅显易懂的知识点。全书分为两个主要部分,第一部分主要介绍WPF开发的基础...

    深入浅出通讯原理

    《深入浅出通讯原理》是陈爱军老师的一部著作,该书全面而深入地探讨了通讯技术的基础理论。在当今信息化社会,通讯技术已成为连接世界的重要桥梁,无论是日常生活中的手机通信、互联网传输,还是工业领域的远程监控...

    周立功的《深入浅出ARM7》的书的PDF.zip

    《深入浅出ARM7》是周立功先生撰写的一本关于ARM微处理器体系结构和技术的专著,这本书深入解析了ARM7处理器的工作原理及其在嵌入式系统中的应用。ARM7是ARM公司早期设计的一种高性能、低功耗的32位RISC(精简指令集...

    深入浅出 phonegap 代码

    本资料包“深入浅出 PhoneGap 代码”显然旨在帮助开发者更全面地理解PhoneGap的工作原理和实际应用。 PhoneGap 的核心组件包括: 1. **Cordova**: PhoneGap 基于 Apache Cordova,这是一个开源的移动设备API库,它...

    深入浅出LTE

    **深入浅出LTE** LTE(Long Term Evolution)是第四代(4G)移动通信技术,旨在提供高速、低延迟的数据传输服务,为用户提供无缝的移动互联网体验。它基于全IP网络架构,采用了一系列先进的无线技术和协议优化,以...

    深入浅出Android-教程

    ### 深入浅出Android:开启移动应用新时代 #### Android的诞生与愿景 2007年11月5日,Google携手包括摩托罗拉、宏达电、三星、LG在内的33家手机制造商、手机芯片供应商、软硬件供应商以及电信运营商共同宣布成立...

    《竹林蹊径 深入浅出Windows驱动开发》.(张佩等).[PDF]

    总之,《竹林蹊径 深入浅出Windows驱动开发》是一本非常适合希望深入了解Windows驱动开发的技术人员阅读的书籍,无论是对于初学者还是有一定经验的开发者来说,都能够从中获得有价值的信息和指导。

    深入浅出ARM7上下册

    压缩包中的文件“深入浅出ARM7-LPC213x_214x(上下)”包含了全套书籍的电子版,方便读者在电脑或移动设备上阅读和查阅,随时随地学习和巩固ARM7的相关知识。结合书中的实例代码和实验指导,读者可以边学边练,加深...

    大名鼎鼎的深入浅出android的简体中文版

    总之,《深入浅出Android》作为一本全面的教程,覆盖了Android开发的各个方面,从基础知识到高级技术,为读者提供了一个扎实的学习路径。通过阅读和实践,开发者可以逐步掌握Android开发的技巧,从而创造出功能丰富...

    5G移动通信标准与构架以及38.331RRC协议标准.zip

    通过阅读“R15 38.331 无线资源控制(RRC)协议规范.pdf”和“深入浅出:5G移动通信标准和构架-预览版.pdf”这两份资料,可以深入了解5G的核心技术和协议细节,从而更好地适应未来通信行业的发展。

    深入浅出Servlets.and.JSP第二版

    《深入浅出Servlets and JSP第二版》作为一本专注于Java Web开发技术的书籍,主要涵盖了Servlet和JSP两项技术,并且强调了学习过程中的趣味性和易理解性。下面,我们来详细探讨一下从给定信息中可以提取的相关知识点...

    深入浅出iPhone开发

    《深入浅出iPhone开发》是一本专为iPhone应用程序开发初学者编写的指南,旨在通过实际应用案例,系统地介绍iOS开发的各项技术。本书的核心目标是让读者能够从零基础逐步掌握开发iPhone应用所需的知识和技能。 在iOS...

    深入浅出:使用Python编程].pdf

    - **综合评价**:从整体上看,《深入浅出 Python(中文版)》被赞誉为一本既有趣又实用的编程学习指南,它不仅适合初学者,也适合那些想要深入了解Python编程技术的开发者们。 总之,《深入浅出 Python(中文版)》...

    深入浅出javascript pdf与实例

    "深入浅出JavaScript" 是一套专门针对JavaScript初学者和进阶者设计的学习资料,旨在帮助读者全面理解这门语言,并通过实例加深对概念的理解。这本书的中文版——"Head First JavaScript",以其独特的视觉和互动式...

Global site tag (gtag.js) - Google Analytics