SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试

SRS 4.0流媒体服务器入门系列

结合SRS官方Wiki以及本人对SRS的理解,推出《SRS 4.0流媒体服务器入门系列》,包括内容:

  1. SRS 4.0 开发环境搭建
  2. SRS 4.0 配置支持WebRTC推拉流
  3. SRS 4.0 RTMP推拉流转发原理,包括延迟分析
  4. SRS 4.0 支持WebRTC一对一通话,包括信令原理讲解
  5. SRS 4.0 支持WebRTC多人通话,包括信令原理讲解
  6. SRS 4.0 RTMP to WebRTC原理分析
  7. SRS 4.0 WebRTC to RTMP 原理分析
  8. SRS 4.0 配置支持GB28181推流
  9. .....其他待规划

本文档配套视频:1-SRS 4.0开发环境搭建:点击直达

云服务器:阿里云Ubuntu 16.04

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

推流端:ffmpeg + OBS

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

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

1.1 安装SRS流媒体服务器

SRS官网:http://www.ossrs.net/

github源:https://github.com/ossrs/srs.git

码云源:https://gitee.com/ossrs/srs.git (如果GitHub较慢可以使用码云的源)

选择当前最新的release版本4.0

第一步,获取SRS

    git clone https://github.com/ossrs/srs.git srs.4.0

    cd srs.4.0

    #直接使用当前最新的4.0release版本,写该文档时该branch最新的的tag是v4.0.98

    cd trunk

第二步,编译SRS。详细参考Build

./configure --gb28181=on && make

配置支持常见的协议:RTMP/HLS/RTMP/GB28181/WebRTC

更多的配置信息参考可以用help命令:./configure --help

第三步,查看SRS配置文件。详细参考RTMP分发

配置文件在trunk/conf目录,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

我们这里先使用srs.conf,支持rtmp推流,支持rtmp、hls、http-flv拉流。

    # main config for srs.# @see full.conf for detail config.


    listen              1935;

    max_connections     1000;

    srs_log_tank        file;

    srs_log_file        ./objs/srs.log;

    daemon              on;

    http_api {

       enabled         on;

       listen          1985;

    }

    http_server {

       enabled         on;

       listen          8080;

       dir             ./objs/nginx/html;

    }

    vhost __defaultVhost__ {

       hls {

           enabled         on;

       }

       http_remux {

           enabled     on;

           mount       [vhost]/[app]/[stream].flv;

       }

    }

对应配置的解释可以参考full.conf文件

这里的端口

  • 1935端口对应的是rtmp服务
  • 1985对应的是http api服务,进一步学习:https://github.com/ossrs/srs/wiki/v4_CN_HTTPApi
  • 8080对应的是http-flv、hls的服务器端口

PS:云服务器一定要在后台开放对应的端口。

第四步,启动SRS。

./objs/srs -c conf/srs.conf

第五步,查看日志

tail -f ./objs/srs.log

-------------------------------------

1.2 查看控制台

在浏览器输入

http://114.215.169.66:1985/console/ng_index.html

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第1张图片

我们就可以通过Web查看SRS相关的状态信息。

如果有客户端推流

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第2张图片

对应的api(https://github.com/ossrs/srs/wiki/v4_CN_HTTPApi),比如源码里面对应的:

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第3张图片

1.3 需要重点阅读的官方Wiki

如官方的README.md所示:

Fast index for Wikis:

  • How to deliver RTMP streaming?(CN,EN)
  • How to build RTMP Edge-Cluster?(CN,EN)
  • How to build RTMP Origin-Cluster?(CN,EN)
  • How to deliver HTTP-FLV streaming?(CN,EN)
  • How to deliver HLS streaming?(CN,EN)
  • How to deliver low-latency streaming?(CN,EN)
  • How to use WebRTC? (CN,EN)

srs作者提供了详细的中英文参考文档,配置问题基本上都可以从对应的文档可以找到答案,大家能查文档的尽量去查文档。

1.4 测试SRS流媒体服务器

1.4.1 使用FFmpeg推流

ffmpeg -re -i time.flv -vcodec copy -acodec copy -f flv -y rtmp://114.215.169.66/live/livestream

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

对应的RTMP/HLS/HTTP-FLV拉流地址

  • RTMP流地址为:rtmp://114.215.169.66/live/livestream
  • HTTP FLV: http://114.215.169.66:8080/live/livestream.flv
  • HLS流地址为:http://114.215.169.66:8080/live/livestream.m3u8

1.4.2 使用ffplay播放

ffplay rtmp://114.215.169.66/live/livestream
ffplay http://114.215.169.66:8080/live/livestream.flv
ffplay http://114.215.169.66:8080/live/livestream.m3u8

1.4.3 使用在线srs播放器拉流

在线SRS播放器播放, 由于RTMP已经被禁用了,请使用HTTP-FLV链接。

  • http://114.215.169.66:8080/players/srs_player.html (改成自己ip地址)
  • http://ossrs.net/srs.release/trunk/research/players/srs_player.html (官方提供的连接)

2 使用OBS推流

ffmpeg的命令行方式不太友好,推荐使用主流的OBS开源推流软件,可从官网https://obsproject.com/ 下载最新版本,目前很多网络主播都是用它做直播。该软件支持本地视频文件以及摄像头推流。

或者使用:https://pc.qq.com/detail/4/detail_23604.html 去下载。

2.1 文件推流

先添加一个:“媒体源”

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第4张图片

然后新建一个名称(随便输入)

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第5张图片

选择本机视频文件

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第6张图片

接下来是关键的部分,进入设置:

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第7张图片

在串流->服务器这里,输入srs的地址:rtmp://114.215.169.66:1935/live (注意这里不要带livestream), 然后在串流密钥这里,才是输入livestream (地址要注意换成自己的ip地址,局域网ip就用局域网地址,云服务器就用公网地址)

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第8张图片

设置好以后,就可以点击“开始推流”了。如果顺利,下面的状态栏,会显示一些实时数据:

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第9张图片

注意:OBS进行推流占用率比较高,原因在于obs在推流时对源文件进行了解码再编码的操作。

2.2 摄像头推流

跟上面的其实差不多,区别只是添加“视频捕捉设备”

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第10张图片

然后选择本机检测到的摄像头设备(比如:下图为Dell笔记本自带的Integrated Webcam)

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第11张图片

接下来的操作就一样了

SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试_第12张图片

2.3 更多设置

参见:OBS 推流 https://cloud.tencent.com/document/product/267/32726

3 补充

修改ffplay的缓存,降低延迟

(1)码流分析时间设置,单位为微秒

ffplay -i rtmp://114.215.169.66/live/livestream -analyzeduration 500000

ffplay -i rtmp://114.215.169.66/live/livestream -analyzeduration 10000

(2)减少缓冲

ffplay -i rtmp://114.215.169.66/live/livestream -fflags nobuffer

你可能感兴趣的:(音视频笔记,ffmpeg,git)