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

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

作者: AlanGe | 来源:发表于2023-05-08 21:14 被阅读0次

    音视频流媒体开发-目录
    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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/pvwlsdtx.html