音视频流媒体开发【四十九】HLS流媒体1-HLS流媒体服务器配置

2023-05-08  本文已影响0人  AlanGe

音视频流媒体开发-目录
iOS知识点-目录
Android-目录
Flutter-目录
数据结构与算法-目录
uni-pp-目录

服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS)

推流端:ffmpeg

拉流端:ffplay +VLC + srs播放器

0 HLS简介

作为 Apple 提出的⼀种基于 HTTP 的协议,HLS(HTTP Live Streaming)⽤于解决实时⾳视频流的传输。尤其是在移动端,由于 iOS /H5 不⽀持 flash,使得 HLS 成了移动端实时视频流传输的⾸选。HLS经常⽤在直播领域,⼀些国内的直播云通常⽤ HLS 拉流(将视频流从服务器拉到客户端)。 HLS 值得诟病之处就是其延迟严重,延迟通常在 10-30s 之间。

框架


(1) 对直播流进行分片,分片数量固定,每个分片的时长也基本固定
(2) 对于直播流而言,分片数量是固定的,过时的分片会被删除,只会保存最新的分片
(3) index file 存储目前的分片信息
(4) 存储ts文件
(5) 通过http协议读取服务器的文件
先读取index file,然后解析index file,然后读取相应的ts文件,把ts文件送给播放器播放
(6) index file是持续更新的,有新的ts文件生成就会更新
(7) 每次index file的ts文件读取完毕后,会再次去读取index file文件,获取新的index file,继续读取最新的ts文件

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

1.1 安装srs流媒体服务器

srs官⽹:https://github.com/ossrs/srs

码云的源速度快:https://gitee.com/winlinvip/srs.oschina.git

github的源速度慢:https://github.com/ossrs/srs.git

选择当前最新的release版本3.0

第⼀步,获取SRS。详细参考GIT获取代码
git clone [https://gitee.com/winlinvip/srs.oschina.git](https://gitee.com/winlinvip/srs.oschina.git)
cd srs.oschina
cd trunk
第⼆步,编译SRS。详细参考Build
./configure && make
第三步,编写SRS配置⽂件。详细参考RTMP分发,Delivery HLS,Delivery HTTP FLV编辑 conf/srs.conf ,服务器启动时指定该配置⽂件(srs的conf⽂件夹有该⽂件)。
listen                 1935;
max_connections     1000;
srs_log_tank         file;
srs_log_file         ./objs/srs.log;
http_api {
    enabled         on;
    listen             1985;
}

http_server {
    enabled on;
    listen 8081;     # http监听端⼝
    dir             ./objs/nginx/html;
}

stats {
    network         0;
    disk sda         sdb xvda xvdb;
}

vhost __defaultVhost__ {
    # hls darren
    hls {
        enabled            on;
        hls_path         ./objs/nginx/html;
        hls_fragment     5; # 分⽚时⻓ 秒
        hls_window         25; # 最⼤缓存的时⻓ 秒
    }

    # http-flv darren

    http_remux {
        enabled     on;
        mount         [vhost]/[app]/[stream].flv;
        hstrs         on;
    }
}
第四步,启动SRS。
./objs/srs -c conf/srs.conf

1.2 测试srs流媒体服务器

第五步,启动推流编码器。详细参考RTMP分发

使⽤FFMPEG命令推流:

ffmpeg -re -i source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.11/live/livestream

注: 上述命令中的flv完整路径,以及srs server ip,⼤家根据情况⾃⾏替换为实际值。 另外:默认情况下srs的rtmp采⽤1935端⼝,如果该端⼝被占⽤或修改了srs.conf中的端⼝,注意根据情况调整;防⽕墙如果开了,也要检测下1935是否允许访问。

第六步,观看RTMP/HLS/HTTP-FLV流

RTMP流地址为: rtmp://192.168.1.11/live/livestream

HTTP FLV: http://192.168.1.11:8080/live/livestream.flv

HLS流地址为: http://192.168.1.11:8080/live/livestream.m3u8

可以使⽤ffplay或者vlc以及 http://ossrs.net/srs.release/trunk/research/players/srs_player.html进⾏测试。

2 协议

https://tools.ietf.org/html/draft-pantos-http-live-streaming-06

上一篇 下一篇

猜你喜欢

热点阅读