当前位置: 首页 > news >正文

ubuntu 安装 SRS (Simple RTMP Server) 是一个开源的流媒体服务器

在 Ubuntu 系统上安装 SRS(Simple RTMP Server)可以按照以下步骤操作,适用于 Ubuntu 16.04 及以上版本:

一、推流协议

  1. RTMP通过 rtmp { listen 19350; } 配置,支持客户端使用 RTMP 协议推流,推流地址格式为:rtmp://你的服务器IP:19350/live/流名称(例如 rtmp://175.27.158.198:19350/live/test)。

  2. WebRTC通过 rtc_server 和 rtc { enabled on; rtmp_to_rtc on; rtc_to_rtmp on; } 配置,支持 WebRTC 推流。推流地址需结合 WebRTC 客户端实现,通常格式为:webrtc://你的服务器IP:8000/live/流名称(例如 webrtc://175.27.158.198:8000/live/test)。

二、拉流协议

  1. RTMP支持通过 RTMP 协议拉流,地址格式与推流一致:rtmp://你的服务器IP:19350/live/流名称

  2. HTTP-FLV通过 http_server { enabled on; listen 8081; } 和 http_remux { enabled on; } 配置,支持 HTTP-FLV 拉流,地址格式为:http://你的服务器IP:8081/live/流名称.flv(例如 http://175.27.158.198:8081/live/test.flv)。

  3. HLS通过 hls { enabled on; } 配置,支持 HLS 拉流,地址格式为:http://你的服务器IP:8081/live/流名称.m3u8(例如 http://175.27.158.198:8081/live/test.m3u8)。

  4. WebRTC支持通过 WebRTC 协议拉流,地址格式与推流一致:webrtc://你的服务器IP:8000/live/流名称

  • 推流支持:RTMP、WebRTC。
  • 拉流支持:RTMP、HTTP-FLV、HLS、WebRTC。

版本是

ubuntu@VM-16-17-ubuntu:/home/zhibo/srs/trunk$ sudo ./objs/srs -v
7.0.117

步骤 1:安装依赖

首先安装编译所需的依赖工具:

bash

sudo apt-get update
sudo apt-get install -y git gcc g++ make automake autoconf libtool pkg-config

步骤 2:克隆 SRS 源码

从 GitHub 克隆最新的 SRS 源码(也可指定版本,如 v5.0.182):

bash

git clone https://github.com/ossrs/srs.git
cd srs/trunk  # 进入源码主目录

如果仓库较大(SRS 是流媒体服务器,历史提交较多),可能因缓存不足导致下载源代码失败,增大缓存限制就可以正常下载了,命令如下:

git config --global http.postBuffer 524288000  # 设置为 500MB

步骤 3:编译 SRS

使用默认配置编译(支持 RTMP、HLS 等主流协议):

bash

./configure  # 生成编译配置
make         # 编译源码(耗时约 1-5 分钟,取决于硬件)

如果需要自定义配置(如开启 HTTPS、WebRTC 等),可在 configure 时添加参数,例如:

bash

./configure --with-ssl --with-webrtc  # 开启 SSL 和 WebRTC 支持
make

步骤 4:启动 SRS 服务

编译完成后,启动 SRS 服务:注意要进入到:/home/zhibo/srs/trun目录中执行命令

bash

./objs/srs -c conf/srs.conf  # 使用默认配置文件启动

默认配置文件 conf/srs.conf 已支持 RTMP 推流(端口 1935)和 HLS 分发(端口 8080),可直接使用。

# 先杀死残留进程
sudo pkill -f srs

打开服务

sudo ./etc/init.d/srs start   
  • 停止服务

    bash

    ./etc/init.d/srs stop
    
  • 重启服务

    bash

     sudo ./etc/init.d/srs restart
  • 查看服务状态(验证是否运行):

    bash

     sudo ./etc/init.d/srs  status

步骤 5:验证服务是否运行

  • 检查 SRS 进程:

    bash

    ps aux | grep srs
    

    若输出包含 ./objs/srs -c conf/srs.conf,则表示服务已启动。

  • 测试推流和拉流(需本地安装 ffmpeg 工具):访问ggfhttps://www.gyan.dev/ffmpeg/builds/

    下载win10系统版本,解压到目录,进入bin目录,复制目录位置路径,F:\ffmpeg-2025-11-02-git-f5eb11a71d-essentials_build\bin

    设置环境变量,把文件路径放在path中

    通过windows+R组合键,打开窗口,输入cmd,调用命令行窗口,输入“ffmpeg –version

  • 出现这个完成配制可以使用了

    1. 推流测试(使用本地视频文件):

      bash

      ffmpeg -re -i your_video.mp4 -c copy -f flv rtmp://localhost/live/test
      
    2. 拉流测试(RTMP 协议):使用支持 RTMP 的播放器(如 VLC)打开地址:rtmp://你的服务器IP/live/test
    3. 拉流测试(HLS 协议):访问地址:http://你的服务器IP:8080/live/test.m3u8

步骤 6:设置开机自启动(可选)

若需 SRS 随系统启动,可创建系统服务:

  1. 创建服务文件:

    bash

    sudo nano /etc/systemd/system/srs.service
    
  2. 写入以下内容(注意修改 srs 源码路径):

    ini

    [Unit]
    Description=Simple RTMP Server (SRS)
    After=network.target[Service]
    Type=simple
    WorkingDirectory=/path/to/srs/trunk  # 替换为你的 SRS 源码目录
    ExecStart=/path/to/srs/trunk/objs/srs -c conf/srs.conf
    Restart=always[Install]
    WantedBy=multi-user.target
    
  3. 启用并启动服务:

    bash

    sudo systemctl daemon-reload
    sudo systemctl enable srs
    sudo systemctl start srs
    

配置说明

SRS 的核心配置文件为 conf/srs.conf,可根据需求修改:

  • RTMP 端口:默认 1935
  • HLS 端口:默认 8080,配置在 http_server 模块
  • 推流路径格式:rtmp://ip:port/app/stream(如 rtmp://localhost/live/test 中,live 是 apptest 是 stream

停止 SRS

  • 临时停止:

    bash

    ./objs/srs -s stop
    
  • 若通过系统服务启动,使用:

    bash

    sudo systemctl stop srs
    

通过以上步骤,即可在 Ubuntu 上成功安装并运行 SRS 流媒体服务器。如需更复杂的配置(如集群、HTTPS 等),可参考 SRS 官方文档

tail -n 100 /home/zhibo/srs/trunk/objs/srs.log   查看可以查询错误信息,必须进入/home/zhibo/srs/trunk目录中执行

使用教程

关于 SRS 的推流、拉流操作、地址配置及域名设置,这里详细说明如下:

一、推流和拉流的详细操作

推流和拉流需要依赖工具(如 ffmpeg 推流)和播放器(如 VLC、PotPlayer 拉流),具体步骤如下:

1. 准备工具
  • 推流工具:安装 ffmpeg(用于推流本地视频或摄像头):

    bash

    sudo apt-get install -y ffmpeg
    
  • 拉流工具:本地电脑安装播放器(如 VLC 媒体播放器,跨平台且支持 RTMP、HLS 等协议)。
2. 推流操作(以 RTMP 为例)

SRS 默认配置支持 RTMP 推流,推流地址格式为:rtmp://[服务器IP或域名]:1935/[app]/[stream]

  • [服务器IP或域名]:你的 Ubuntu 服务器公网 IP 或已解析的域名(如 1.2.3.4 或 live.example.com)。
  • 1935:RTMP 默认端口(配置文件中可修改)。
  • [app]:应用名(默认配置中为 live,可自定义)。
  • [stream]:流名称(自定义,如 testcamera1 等)。

示例推流命令

  • 推流本地视频文件:

    bash

    ffmpeg -re -i /path/to/your/video.mp4 -c:v libx264 -c:a aac -f flv "rtmp://1.2.3.4:1935/live/test"
    
    • -re:按视频实际帧率推流(避免瞬间推完)。
    • -i:指定输入文件路径。
    • -c:v/-c:a:指定视频 / 音频编码(确保兼容性)。
  • 推流摄像头(需服务器有摄像头或通过设备映射):

    bash

    ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -c:a aac -f flv "rtmp://1.2.3.4:1935/live/camera"
    
3. 拉流操作(支持多协议)

SRS 支持 RTMP、HLS(HTTP-FLV)等拉流协议,地址格式根据协议不同而变化:

协议拉流地址格式说明
RTMPrtmp://[IP/域名]:1935/[app]/[stream]与推流地址相同,直接用于播放器拉流
HLShttp://[IP/域名]:8080/[app]/[stream].m3u8基于 HTTP 的流媒体,适合网页 / 移动端
HTTP-FLVhttp://[IP/域名]:8080/[app]/[stream].flv基于 HTTP 的 FLV 流,延迟比 HLS 低

示例拉流操作

  • 使用 VLC 拉流:打开 VLC → 媒体 → 打开网络串流 → 输入地址(如 rtmp://1.2.3.4:1935/live/test)→ 播放。
  • 网页拉流(HLS):用支持 HLS 的播放器(如 video.js),在网页中嵌入地址 http://1.2.3.4:8080/live/test.m3u8

二、推流 / 拉流地址的配置位置

SRS 的核心配置文件是 conf/srs.conf(位于 SRS 源码目录的 trunk/conf 下),推流 / 拉流的端口、应用名等均在此配置:

  1. 打开配置文件

    bash

    cd /path/to/srs/trunk  # 进入 SRS 源码目录(替换为你的实际路径)
    nano conf/srs.conf
    
  2. 关键配置项说明

    • RTMP 配置(默认支持):

      conf

      listen              1935;  # RTMP 端口
      max_connections     1000;
      vhost __defaultVhost__ {# 应用名配置(如 live,推流地址中的 [app] 需与此一致)app live {enabled         on;# HLS 配置(生成 .m3u8 文件)hls {enabled     on;hls_path    ./objs/nginx/html;  # HLS 文件存储路径hls_fragment 10;                # 切片时长(秒)}# HTTP-FLV 配置http_flv {enabled     on;}}
      }
      
    • HTTP 服务器配置(HLS/HTTP-FLV 依赖):

      conf

      http_server {enabled         on;listen          8080;  # HTTP 端口(HLS/HTTP-FLV 用)dir             ./objs/nginx/html;  # 静态文件根目录(存放 .m3u8/.flv)
      }
      
  3. 修改后生效:若 SRS 已启动,需重启服务使配置生效:

    bash

    # 若通过系统服务启动
    sudo systemctl restart srs# 若通过命令直接启动
    ./objs/srs -s stop  # 停止
    ./objs/srs -c conf/srs.conf  # 重新启动
    

三、是否需要配置域名?如何配置?

  1. 是否需要域名?

    • 测试或内网使用:无需域名,直接用服务器 IP 即可(如 192.168.1.100 或公网 IP 1.2.3.4)。
    • 生产环境 / 公网使用:建议配置域名(如 live.example.com),方便记忆和 SSL 证书部署(如需 HTTPS)。
  2. 域名配置步骤

    • 步骤 1:购买域名并解析在域名服务商(如阿里云、腾讯云)购买域名后,添加 A 记录,将域名解析到你的服务器公网 IP(例如:live.example.com → 1.2.3.4)。
    • 步骤 2:在 SRS 中使用域名无需在 SRS 配置中单独设置域名,只需在推流 / 拉流地址中用域名替代 IP 即可(如 rtmp://live.example.com:1935/live/test)。
    • 步骤 3:(可选)配置 HTTPS若需通过 HTTPS 拉流(如 https://live.example.com:8080/live/test.m3u8),需在 srs.conf 中开启 HTTPS 并配置证书:

      conf

      http_server {enabled         on;listen          8080;  # HTTP 端口https {enabled     on;listen      8088;  # HTTPS 端口key         /path/to/ssl/private.key;  # 私钥路径cert        /path/to/ssl/certificate.crt;  # 证书路径}
      }
      
      证书可通过 Let's Encrypt 免费申请。

最后测试推流启动,win10电脑命令执行一个视频推流如下:

打开cmd 执行命令开始推流视频

ffmpeg -re -i F:/video/8dd514f9feb9fb414949495a1e39b601.mp4 -c:v libx264 -c:a aac -f flv "rtmp://175.27.158.198:19350/live/test"

观看端拉流如下,

拉流地址是:  rtmp://[175.27.158.198]:19350/live/test

添加有限制才可以进行推流和拉流,方法如下

SRS 支持通过配置实现推流 / 拉流的身份验证(如用户名密码校验),防止未授权访问。以下是具体实现方式,主要通过 URL 参数验证 或 HTTP 回调验证 两种方式,适用于不同场景:

方式一:简单验证(URL 参数校验,推荐入门使用)

通过在推流 / 拉流地址中附加密钥参数(如 ?token=xxx),SRS 配置中校验该参数是否匹配,不匹配则拒绝连接。

步骤 1:修改 SRS 配置文件 conf/srs.conf

在 vhost __defaultVhost__ 或具体 app 配置中添加验证规则:

conf

vhost __defaultVhost__ {app live {enabled on;# 推流验证(publish)publish {# 允许推流的条件:URL 中必须包含 token=your_secret_keyenabled on;# 校验规则:检查 query 中的 token 是否等于预设密钥(如 srs@2024)auth {enabled on;# 密钥可自定义,建议复杂一些token "srs@2024";# 验证失败时的提示reject_msg "Invalid publish token";}}# 拉流验证(play)play {enabled on;auth {enabled on;token "srs@2024";  # 可与推流密钥相同或不同reject_msg "Invalid play token";}}# 其他配置(HLS、HTTP-FLV 等保持不变)hls { ... }http_flv { ... }}
}
步骤 2:重启 SRS 使配置生效

bash

sudo systemctl restart srs  # 若通过系统服务启动
# 或
./objs/srs -s stop && ./objs/srs -c conf/srs.conf
步骤 3:带验证参数推流 / 拉流
  • 推流地址(必须包含 ?token=srs@2024):

    bash

    ffmpeg -re -i your_video.mp4 -c copy -f flv "rtmp://服务器IP:1935/live/test?token=srs@2024"
    
  • 拉流地址(以 RTMP 和 HLS 为例):
    • RTMP:rtmp://服务器IP:1935/live/test?token=srs@2024
    • HLS:http://服务器IP:8080/live/test.m3u8?token=srs@2024

如果参数不匹配(如 token 错误或缺失),SRS 会拒绝连接并返回错误信息。

方式二:动态验证(HTTP 回调,适合生产环境)

通过 HTTP 回调机制,SRS 在推流 / 拉流前向你的业务服务器发送请求,由业务服务器判断是否允许访问(如校验数据库中的用户权限),更灵活且支持动态生成密钥。

步骤 1:准备一个验证服务(示例)

假设你有一个简单的 HTTP 服务(如用 Python/Node.js 实现),接收 SRS 的回调请求并返回是否允许:

  • 回调请求格式(SRS 会发送):GET http://你的验证服务器地址/auth?srs_action=publish&srs_stream=test&token=xxx
  • 验证服务返回:
    • 允许:HTTP 200 OK + 响应体 allow
    • 拒绝:HTTP 403 Forbidden 或响应体 deny

示例 Python 验证服务(简单演示)

python

运行

from flask import Flask, requestapp = Flask(__name__)# 模拟数据库中的有效 token
VALID_TOKENS = {"user1_token", "user2_token"}@app.route('/auth')
def auth():action = request.args.get('srs_action')  # "publish" 或 "play"token = request.args.get('token')if token in VALID_TOKENS:return "allow"  # 允许访问return "deny", 403  # 拒绝访问if __name__ == '__main__':app.run(host='0.0.0.0', port=8000)  # 启动在 8000 端口
步骤 2:修改 SRS 配置,启用 HTTP 回调

在 conf/srs.conf 中添加回调配置:

conf

vhost __defaultVhost__ {app live {enabled on;# 推流前回调验证publish {enabled on;# 回调到你的验证服务(替换为实际地址)auth {enabled on;# 回调 URL,SRS 会自动附加参数(如 srs_action、srs_stream、token 等)url "http://你的验证服务器IP:8000/auth";# 超时时间(毫秒)timeout 3000;# 验证失败提示reject_msg "Auth failed";}}# 拉流前回调验证(与推流配置类似)play {enabled on;auth {enabled on;url "http://你的验证服务器IP:8000/auth";timeout 3000;}}# 其他配置保持不变hls { ... }http_flv { ... }}
}
步骤 3:重启 SRS 并测试
  • 启动验证服务(如上面的 Python 程序)。
  • 推流时必须携带 token 参数(如 ?token=user1_token),否则验证服务会拒绝。
  • 只有 token 在 VALID_TOKENS 中的请求才会被允许。

补充说明

  1. 安全性增强

    • 方式一中的静态密钥建议定期更换,避免泄露。
    • 方式二中的验证服务建议启用 HTTPS(url "https://..."),防止回调参数被篡改。
  2. 其他验证方式

    • SRS 还支持 RTMP 私有协议验证(通过 on_publish/on_play 回调自定义握手逻辑),适合更复杂的场景,可参考 官方文档。
  3. 防火墙配合:除了应用层验证,还可通过服务器防火墙(如 ufw)限制端口访问(如只允许特定 IP 访问 1935/8080 端口),双重保障:

    bash

    sudo ufw allow from 允许的IP to any port 1935  # 限制 RTMP 端口
    sudo ufw allow from 允许的IP to any port 8080  # 限制 HTTP 端口
    

通过以上方式,即可有效防止未授权用户随意推流或拉流,确保服务器安全。

使用php开发,tp6框架写的后台方案如下

在 ThinkPHP 6(TP6)中实现 SRS 的动态验证(HTTP 回调),核心是创建一个接口接收 SRS 的回调请求,校验参数后返回 “允许” 或 “拒绝” 的响应。以下是具体实现步骤:

前提准备

  1. 确保 TP6 项目已正常运行(可通过域名或 IP 访问,如 http://your-domain.com)。
  2. 了解 SRS 回调的参数:SRS 在推流 / 拉流前会向你的接口发送 GET 请求,携带以下关键参数(可根据需求扩展):
    • srs_action:操作类型(publish 表示推流,play 表示拉流)。
    • srs_stream:流名称(如推流地址中的 test)。
    • token:推流 / 拉流地址中携带的验证参数(需客户端在地址中附加,如 ?token=xxx)。

步骤 1:创建验证控制器

在 TP6 项目中创建一个用于处理 SRS 回调的控制器,例如 app/controller/SrsAuth.php

php

<?php
namespace app\controller;use think\facade\Request;
use think\response\Json;class SrsAuth
{/*** SRS 推流/拉流验证接口* 接收 SRS 回调请求,校验 token 合法性*/public function check(): Json{// 1. 获取 SRS 回调参数$action = Request::get('srs_action', ''); // 操作类型:publish/play$stream = Request::get('srs_stream', ''); // 流名称$token = Request::get('token', '');       // 客户端传递的验证 token// 2. 日志记录(可选,用于调试)$logData = ['time' => date('Y-m-d H:i:s'),'action' => $action,'stream' => $stream,'token' => $token,'ip' => Request::ip()];file_put_contents('./runtime/logs/srs_auth.log', json_encode($logData) . PHP_EOL, FILE_APPEND);// 3. 验证参数合法性(基础校验)if (empty($action) || empty($stream) || empty($token)) {return json('deny', 403); // 参数缺失,拒绝}// 4. 核心验证逻辑(根据业务场景实现)// 示例:从数据库/缓存中校验 token 是否有效$isValid = $this->validateToken($token, $action, $stream);// 5. 返回结果(SRS 只识别响应体为 "allow" 或 "deny")if ($isValid) {return json('allow', 200); // 允许访问} else {return json('deny', 403);  // 拒绝访问}}/*** 验证 token 合法性(业务逻辑)* @param string $token 客户端传递的 token* @param string $action 操作类型(publish/play)* @param string $stream 流名称* @return bool 是否有效*/private function validateToken(string $token, string $action, string $stream): bool{// 示例 1:固定 token 测试(实际项目中需替换为数据库查询)// $validTokens = ['user1_token', 'user2_token'];// return in_array($token, $validTokens);// 示例 2:从数据库查询(假设有一个 srs_tokens 表)$tokenModel = new \app\model\SrsToken(); // 需创建对应模型和表$tokenInfo = $tokenModel->where(['token' => $token,'action' => $action, // 允许的操作类型(publish/play 或 all)'stream' => $stream, // 允许的流名称(或 * 表示所有流)'status' => 1,       // 有效状态'expire_time' => ['>', time()] // 未过期])->find();return !empty($tokenInfo);}
}

步骤 2:创建数据模型(可选,用于数据库验证)

如果需要从数据库校验 token,创建对应的模型和数据表:

  1. 创建迁移文件(生成数据表):执行命令 php think make:migration create_srs_tokens_table,编辑迁移文件:

    php

    public function up()
    {$this->table('srs_tokens', function ($table) {$table->id();$table->string('token', 100)->comment('验证令牌');$table->enum('action', ['publish', 'play', 'all'])->default('all')->comment('允许的操作类型');$table->string('stream', 50)->default('*')->comment('允许的流名称(* 表示所有)');$table->tinyInteger('status')->default(1)->comment('状态:1=有效,0=无效');$table->integer('expire_time')->comment('过期时间(时间戳)');$table->timestamps();})->comment('SRS 推流拉流验证令牌表')->create();
    }
    

    执行迁移:php think migrate:run 生成表。

  2. 创建模型app/model/SrsToken.php

    php

    <?php
    namespace app\model;use think\Model;class SrsToken extends Model
    {protected $table = 'srs_tokens';
    }
    

步骤 3:配置路由

在 route/app.php 中添加路由,让 SRS 能访问到验证接口:

php

<?php
use think\facade\Route;// SRS 验证回调接口
Route::get('srs/auth', 'SrsAuth/check');

此时接口地址为:http://你的TP6域名/srs/auth(如 http://1.2.3.4/srs/auth)。

步骤 4:修改 SRS 配置,指向 TP6 验证接口

编辑 SRS 配置文件 conf/srs.conf,在 vhost 或 app 中配置 HTTP 回调:

conf

vhost __defaultVhost__ {app live {enabled on;# 推流验证(publish)publish {enabled on;auth {enabled on;# 指向 TP6 的验证接口(替换为你的实际地址)url "http://你的TP6域名/srs/auth";timeout 3000; # 超时时间(毫秒)reject_msg "Publish auth failed"; # 验证失败提示}}# 拉流验证(play)play {enabled on;auth {enabled on;url "http://你的TP6域名/srs/auth"; # 与推流共用一个接口timeout 3000;reject_msg "Play auth failed";}}# 其他配置(HLS/HTTP-FLV 等)hls {enabled on;}http_flv {enabled on;}}
}

步骤 5:重启服务并测试

  1. 重启 SRS 使配置生效:

    bash

    sudo systemctl restart srs
    
  2. 测试推流(需携带 token 参数):

    bash

    # 假设数据库中存在有效的 token=valid_token_123
    ffmpeg -re -i test.mp4 -c copy -f flv "rtmp://你的SRS服务器IP:1935/live/test?token=valid_token_123"
    
  3. 测试拉流(同样需要携带 token):
    • RTMP:rtmp://你的SRS服务器IP:1935/live/test?token=valid_token_123
    • HLS:http://你的SRS服务器IP:8080/live/test.m3u8?token=valid_token_123

关键说明

  1. 响应格式:SRS 只根据响应体判断是否允许(allow 允许,deny 拒绝),HTTP 状态码建议配合使用(200 对应 allow,403 对应 deny)。
  2. 安全性
    • 生产环境建议将 TP6 接口改为 HTTPS(url "https://你的域名/srs/auth"),避免 token 被明文传输。
    • 可在 TP6 中添加 IP 白名单,只允许 SRS 服务器的 IP 访问验证接口(防止恶意请求)。
  3. 动态 token:实际业务中,token 可通过业务系统生成(如关联用户、时效限制等),并存储到数据库,验证时查询匹配。

通过以上步骤,即可在 TP6 中实现 SRS 的动态验证,灵活控制推流和拉流权限。

/home/zhibo/srs/trunk/conf/srs.conf文件配制内容是,无授权版本

# main config for srs.
# @see full.conf for detail config.max_connections     600;
#srs_log_tank        file;
#srs_log_file        ./objs/srs.log;
daemon              on;
rtmp {listen              19350;
}
http_api {enabled         on;listen          1985;
}
http_server {enabled         on;listen          8081;dir             ./objs/nginx/html;
}
rtc_server {enabled on;listen 8000; # UDP port# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#config-candidatecandidate $CANDIDATE;# 替换为服务器的实际 IP(公网或内网)candidate 175.27.158.198;  # 例如你的服务器公网 IP
}
vhost __defaultVhost__ {hls {enabled         on;hls_fragment    10;  # 切片时长(秒)hls_window      60;  # 保留的切片窗口(秒)}http_remux {enabled     on;mount       [vhost]/[app]/[stream].flv;}rtc {enabled     on;# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#rtmp-to-rtcrtmp_to_rtc on;# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#rtc-to-rtmprtc_to_rtmp on;}play{gop_cache_max_frames 2500;}
}

基于SRS配置文件的验证需求,可以通过HTTP回调机制实现客户端连接的鉴权认证。以下是在您的配置中添加验证功能的完整方案:

验证配置实现

vhost __defaultVhost__配置块中添加http_hooks回调配置,用于处理客户端连接、发布和播放等操作的认证1:

# main config for srs.
# @see full.conf for detail config.max_connections     600;
#srs_log_tank        file;
#srs_log_file        ./objs/srs.log;
daemon              on;
rtmp {listen              19350;
}
http_api {enabled         on;listen          1985;
}
http_server {enabled         on;listen          8081;dir             ./objs/nginx/html;
}
rtc_server {enabled on;listen 8000; # UDP port# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#config-candidatecandidate $CANDIDATE;# 替换为服务器的实际 IP(公网或内网)candidate 175.27.158.198;  # 例如你的服务器公网 IP
}
vhost __defaultVhost__ {# HTTP回调验证配置http_hooks {enabled         on;on_connect     http://你的服务器IP:端口/api/verify;  # 连接验证on_close       http://你的服务器IP:端口/api/verify;  # 断开连接记录on_publish     http://你的服务器IP:端口/api/verify;  # 推流验证on_unpublish   http://你的服务器IP:端口/api/verify;  # 停止推流记录on_play        http://你的服务器IP:端口/api/verify;  # 播放验证on_stop        http://你的服务器IP:端口/api/verify;  # 停止播放记录}hls {enabled         on;hls_fragment    10;  # 切片时长(秒)hls_window      60;  # 保留的切片窗口(秒)}http_remux {enabled     on;mount       [vhost]/[app]/[stream].flv;}rtc {enabled     on;# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#rtmp-to-rtcrtmp_to_rtc on;# @see https://ossrs.io/lts/en-us/docs/v7/doc/webrtc#rtc-to-rtmprtc_to_rtmp on;}play{gop_cache_max_frames 2500;}
}

验证机制说明

工作原理‌:

  • SRS在客户端执行关键操作时触发HTTP回调
  • 验证服务器接收POST请求并解析JSON数据
  • 根据操作类型和参数进行权限验证
  • 返回"0"表示成功,"1"表示失败

支持的验证事件‌1:

  • on_connect:客户端连接验证
  • on_publish:推流权限验证
  • on_play:播放权限验证
  • 其他事件用于状态记录和监控

安全特性‌:

  • 基于URL参数的身份验证
  • 推流和播放权限分离控制
  • 详细的错误日志记录
  • 防止未授权访问和数据泄露

该验证方案可以有效保护您的SRS服务器,确保只有授权用户才能进行推流和播放操作

tp6写的代码地址是:https://blog.csdn.net/u013519290/article/details/154462107?sharetype=blogdetail&sharerId=154462107&sharerefer=PC&sharesource=u013519290&spm=1011.2480.3001.8118

四、总结

  1. 推流 / 拉流地址:由服务器 IP / 域名 + 端口 + 应用名 + 流名称组成,核心配置在 conf/srs.conf
  2. 配置修改:编辑 conf/srs.conf 后重启 SRS 生效。
  3. 域名:非必需,生产环境建议配置,只需解析域名到服务器 IP 即可直接使用。
http://www.dtcms.com/a/574511.html

相关文章:

  • 怎么自己设计网站外贸公司 网站
  • 【仓颉纪元】仓颉鸿蒙应用深度开发:待办事项 App 全流程实战
  • 领英被封?账号受限该怎么处理?
  • 信誉好的镇江网站建设网站备案名称中国开头
  • 【C语言】localtime和localtime_r;strftime和strftime_l
  • 扁平化设计网站代码打开网站后直接做跳转
  • Go 语言依赖注入实战指南:从基础到高级实践
  • 全场景自动化 Replay 技术:金仓 KReplay 如何攻克数据库迁移 “难验证“ 难题
  • 阳新县建设局网站win2008系统asp网站建设
  • 网站域名分几种新东方雅思培训机构官网
  • 网站怎么样做不违规学科基地网站建设
  • MySQL-4-视图和索引
  • 电脑被捆绑软件缠上?3 步根治卡顿弹窗~
  • Linux时间处理与系统时间管理详解
  • 上饶建设局网站开封到濮阳
  • 织梦网站动态华为云自助建站
  • RocketMQ集群核心概念 生产者端的负载均衡
  • 做恒生指数看什么网站贵州网站优化
  • 百度搜索引擎平台seo全称英文怎么说
  • 黑马点评学习笔记07(缓存工具封装)
  • BLDC电流采样的四种方式
  • 物流行业网站建设市场分析品牌策划方案案例
  • 高校对网站建设的重视郑州建设电商网站
  • 网站后台管理代码凡科h5在线制作
  • 做网站外包多少钱网站建设 工作计划
  • 自己做的网站很卡深圳建立网站公司
  • Trae 大模型选型对比
  • IO多路复用之epoll
  • 模拟一个机械手指:从数学模型到高保真仿真的全平台指南
  • 响应式网站导航栏内容矿区网站建设