SRS流媒体服务器(1)概述和环境搭建

1.概述

SRS(Simple Realtime Server)是一款高性能、跨平台的流媒体服务器,支持多种协议,包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。本文介绍了 SRS,包括其用途、关键功能、架构和支持协议。SRS 旨在创建一个免费的开源社区,帮助开发人员构建高质量的流媒体和 RTC 平台。它已获得 MIT 许可,使其适用于商业和非商业用途。

目标和设计理念

SRS 旨在成为一种简单、高效和实时的流媒体服务器,其基本功能侧重于性能和稳定性。代码库遵循模块化架构,将核心服务器框架、协议处理程序和流处理组件之间的关注点分开。

2.环境搭建

2.1 srs源码下载

复制代码
git clone https://github.com/ossrs/srs.git srs.4.0
cd srs.4.0
./configure --gb28181=on --debug=on && make

2.2 srs服务启动

srs.conf 配置示例

html 复制代码
# 主配置文件 for SRS(Simple Real-time Messaging Server)
# @see full.conf for detail config.  # 详见 full.conf 以获取详细配置

# 监听的 RTMP 推流端口,默认为 1935
listen              1935;

# 最大连接数,限制同时可建立的连接数量
max_connections     1000;

# 日志存储方式,可选值为 file 或 console,默认为 file
# srs_log_tank        file;

# 日志文件的路径,默认为 ./objs/srs.log
#srs_log_file        ./objs/srs.log;

# 开启守护进程模式,使 SRS 在后台运行
daemon              on;


# srs提供辅助功能以html显示,有srs控制台,srs播放器 HTTP 服务器配置 
http_server {
    # 启用 HTTP 服务器功能
    enabled         on;
    # HTTP 服务器监听的端口,默认为 8080
    listen          8080;
    # 静态文件的存储目录,默认为 ./objs/nginx/html
    dir             ./objs/nginx/html;
}

# srs推流信令api HTTP API 配置
http_api {
    # 启用 HTTP API 功能
    enabled         on;
    # HTTP API 监听的端口,默认为 1985
    listen          1985;
}


# RTC 服务器配置
rtc_server {
    # 启用 RTC 服务器功能
    enabled on;
    # RTC 服务器监听的端口,注意是 UDP 协议,默认为 8000
    listen 8000;
    # 服务器提供服务的 IP 地址,由于 RTC 的特殊性,必须配置这个地址
    # 可以通过多种方式配置,如固定 IP、环境变量、自动获取等 
    #  = * 自动获取 = 127.0.0.1指定 =$CANDIDATE 以ifconfig网卡接口作为ip
    candidate 117.72.13.81;
}

# 默认虚拟主机配置
vhost __defaultVhost__ {
    # HLS 配置
    hls {
        # 启用 HLS 功能
        enabled         on;
    }

    # HTTP-FLV 配置
    http_remux {
        # 启用 HTTP-FLV 功能
        enabled     on;
        # 指定要转换的流的挂载点,格式为 [vhost]/[app]/[stream].flv
        mount       [vhost]/[app]/[stream].flv;
    }

    # RTC 配置
    rtc {
        # 启用 RTC 功能
        enabled     on;
        # 是否开启 RTMP 转 RTC,默认为 off
        rtmp_to_rtc on;
        # 是否开启 RTC 转 RTMP,默认为 off
        rtc_to_rtmp on;
    }
}
复制代码
./objs/srs -c conf/srs.conf
tail -f ./objs/srs.log

2.2.1 使用Docker 启动

java 复制代码
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    -p 8000:8000/udp -p 10080:10080/udp ossrs/srs:5

2.3 效果演示

2.3.1 推流至srs服务器

除了可以使用ffmpeg进行推流,也可以使用obs进行推流。

java 复制代码
#使用ffmpeg文件推流远程服务器
ffmpeg -re -i  time.flv  -vcodec copy -acodec copy  -f flv -y rtmp://117.72.13.86:1935/live/livestream

2.3.1 srs服务器拉流

java 复制代码
#1. srs播放器拉流访问
http://localhost:8080/
http://localhost:1985/api/

#2.ffplay拉流
ffplay rtmp://localhost:8080/live/livestream
ffplay http://localhost:8080/live/livestream.flv
ffplay http://localhost:8080/live/livestream.m3u8


#3. 官方在线播放器
https://ossrs.net/srs.release/trunk/research/players/rtc_player.html?autostart=true&server=r.ossrs.net&vhost=r.ossrs.net

进入上文srs播放器播放即可

java 复制代码
http://127.0.0.1:8080/players/srs_player.html?schema=http

官方学习地址

https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api

https://ossrs.net/lts/zh-cn/blog/lets-do-h265-live-streaming

https://ossrs.net/lts/zh-cn/guide

学习资料分享

0voice · GitHub

相关推荐
mo47761 小时前
Webrtc Fec分析(一)FEC的原理及处理流程
webrtc
任小栗1 天前
【实战干货】Vue3 + WebRTC + SIP + AI 实现全自动语音接警系统(远程流获取+实时ASR+TTS回播)
人工智能·webrtc
runner365.git2 天前
如何使用RTCPilot--跨平台WebRTC开源服务
webrtc·音视频开发
runner365.git2 天前
RTC实现VoiceAgent(二)
大模型·webrtc·实时音视频·voiceagent
runner365.git3 天前
WebRTC实现VoiceAgent智能体
webrtc
runner365.git3 天前
RTCPilot的信令流程
webrtc·音视频开发
runner365.git3 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
深念Y4 天前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
AI视觉网奇6 天前
webrtc 硬编码
ffmpeg·webrtc
REDcker6 天前
WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)
音视频·webrtc