Loading... ## 1、前言 今天在学习FFmpeg推流部分内容的时候,了解到了RTMP、HLS等直播推流的知识,初步了解了使用FFmpeg进行推流的命令使用方法。但是还是觉得缺点什么,纸上得来终觉浅。所以想自己动手搭建一个流媒体服务器,然后将本地的视频推流到该服务器,再使用VLC这类软件将该直播流拉下来到本地观看。一时兴起,说干就干。之前就听说过SRS的大名,所以直接去github搜索SRS,发现这是一个有将近11k个star的项目,而且文档详细,简单了解了以下觉得操作起来有应该很简单。正文如下: ## 2、搭建SRS流媒体服务器 SRS经过几个版本的更迭,目前已经是一个非常完善的流媒体服务器项目了。访问[SRS的github主页](https://github.com/ossrs/srs)。 ### 2.1 环境要求 - 推荐使用**CentOS6/CentOS7**. - 建议直接使用[srs-docker](https://github.com/ossrs/srs-docker)运行SRS. - 若需要开发和编译SRS,建议用[srs-docker](https://github.com/ossrs/srs-docker/tree/dev). 官方强烈推荐使用docker,拉取该项目的docker镜像,然后直接运行。 但是,我近期主要在Windows上开发(没在windows上用过docker),也懒得重启再切换到另一个ubuntu操作系统。所以我在`VMware` 虚拟机上安装了一个`CentOS7`系统方便开发。(CentOS7的ISO版本可以在国内各大镜像站上下载,这里我不再过多赘述)。下载之后在VMware上安装即可。 ### 2.2 编译 编译SRS非常非常简单。 首先,从`gitee`克隆项目 ```shell git clone https://gitee.com/winlinvip/srs.oschina.git srs && cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull ``` 进入`trunk`目录,然后编译 ```shell ./configure && make ``` ### 2.3 编写SRS配置文件(RTMP分发) 编辑`conf/rtmp.conf`文件(实际上该文件已经配置好了) ```shell s# conf/rtmp.conf listen 1935; max_connections 1000; vhost __defaultVhost__ { } ``` ### 2.4 关闭防火墙 有时候启动没有问题,但是就是看不了,原因是防火墙开着。 `CentOS7`如何关闭防火墙?我在另一篇博客中有提到,可以参考:[CentOS7.x关闭防火墙](http://kevinnan.org.cn/index.php/archives/536/)。 ### 2.5 启动SRS(RTMP分发) ```sh ./objs/srs -c conf/rtmp.conf ``` ### 2.6 本地启动推流编码器(RTMP分发) 再来回顾一下。我在Windows下使用VMware启动了`CentOS7`作为Linux服务器,并在该系统上搭建了基于SRS的媒体推流服务器。接下来,我要使用`FFmpeg`将本地的视频推流到该服务器,然后使用`VLC`打开该RTMP流并播放。 使用FFmpeg推流: ```shell ffmpeg -re -i your_video.flv -c copy -f flv rtmp://192.168.0.108/live/livestream ``` > Note:将该服务器IP地址`192.168.0.108`改为你的虚拟机服务器IP地址  ### 2.7 观看RTMP流 RTMP流地址为:`rtmp://192.168.0.108/live/livestream`。(Note:注意IP地址) 使用`VLC`观看   ## 3、总结 由以上步骤可见,使用`SRS`搭建一个流媒体服务器非常非常简单。而且官方的搭建教程也非常清晰,建议阅读官方教程。 之后我还会继续深入了解`SRS`,期待该项目可以给我带来更多的惊喜。 ## 4、参考资料 [1] [SRS的Github主页](https://github.com/ossrs/srs) [2] [RTMP部署实例](https://github.com/ossrs/srs/wiki/v3_CN_SampleRTMP) [3] [SRS项目发起人Winlin的B站首页](https://space.bilibili.com/430256302?spm_id_from=333.788.b_765f7570696e666f.1) Last modification:February 8th, 2021 at 10:45 pm © 允许规范转载
6 comments
大佬给个yolo5的吧
你好,我用虚拟机安装了centos7,并搭建了srs服务器,关闭防火墙,启动服务后,我无法在本机推流到srs服务器上,显示如下错误:[tcp @ 000001c5f36d4340] Connection to tcp://192.168.40.100:1935 failed: Error number -138 occurred
[rtmp @ 000001c5f36d3e40] Cannot open connection tcp://192.168.40.100:1935
rtmp://192.168.40.100/live/livestream: Unknown error,请问我该如何解决呢?
我也遇到了和你一样的问题 ,请问你现在解决了嘛
也可以参考官方文档使用docker搭建SRS。
测试1935端口是否开放。命令:telnet 192.168.40.100 1935.
端口是开放的,就是本机推流的时候失败