侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

视频点播解决方案HLS(1)之流媒体及HLS概述

zze
zze
2019-11-05 / 0 评论 / 0 点赞 / 684 阅读 / 3039 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

流媒体

流媒体(Streaming Media)技术是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。  
流媒体实际指的是一种新的媒体传送方式,有声音流、视频流、文本流、图像流、动画流等,而非一种新的媒体。流媒体文件格式是支持采用流式传输及播放的媒体格式。常用格式有:

  • RA:实时声音;
  • RM:实时视频或音频的实时媒体;
  • RT:实时文本;
  • RP:实时图像;
  • SMIIJ:同步的多重数据类型综合设计文件;
  • SWF:real flash和shockwavc flash动面文件;
  • RPM:HTMI。文件的插件;
  • RAM:流媒体的源文件,是包含RA、RM、SMIIJ文件地址(URL地址)的文本文件;
  • CSF:一种类似媒体容器的文件格式,可以将非常多的媒体格式包含在其中,而不仅仅限于音、视频,如 quicktime、mov、asf、wmv、wma、avi、mpeg、mpg、dat、mts;
  • aam:多媒体教学课件格式,可将 authorware 生成的文件压缩为 aam 和 aas 流式文件播放;

概括理解:流媒体就是将视频文件分成许多小块儿,将这些小块儿作为数据包通过网络发送出去,实现一边传输视频数据包一边观看视频。

流式传输

在网络上传输音、视频信息有两个方式:下载和流式传输。

  • 下载:就是把音、视频文件完全下载到本机后开始播放,它的特点是必须等到视频文件下载完成方可播放,播放等待时间较长,无法去播放还未下载的部分视频。
  • 流式传输:就是客户端通过链接视频服务器实时传输音、视频信息,实现“边下载边播放”。

流式传输又分为两类:

  • 顺序流式传输:即顺序下载音、视频文件,可以实现边下载边播放,不过,用户只能观看已下载的视频内容,无法快进到未下载的视频部分,顺序流式传输可以使用 http 服务器来实现,比如 Nginx、Apache 等。
  • 实时流式传输:实时流式传输可以解决顺序流式传输无法快进的问题,它与 Http 流式传输不同,它必须使用流媒体服务器并且使用流媒体协议来传输视频,它比 Http 流式传输复杂。常见的实时流式传输协议有 RTSP、RTMP、RSVP 等。

流媒体的结构概要

image.png

  1. 将原始的视频文件通过编码器转换为合适的网络传输的流格式,编码后的视频直接输送给媒体服务器。原始视频文件通常是事先录制好的视频,比如通过摄像机、摄像头等录像、录音设备采集到的音视频文件,体积较大、要想在网络上传输需要经过压缩处理,即通过编码器进行编码;
  2. 媒体服务器获取到编码好的视频文件,对外提供流媒体数据传输接口,常见包括:HTTP、RTSP、RTMP 等。
  3. 播放器通过流媒体协议与媒体服务器通信,获取视频数据,播放视频;

点播方案

  • 播放器通过 http 协议从 http 服务器上下载视频文件进行播放

问题:必须等到视频下载完才可以播放,不支持快进到某个时间点进行播放。

  • 播放器通过 rtmp 协议连接媒体服务器以实时流方式播放视频;

使用 rtmp 协议需要架设媒体服务器,造价高,对于直播多采用此方案。

  • 播放器使用 HLS 协议连接 http 服务器(Nginx、Apache 等)实现近实时流方式播放视频

HLS协议规定:基于Http协议,视频封装格式为 ts,视频的编码格式为 H264,音频编码格式为 MP3、AAC 或者 AC-3。

HLS是什么

HLS (HTTP Live Streaming)是 Apple 的动态码率自适应技术。主要用于 PC 和 Apple 终端的音视频服务。包括一个 m3u(8) 的索引文件,TS 媒体分片文件和 key 加密串文件。
常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对 iPhone、iPod、iTouch 和 iPad 等移动设备而开发的流,现在在桌面也有很多应用了,HTML5 是直接支持这个。
但是 HLS 协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS 协议对存储 I/O 要求相当苛刻。对此,也有公司提出了非常好的解决方案,那就是新型点播服务器系统。
新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:
不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。

image.png

HLS 的工作方式是:将视频拆分成若干个 ts 格式的小文件,通过 m3u8 格式的索引文件对这些 ts 小文件建立索引。一般 10 秒一个 ts 文件播放器连接 m3u8 文件播放,当快进时通过 m3u8 文件即可找到对应的 ts 文件并立即去下载,从而实现快进、快退以近实时的方式播放视频。
IOS、Android 设备及各大浏览器都支持 HLS 协议。

0
HLS

评论区