十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。
M3U8是苹果专用的“视频格式”。M3U8视频只能苹果设备访问,即苹果设备才能解码此类视频。目前没有这样的播放器,需要用格式工厂转换。
用“格式工厂”软件可以把m3u8格式文件转换为avi格式文件。
操作为:
第一步:电脑上百度搜索“格式工厂”软件下载,安装完毕后打开。
第二步:点击“视频”,选择“mp4”。如图:
功能模块概述
通过obs客户端推流到nginx流媒体服务器上,对流媒体用ffmpeg将流剪切为若干段ts流文件并保存到临时目录中,通过访问m3u8格式拼接ts流文件段来观看直播。
推流端
采用开源工具OBS客户端进行推流
根据项目的推流地址,填入OBS客户端(下载地址)中,并设置场景,保存后重启,便可开始推流。
为更加稳定的推流,建议使用以上链接中的v0.625稳定版本,按提示安装完成后,打开设定.在广播设定中,伺服器统一填写我们项目的流媒体接收流地址:
rtmp://127.0.0.1:1935/hls/
以上这几个数据都是可以更改的。
127.0.0.1——你的流媒体服务器ip
1935——你的rtmp端口号
hls——你的直播nginx配置模块
具体在下文中也有详细介绍
配置地址
回到主界面,右键来源,选择添加视频捕捉设备或获取窗口等(相关设置默认即可),点击开始串流,便可开始直播。
添加场景
图为添加视频捕捉设备后的直播画面:
直播中
流媒体服务器
Nginx接收推流模块
rtmp_auto_push on;
rtmp {
server {
listen 1935;
application hls {
live on;
hls on;
hls_path /tmp/hls;
on_publish 项目地址/liveOnPublish;
on_publish_done 项目地址/liveOnDone;
notify_method get;
}
}
}
配上我在word上的注解
注解1
Nginx处理直播流模块
http {
server {
listen 80;
server_name localhost;
location /hls {
secure_link $arg_st,$arg_e;
secure_link_md5 key$arg_e;
subs_filter .ts '.ts?st=$arg_ste=$arg_eclentip=$remote_addr';
subs_filter_types application/vnd.apple.mpegurl;
if ($secure_link = "") {
return 402;
}
if ($secure_link = "0") {
return 403;
}
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
注解2
项目部署服务器
流媒体服务器不通过项目服务器,整个直播过程的推流和处理流都在流媒体服务器上进行。项目服务器主要进行直播地址加密处理意见推流开始和结束触发的方法(liveOnPublish(),liveOnDone())已及对直播地址加密.
播放端
直接通过HTML5中的video标签设置src来播放直播流。如:
video src="pro/live.m3u8?st=UM/L8jdfTlY2b1j1F6XSxA==e=1468548530
" controls="controls"/video
存在的问题
延迟待测试(不科学的数据是安卓手机普遍在30-40s,苹果手机在20-30s)
并发待测试
掉帧待测试(网速影响大,网络好几乎不掉帧,网络差掉一半,用户体验差)
H5edu教育HTML5开发解答:关于HTML5对视频的支持,主要体现在视频标签video上,video标签支持HLS、MP4等格式,这个要看不同浏览器的支持。HTML5对直播支持,可以采用HLS。具体到rtsp,HTML5是不能原生支持播放,但是可以嵌入vlc播放器进行播放。
我也遇到这个问题,据说使用方法其他串一样,把m3u8串传入src就行了。我亲测过了,在电脑上不行,在手机上可以。电脑是Chrome、safari、Mozilla的,手机是欧朋浏览器。之前我是用vlc插件的。现在Google都不支持NPAPI了。也用不了了。可以试试sewiseplayer,虽然是flash的但是开源的,里面都有例子,只要解决跨域问题,也是很好用的。