`

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

阅读更多

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直播

 

 

 

分享到:
评论

相关推荐

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

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

    5G移动通信网络体系架构及其关键技术.pdf

    5G移动通信网络体系架构及其关键技术.pdf

    (高清+目录)深入浅出MyBatis技术原理与实战.zip

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

    深入浅出iPhone开发(清晰版,内含中英2个版本的书)

    知名的Head First系列丛书之一,风格与其他Head First系列一脉相承,一定能让读者轻松学会iPhone开发,《深入浅出iPhone开发》是针对iPhone开发的初学者设计的,以几个应用实例的开发为例,循序渐进地对iPhone开发的...

    深入浅出Cocoa教程

    这是本人在学习和使用 Cocoa 开发过程...CSDN移动开发专栏《深入浅出Cocoa》包含了这个pdf 中的所有文章,并会持续添加新的文章,欢迎大家访问该专栏(http://blog.csdn.net/column/details/cocoa.html),查看最新情况。

    深入浅出Android

    对于Android移动应用平台的入门技术书

    5G移动通信系统与技术(PDF,99页)

    5G移动通信系统与技术课程 1、5G标准发展概述 2、5G核心能力指标 3、5G关键无线技术 4、5G新型网络架构 5、5G重要网络技术 6、5G特色业务应用

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

    您将从《深入浅出 Python(中文版)》学会什么?  你想过可以通过一本书就学会Python吗?《Head First Python(中文版)》超越枯燥的语法和用法手册,通过一种独特的方法教你学习这种语言。你会迅速掌握Python的...

    5G技术与标准介绍.rar

    吐血推荐最全、最详细的5G技术与标准介绍,深入浅出的讲解5G的技术的各方面知识,包含:5G场景与需求、标准与产业、5G网络技术之传输介绍、5G网络技术之核心网介绍、5G网络技术之接入网架构与接口介绍、5G新空口之...

    移动通信技术与设备 (解相吾 pdf)

    《移动通信技术与设备》从实际应用出发,深入浅出地介绍了移动通信技术的基本理论知识和相关设备的基本原理。全书共11章,主要内容包括移动通信的基本概念、移动通信的主要技术、移动通信的网络结构、移动通信的电波...

    WPF深入浅出.zip

    WPF是微软新一代开发技术,涵盖了桌面应用程序开发、网络应用程序开发和移动应用程序开发,是微软开发技术未来十年的主要方向。 本书的内容分为两大部分。第一部分是学习WPF开发的基础知识,包括XAML语言的详细剖析...

    WPF深入浅出_pdf

    WPF是微软新一代开发技术,涵盖了桌面应用程序开发、网络应用程序开发和移动应用程序开发,是微软开发技术未来十年的主要方向。 本书的内容分为两大部分。第一部分是学习WPF开发的基础知识,包括XAML语言的详细解剖...

    深入浅出WiMax_爱立信

    近一段时间,WiMAX 这一个名词...有人说它将是对3G 的一个补充,有人说它将对移动运营网络构成威胁,也有人说它是无线宽带接入的一项技术手段。那么,WiMAX 是什么,它的现状和未来如何? 我们以下就来讨论这一些问题。

    对话移动互联网

    本书用通俗易懂的语言、轻松的人物对话形式,深入浅出地介绍了移动互联网的知识,包括移动互联网的发展、关键技术、移动操作系统(OS)与浏览器、业务以及综合方案等内容。全书知识系统、重点突出、内容实用,以趣味性...

    webpack系统学习,基于深入浅出webpack.zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

    对话移动互联网 [中兴通讯学院编] 2010年版

    本书用通俗易懂的语言、轻松的人物对话形式,深入浅出地介绍了移动互联网的知识,包括移动互联网的发展、关键技术、移动操作系统(OS)与浏览器、业务以及综合方案等内容。全书知识系统、重点突出、内容实用,以趣味...

    Ad Hoc网络技术(郑少仁)----绝对能看、完整版

    本书将迅速发展的Ad Hoc网络技术同基本原理结合起来,既深入浅出地介绍Ad Hoc网络各个技术方面的基本概念,又比较深入地介绍了相关的技术内涵。 本书可作为高等院校通信工程类、电子信息及计算机应用工程类本科高...

    智能技术与移动医疗

    这是微软公司医疗行业专家所讲的ppt文件,深入浅出地说出了移动医疗的未来,智能计算到底给移动医疗带来了什么?

    Rxjava+ReTrofit+okHttp深入浅出-终极封装三(多文件下载之断点续传)

    rxjava+retrofit+okhttp集合的封装断点续传下载一直是移动开发中必不可少的一项重要的技术,同样的Rxjava和Retrofit的结合让这个技术解决起来更加的灵活,我们完全可以封装一个适合自的下载框架,简单而且安全!

    中国区块链技术和应用发展白皮书

    非常权威,深入浅出的讲解了区块链在物联网、智能制造、供应链管理、数字资产交易等多个领域的融合和落地方案,同时分析了区块链与云计算、大数据、移动互联网等新一代信息技术的发展带来新的机遇,有能力引发新一轮...

Global site tag (gtag.js) - Google Analytics