TSINGSEE青犀视频Easy系列视频平台是如何输出HLS流的?HLS协议详解

Easter79
• 阅读 415

关于Easy系列的视频平台都可以输出几种不同的视频流,其中包括FLV、HLS。本文我们来讲一下Easy系列视频平台输出的HLS协议视频流。

TSINGSEE青犀视频Easy系列视频平台是如何输出HLS流的?HLS协议详解

HLS协议介绍

HLS的工作原理是把整个流分成一个个基于 HTTP 的文件片段来下载,当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。

TSINGSEE青犀视频Easy系列视频平台是如何输出HLS流的?HLS协议详解

HLS只请求基本的 HTTP 报文,与实时传输协议(RTP)不同,HLS 可以穿过任何允许 HTTP 数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

简而言之,HLS 是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录于 m3u8 文件(即 playlist)内,其中附带一些额外描述(比如该资源的多带宽信息···)用于提供给客户端。客户端依据该 m3u8 文件即可获取对应的媒体资源,进行播放。
TSINGSEE青犀视频Easy系列视频平台是如何输出HLS流的?HLS协议详解

因此,当我们的流媒体服务器视频平台获取 HLS 流文件,主要就是对 m3u8 文件进行解析操作。

那么,下面就简单介绍下 m3u8 文件。

M3U8文件展示

m3u8文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。

TSINGSEE青犀视频Easy系列视频平台是如何输出HLS流的?HLS协议详解

M3U8中包含基础标签:

  • EXTM3U:表明该文件是一个 m3u8 文件,每个 m3u8 文件必须将该标签放置在第一行。
  • EXT-X-VERSION:表示 HLS 的协议版本号,该标签与流媒体的兼容性相关。该标签为全局作用域,使能整个 m3u8 文件;每个 m3u8 文件内最多只能出现一个该标签定义。如果 m3u8 文件不包含该标签,则默认为协议的第一个版本。
  • EXTINF:表示其后 URL 指定的媒体片段时长(单位为秒)。每个 URL 媒体片段之前必须指定该标签,其值必须小于或等于 EXT-X-TARGETDURATION 指定的值。

最通俗易懂的说法就是m3u8相当于一本书的目录,具体的ts文件就是书本每一章节具体的内容,播放器通过这个目录来加载读取每个章节具体的内容展示播放。目录上明确标识了该章节具体需要注意和设置的地方。

本文给大家简单讲述了HLS协议,同理以上的内容,Easy系列视频平台在播放HLS视频流的时候也是以上操作,所以TS文件的作用就在这里。如果大家对我们的ts切片感兴趣,可以回顾一下我们之前写过的ts切片大小设置。视频相关解决方案均可访问TSINGSEE青犀视频,如有需求或疑问,欢迎随时联系我们!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
2年前
RTSP协议外网视频直播监控无法播放WS
TSINGSEE青犀视频产品中,EasyNVR、EasyGBS等都是支持播放WSFLV格式的视频流的,曾经我们也处理过EasyGBS无法播放wsflv视频流的问题,大家可以回顾一下解决过程。在EasyNVREasyNVS系统架构中,同样也出现了EasyNVS在通道配置页面中播放视频流时,WSFLV无法播放的情况。!221.png(http
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Nebula Graph 在微众银行的实践
本文为微众银行大数据平台工程师——周可在nMeetup深圳场的演讲文字稿,演讲视频参见:B站(戳「阅读原文」观看)!(https://oscimg.oschina.net/oscnet/884d81502c744b76be00eb2a1b07d3c7.png)自我介绍下,我是微众银行大数据平台的工程
Stella981 Stella981
2年前
EasyDSS流媒体服务器软件对数据库Sqlite3和MySQL的同时支持说明
EasyDSS流媒体音视频直播与点播服务器软件,是一套提供一站式的转码、点播、直播、检索、回放、录像下载服务的高性能RTMP/HLS/HTTPFLV流媒体服务,极大地简化了流媒体相关业务的开发和集成的工作。其中,点播功能主要包含:上传、转码、分发。直播功能,主要包含:直播、录像,直播支持RTMP输入,RTMP/HLS/HTTPFLV
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k