HLS简介
作为 Apple 提出的一种基于 HTTP 的协议,HLS(HTTP Live Streaming)用于解决实时音视频流的传 输。尤其是在移动端,由于 iOS /H5 不支持 flash,使得 HLS 成了移动端实时视频流传输的首选。HLS 经常用在直播领域,一些国内的直播云通常用 HLS 拉流(将视频流从服务器拉到客户端)。 HLS 值得诟 病之处就是其延迟严重,延迟通常在 10-30s 之间。
框架
安装HLS服务器
本次服务器搭建使用的是SRS,具体编译步骤可以参考 juejin.cn/post/740626…
SRS服务器配置文件
文件为conf/srs.conf
➜ trunk git:(v6.0.48) ✗ cat conf/srs.conf
# main config for srs.
# @see full.conf for detail config.
listen 1935;
max_connections 1000;
srs_log_tank file;
srs_log_file ./objs/srs.log;
daemon on;
http_api {
enabled on;
listen 1985;
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
hls {
enabled on;
hls_path ./objs/nginx/html; # 生成ts文件的路径
hls_fragment 5; # 分片时长,秒为单位
hls_window 25; # 最大缓存时长,秒
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
rtc {
enabled on;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
rtmp_to_rtc off;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
rtc_to_rtmp off;
}
play{
gop_cache_max_frames 2500;
}
}
启动服务
➜ trunk git:(v6.0.48) ✗ objs/srs -c conf/srs.conf
[2024-08-27 21:26:38.432][INFO][31751][46599qb6] XCORE-SRS/6.0.48(Bee)
[2024-08-27 21:26:38.433][INFO][31751][46599qb6] config parse complete
[2024-08-27 21:26:38.434][INFO][31751][46599qb6] you can check log by: tail -n 30 -f ./objs/srs.log
[2024-08-27 21:26:38.434][INFO][31751][46599qb6] please check SRS by: ./etc/init.d/srs status
查看下监听端口
➜ trunk git:(v6.0.48) ✗ ss -tunlp | grep srs
udp UNCONN 0 0 0.0.0.0:8000 0.0.0.0:* users:(("srs",pid=31753,fd=13))
tcp LISTEN 0 512 0.0.0.0:8080 0.0.0.0:* users:(("srs",pid=31753,fd=12))
tcp LISTEN 0 512 0.0.0.0:1935 0.0.0.0:* users:(("srs",pid=31753,fd=10))
tcp LISTEN 0 512 0.0.0.0:1985 0.0.0.0:* users:(("srs",pid=31753,fd=11))
测试
使用ffmpeg推流
使用rtmp推流,HLS主要用在拉流上
ffmpeg -re -i akagi.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.0.11/live/livestream
观看视频流
- RTMP流地址为: rtmp://192.168.0.11/live/livestream
- HTTP FLV: http://192.168.0.11:8080/live/livestream.flv
- HLS流地址为: http://192.168.0.11:8080/live/livestream.m3u8