【音视频】HLS简介与服务器搭建

一、HLS介绍

1.1 HLS是什么?

HTTP 实时流(HLS)是使用最广泛的视频流协议之一。尽管它称为 HTTP"实时"流,但它同时适用于点播流和实时流。HLS 将视频文件分解为较小的可下载 HTTP 文件,并使用 HTTP 协议来交付。客户端设备加载这些 HTTP 文件,然后将它们作为视频进行播放。

HLS 的一个优点是,所有连入互联网的设备都支持 HTTP,因而它比需要使用专用服务器的流协议更易于实施。另一个优点是 HLS 流可以根据网络状况提高或降低视频质量,而不会中断播放。这就是在用户观看视频的过程中视频质量可能会变好或变差的原因。这个功能称为"自适应比特率视频传输"或"自适应比特率流式传输",如果没有它,慢速网络条件可能导致视频播放完全停止。

HLS 由 Apple 为 Apple 产品开发,但现在已广泛用于许多设备。

1.2 HLS 如何工作?

服务器:HLS 流源自于服务器,其中存储了媒体文件(在点播流式传输中)或创建了流(在实时流式传输中)。因为 HLS 基于HTTP,所以任何普通的 Web 服务器都可以发起流。

服务器上发生两个主要过程:

  • 编码:重新格式化视频数据,以便任何设备都能识别和解析数据。HLS 必须使用 H.264 或 H.265 编码。
  • 分段 :视频分成长度为几秒钟的片段。片段长度可变,但默认长度为 6 秒(2016 年为止是 10 秒)。
    • 除了将视频分割为片段外,HLS 还创建视频片段的索引文件,以记录它们所属的次序。
    • HLS 还会创建几组不同质量等级的重复片段:480p、720p 和 1080p 等。

分发:当客户端设备请求流时,已编码的视频段通过互联网推送到客户端设备。通常,内容交付网络 (CDN) 可以协助将流分发到地理上不同的区域。CDN 还可以缓存流,从而更快地将流提供给客户端。

客户端设备:客户端设备是接收流并播放视频的设备,例如用户的智能手机或笔记本电脑。客户端设备使用索引文件作为参考,以正确的顺序组装视频,并根据需要从更高质量影像切换到低质量影像(反之亦然)。

二、安装和测试srs流媒体服务器

1.1 安装srs流媒体服务器

第⼀步,获取SRS

shell 复制代码
git clone https://gitee.com/winlinvip/srs.oschina.git
cd srs.oschina
#使⽤当前最新的3.0版本
git checkout -b 3.0 remotes/origin/3.0release
cd trunk

第⼆步,编译SRS。

shell 复制代码
./configure
make -j$(nproc)

第三步,编写SRS配置⽂件,可以添加上hls对应的配置信息,比如最大缓存时长、分片时长等等

shell 复制代码
gedit conf/srs.conf
text 复制代码
hls {
	enabled on;
	hls_path ./objs/nginx/html;
	hls_fragment 5; # 分⽚时⻓5秒
	hls_window 25; # 最⼤缓存的时⻓25秒
}

第四步,启动srs服务器

shell 复制代码
./objs/srs -c conf/srs.conf

第五步,监听srs服务器日志

shell 复制代码
tail -n 30 -f objs/srs.log

三、测试推流和拉流

使用ffmpeg推流RTMP流

shell 复制代码
 ffmpeg -re -i 1.mp4 -vcodec h264 -acodec aac -f flv rtmp://10.22.79.251/live/livestream

使用ffplay拉流RTMP流

shell 复制代码
ffplay -i rtmp://10.22.79.251/live/livestream

使用ffplay拉流HLS流,这里是服务器内存转换的

shell 复制代码
ffplay -i http://10.22.79.251:8080/live/livestream.m3u8

对比RTMP拉流和HLS拉流的区别,可以发现,HLS的延迟相比RTMP差距有点大

更多资料:https://github.com/0voice

相关推荐
大树8816 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠16 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
潜创微科技16 小时前
HDMI1.3 无线传输芯片方案 空旷 150 米量产级音视频方案
音视频
霸道流氓气质16 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
VidDown16 小时前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
换个昵称都难16 小时前
音频格式之WAV
音视频
小宇宙Zz17 小时前
Maven依赖冲突
java·服务器·maven
AI创界者17 小时前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
Inhand陈工17 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智18 小时前
ARP代理--工作原理
运维·网络·arp·arp代理