SRS 分发HLS 跨域问题

本文介绍如何配置SRS服务器实现HLS直播流的分发,并通过nginx进行跨域设置,使得前端能够顺利播放。具体步骤包括修改SRS配置文件启用HLS功能、配置nginx以支持跨域请求及前端播放器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、SRS 分发

 1、通过修改配置 usr/local/srs/conf:的srs.conf,增加如下配置,开通srs的hls功能。

 http_stream     注释: //srs 版本不一样 配置信息头可能不一样

{

    enabled        on;

    listen         8080;

    dir          ./objs/nginx/html;

}

 

stats {

    network         0;

    disk            sda sdb xvda xvdb;

}

 

vhost __defaultVhost__ {

  hls {     

        enabled         on;      

        hls_path        ./objs/nginx/html;     

        hls_fragment    10;   

        hls_window      60;     

        hls_on_error    ignore;

}

 

2 打开防火墙firewall-cmd zone=public add-port=8080/tcp permanent 8080端口

3 、重新启动SRS,选用的配置文件是你修改的文件。

4、通过VLC测试看到视频,视频地址是:http://XXX.XXX.XXX:8080/live/1615279268011.m3u8

 

二、HLS跨域

1、修改服务端配置

       后端启动 nginx 做反向代理。启动nginx

server {

        listen       80;     #前端的网址不需要加8080端口了。访问的时候直接去端口,默认80

        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html;

            index  index.html index.htm;

            proxy_pass   http://localhost:8080;     #代理到8080.

            add_header Cache-Control no-cache;

            add_header Access-Control-Allow-Origin *;

         }

 

        location ~* \.m3u8 {

         proxy_pass   http://localhost:8080;

         root /usr/local/srs/objs/nginx/html/;

         add_header Access-Control-Allow-Origin *;

      }

 

       location ~* \.ts {

       proxy_pass   http://localhost:8080;

       root /usr/local/srs/objs/nginx/html/;

       add_header Access-Control-Allow-Origin *;

       }

}

 

2、test.html(前端用可通过html5解封包播放(hls.js))

<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>

<video id="video"></video>

<script>

 if (Hls.isSupported()) {

            var config = {

                autoStartLoad: true,

                capLevelToPlayerSize: true

            };

            let video = document.getElementById('video')

            let hls = new Hls(config)

            hls.attachMedia(video

            hls.loadSource('http://XXX.XXX.XXX/live/1615517176700.m3u8'),这里需要nginx代理监听80,所以端口不要写8080

            hls.on(Hls.Events.MANIFEST_PARSED, function () {

                console.log("加载成功");

                video.play()

            })

        

            hls.on(Hls.Events.ERROR, (event, data) => {

                console.log(event, data);

               // console.log("加载失败");

            });

        }

 

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值