hls视频播放-hls认知

1 背景

由于在项目中集成视频播放功能,集成已有的ocx控件涉及到浏览器的兼容性,网页体验不好,后经过查找,引入hls相关技术进行视频播放

2 HLS简介

维基百科的定义:

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

几个关键规定:

(1)视频的封装格式是TS。

(2)视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。

(3)extended M3U (m3u8) playlist即 m3u8文件,视频文件播放列表

需要注意的点:

采用HLS协议直播的视频延迟时间无法下到10秒以下,而RTMP协议的延迟最低可以到3、4秒左右,因此对于直播延迟比较敏感的服务需要慎用。

3 HLS的工作流程

官方协议工作流程图:

4 m3u8文件格式(索引文件)

索引文件包含所有视频源数据的地址

文件格式释义,参考链接:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23

5 hls的两种模式

(1)直播:使用动态的播放列表文件,需要实时更新播放索引文件

(2)点播:使用静态的播放列表文件,列表文件指向所有的播放文件

6 web端应用

WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 HLS 为主(HLS存在延迟性问题,也可以借助 video.js 采用RTMP),PC端则以 RTMP 为主实时性较好。

HLS 在 PC 端仅支持safari浏览器,chrome浏览器使用HTML5 video标签无法播放 m3u8 格式,但是已有比较成熟的解决方案可以采用,比如 video.js,videojs-contrib-hls

7 解决方案的参考

参考简书上的几种解决方案的整理:https://www.jianshu.com/p/4cbdfc4a9b90

原文地址:https://www.cnblogs.com/dpwow/p/9592214.html

时间: 2024-10-24 15:21:53

hls视频播放-hls认知的相关文章

hls视频播放-基于ChPlayer

由于非Safari浏览器不能直接支持hls视频播放,使用Html5的video标签嵌入视频文件进行播放,由于video标签只支持MP4.WebM.Ogg等格式, 无法加载hls的m3u8格式文件,不能用在chrome,ie等浏览器上.  基于ChPlayer 视频播放 经过查询资料发现ChPlayer,使用ChPlayer进行视频的播放,支持点播和直播,支持m3u8格式. 调用示例: <script type="text/javascript"> var videoObje

[视频播放] HLS协议之M3U8、TS流详解

本文转载自:<hls之m3u8.ts流格式详解> HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件. 1.M3U8文件 用文本方式对媒体文件进行描述,由一系列标签组成. #EXTM3U #EXT-X-TARGETDURATION:5 #EXTINF:5, ./0.ts #EXTINF:5, ./1.ts #EXTM3U:每个M3U8文件第一行必须是这个tag. #

小玩流媒体播放——HLS流媒体点播系统

背景:前一段时间帮助一个朋友研究了下流媒体播放方面的知识,感觉挺好玩的.现在把浅薄的尝试和总结分享给大家. 一.HLS流媒体点播系统概述 HTTP Live  Streaming最初是苹果公司针对其iPhone.iPod.iTouch和iPad等移动设备而开发的流媒体协议,后来在桌面QuickTime播放器中也得到了应用.HTTP  Live  Streaming允许内容提供者通过普通Web服务器向上述客户端提供接近实时的音视频流媒体服务,包括直播和点播.HTTP  Live Streaming

CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源      [[email protected] ~]# wget -c http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm      [[email protected] ~]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt      [[email 

HLS协议实现

一.HLS介绍 HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包含两部分,一是M3U8描写叙述文件,二是TS媒体文件. 1.M3U8文件 用文本方式对媒体文件进行描写叙述,由一系列标签组成. #EXTM3U #EXT-X-TARGETDURATION:5 #EXTINF:5, ./0.ts #EXTINF:5, ./1.ts #EXTM3U:每一个M3U8文件第一行必须是这个tag. #EXT-X-TARGETD

直播协议的选择:RTMP vs. HLS

前言 随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟人打招呼.想要做一个直播业务,主要包括三个部分:采集推流端.流媒体服务端.播放端.这里不多说,就主要结合 iOS 平台,从观看端出发,介绍一下对直播协议的选择. 通常在 iOS 平台做直播业务,会有两种协议可供选择:HLS 和 RMTP. HLS,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系

SRS配置HLS分发

一.HLS简介 HLS(HTTP Live Streaming) 是Appale公司在2009年发布的,可以通过普通的web服务器进行分发的新型流媒体协议. HLS协议文件:http://tools.ietf.org/html/draft-pantos-http-live-streaming-07 HLS提供一个m3u8列表,播放地址像这样:http://IP[port]/[app]/live.m3u8,其实m3u8是一个ts的list,但是在这个list中要需要定义一些关键的参数,这些参数都有

windows下一分钟配置ngnix实现HLS m3u8点播

1. 下载 nginx-1.5.10 for windows 2. 修改配置文件nginx-1.5.10\conf\nginx.conf,增加以下行到最后一个"}"的前一行: location /hls { # Serve HLS fragments types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /temp; add_header Cache-Control no-cache; } 同时,新建子目录:

使用Nginx+FFMPEG搭建HLS直播转码服务器

目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPEG转码多码率功能. 一.准备工作 模块:nginx-rtmp-module-master(支持rtmp协议) 下载地址: http://nginx.org https://github.com/arut/nginx-rtmp-module 1.安装依赖包: #yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel exp