【转】HLS视频点播&直播初探

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

前端可选的视频直播协议大致只有两种:

  • RTMP(Real Time Messaging Protocol)
  • HLS(HTTP Live Streaming) 其中RTMP是Adobe开发的协议,无法在iPhone中兼容,故目前兼容最好的就是HLS协议了。

HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。原理上是将视频流分片成一系列HTTP下载文件。所以,HLS比RTMP有较高的延迟。

前端播放HLS

  • Native支持

    1. Android 3.0+
    2. iOS 3.0+
  • flash支持
    1. Flowplayer(GPL ×
    2. GrindPlayer(MIT)
    3. video-js-swf(Apache License 2.0)
    4. MediaElement.js(MIT)
    5. clappr(BSD IE10+ ×

最后,由于MediaElement已经纳入WordPress的核心视音频库,以及其良好的兼容性(见下图),所以最后选择使用MediaElement.js来实现。

切片准备

可使用m3u8downloader下载一个HLS源,或者使用node-m3u生成m3u8索引和MPEG-TS切片,下面是我们准备切片:

https://github.com/miniflycn/HLS-demo/tree/master/m3u8

注意看切片索引文件:

#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.133333,
fileSequence0.ts
#EXTINF:10.000666,
fileSequence1.ts
#EXTINF:10.667334,
fileSequence2.ts
#EXTINF:9.686001,
fileSequence3.ts
#EXTINF:9.768665,
fileSequence4.ts
#EXTINF:10.000000,
fileSequence5.ts
#EXT-X-ENDLIST

其中#EXT-X-ENDLIST为切片终止标记,如果没有该标记,浏览器会在文件读取完后再请求索引文件,如果有更新则继续下载新文件,以此达到直播效果。

前端代码

<!DOCTYPE html>
<html>
<head>
<title>player</title>
<link rel="stylesheet" href="./player/mediaelementplayer.css" />
<style>
/** 隐藏控制条 **/
.mejs-controls {
    display: none !important;
}
</style>
</head>
<body>
<video width="640" height="360" id="player1">
    <source type="application/x-mpegURL" src="/m3u8/index.m3u8">
</video>
<script src="http://7.url.cn/edu/jslib/jquery/1.9.1/jquery.min.js"></script>
<script src="./player/mediaelement-and-player.js"></script>
<script>
var player = new MediaElementPlayer(‘#player1‘, {
    // 禁止点击暂停
    clickToPlayPause: false,
    success: function (media, ele, player) {
        // 初始化后立刻播放
        player.play();
    }
});
</script>
</body>
</html>

效果

例子源码

https://github.com/miniflycn/HLS-demo

时间: 2024-12-17 00:30:43

【转】HLS视频点播&直播初探的相关文章

HLS视频点播&amp;直播初探

前端可选的视频直播协议大致只有两种: RTMP(Real Time Messaging Protocol) HLS(HTTP Live Streaming) 其中RTMP是Adobe开发的协议,无法在iPhone中兼容,故目前兼容最好的就是HLS协议了. HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播.原理上是将视频流分片成一系列HTTP下载文件.所以,HLS比RTMP有较高的延迟. 前端播放HLS Native支持 And

OTT系统和IPTV方案哪个更适合用于搭建局域网视频点播直播

网路的发展影响着我们生活的各个方面,往大了说国家的各种竞争都是科技的竞争,往小了说我们的生活如果离开网络简直就像生活在原始社会.不说工作了就说回到家连简单的休息都不能做到.所以现在城市小区局域网的建设是基础建设之一,而在现在生活休闲中视频影音系统是主流,也是在小区中占比比较大的,而现在的小区少则上万人多则几十万,如果高峰时同时对于网络有大量请求的话,对于小区的带宽压力将会极大.尤其是现在很多热门影视剧综艺节目播放的时候,很多都是重复的请求,如果在小区内部建设自己的缓存系统将可以大大降低带宽的压力

原:视频直播技术中的参考技术网页

1. [置顶] [总结]视音频编解码技术零基础学习方法 http://blog.csdn.net/leixiaohua1020/article/details/18893769 2. HTTP Live Streaming直播(iOS直播)技术分析与实现 http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 3. 最简单的基于FFmpeg的移动端例子附件:IOS自带播放器(全部平台的示例) http://blog.csd

sobel 使用说明

转自http://www.cnblogs.com/justany/archive/2012/11/23/2782660.html OpenCV 2.4+ C++ 边缘梯度计算 2012-11-23 09:11 by Justany_WhiteSnow, 16594 阅读, 6 评论, 收藏, 编辑 图像的边缘 图像的边缘从数学上是如何表示的呢? 图像的边缘上,邻近的像素值应当显著地改变了.而在数学上,导数是表示改变快慢的一种方法.梯度值的大变预示着图像中内容的显著变化了. 用更加形象的图像来解释

使用ffmpeg搭建HLS直播系统

[时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. 主要目的是使用ffmpeg搭建一个简单的HLS点播及直播系统.使用nginx作为HTTP服务器. HLS不管点播还是直播,都是基于HTTP的文件分发系统,所以本文的基本思路是: 使用nginx搭建HTTP服务器 使用ffmpeg实现ts文件的分片,并生成m3u8 ffmpeg使用本地文件模拟HLS

nginx视频直播/点播服务干货分享

近年互联网直播业务非常火热.我也研究了下,发现nginx上配置视频直播点播也很容易实现,特分享一下.一.ubuntu14.04安装nginx及nginx_rtmp_module扩展 nginx根据是否已安装和安装的方式不同,有一下三种方式安装及扩展安装.1.全新安装nginx和nginx_rtmp_module扩展 #!/bin/sh apt-get update apt-get install -y gcc libpcre3 libpcre3-dev openssl libssl-dev ma

直播技术细节2

直播协议的选择 国内常见公开的直播协议有几个:RTMP.HLS.HDL(HTTP-FLV).RTP,我们来逐一介绍. RTMP协议: 是Adobe的专利协议,现在大部分国外的CDN已不支持.在国内流行度很高.原因有几个方面: 1.开源软件和开源库的支持稳定完整.如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件. 2.播放端安装率高.只要浏览器支持FlashPlayer就能非常简易的播放RTMP的直播,协议详解可以Google了解.相对其他协议而言,RTMP协议

HTTP Live Streaming直播(iOS直播)技术分析与实现

http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 不经意间发现,大半年没写博客了,自觉汗颜.实则2012后半年,家中的事一样接着一样发生,实在是没有时间.快过年了,总算忙里偷闲,把最近的一些技术成果,总结成了文章,与大家分享. 前些日子,也是项目需要,花了一些时间研究了HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器HLSLiveEncoder,当然,C++写的.其功能是采集摄像头与麦克

转: HTTP Live Streaming直播(iOS直播)技术分析与实现

http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html HTTP Live Streaming直播(iOS直播)技术分析与实现 不经意间发现,大半年没写博客了,自觉汗颜.实则2012后半年,家中的事一样接着一样发生,实在是没有时间.快过年了,总算忙里偷闲,把最近的一些技术成果,总结成了文章,与大家分享. 前些日子,也是项目需要,花了一些时间研究了HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器