0%

在树莓派(Raspberry Pi)上运行SRS(Simple-RTMP-Server)

之前写过一篇《搭建自己的直播服务器(nginx + RTMP)》,后来发现一个更简单的直播服务器SRS(Simple-RTMP-Server),还是国人开发维护的,了解一下之后发现,还支持在Raspberry Pi上跑起来。想起我那尘封的Raspberry Pi,我就打算用它做成一个内网的直播服务器,这样就不用经常在PC上开启一个CentOS 7 虚拟机。

1
2
3
4
5
6
搭建环境:
主机:Raspberry Pi B型(第一代国产红版)
系统:2015-05-05-raspbian-wheezy
直播服务器:SRS 2.0
直播软件(推流):OBS Studio
播放软件(拉流):VLC

附上raspbian各个版本的下载列表https://downloads.raspberrypi.org/raspbian/images/

注意:如果Raspberry Pi 硬件型号和我的是一样的,建议用wheezy,不要用最新版本的,之前心想既然打开尘封的Raspberry Pi,那就跑些新东西吧,装上最新系统后,结果折腾了两天SRS2.0 怎么也跑不起来,或许版本兼容问题。

开始前需要一些准备

切换源

将Raspberry Pi 的软件源切换为国内,加速软件下载
在Raspberry Pi的国内源中,我推荐中科大的

先备份一下文件

1
sudo cp /etc/apt/sources.list /etc/apt/backup_sources.list

然后修改文件

1
sudo nano /etc/apt/sources.list

用什么编辑器,看个人习惯了

将文件内容删除或者全注释,换成以下内容(这里以wheezy为例,新版的可以看参考里的中科大帮助文档)

1
2
3
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

同时还可以修改另外一个软件源,虽然不是必要的,但是还是修改吧

1
2
3
4
# 先备份
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.backup
# 再修改
sudo nano /etc/apt/sources.list.d/raspi.list

将文件内容删除或者全注释,换成以下内容(这里以wheezy为例)

1
2
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ wheezy main
deb-src http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ wheezy main

修改保存后执行sudo apt-get updatesudo aptitude update,进行更新

安装需要的工具

更新后就要安装需要的工具,Raspberry Pi本身就包含编译SRS的大部分工具了,这里需要两个打包工具

1
2
sudo aptitude install lsb_release
sudo aptitude install zip

zip好像自带了,lsb_release可能需要更新几次才能安装成功。这两个都是后续编译打包SRS需要的。

如果试了几次sudo aptitude install lsb_release都安装不了可以试试这样
1.apt-cache search lsb搜索一下
2.sudo apt-get install lsb-release尝试通过APT安装。

SRS的编译与打包

下载SRS源码

通过git将SRS下载到Raspberry Pi上

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

开始编译SRS

1
2
3
4
# 进入trunk文件夹
cd srs/trunk
# 编译并打包SRS
./scripts/package.sh --pi

由于Raspberry Pi的硬件性能,所以编译的时间会比较漫长。

package.sh包含了编译和打包两个操作

如果不想打包编译,也可以只编译

1
2
3
4
# 编译SRS
./configure --pi && make
# 运行SRS
./objs/srs -c conf/srs.conf

解包安装

生成的包位置:srs/trunk/objs/SRS-RaspberryPi7-armv6l-2.0.243.zip

1
2
3
4
# install: 方法
unzip -q SRS-RaspberryPi7-armv6l-2.0.243.zip
cd SRS-RaspberryPi7-armv6l-2.0.243
sudo bash INSTALL

SRS的运行

安装好后可以通过以下方式运行SRS

1
2
3
4
5
6
# srs的命令 /etc/init.d/srs {start|stop|status|restart|reload}
# 启动SRS
sudo /etc/init.d/srs start
# 停止SRS
sudo /etc/init.d/srs stop

SRS 配置

如果只是编译源码而不是打包,SRS的配置就像前面./objs/srs -c conf/srs.conf,通过指定不同的.conf 文件配置

而如果像我这样,打包成二进制文件,那就通过修改/etc/init.d/srs中的CONFIG的值改变配置

还可以修改/usr/local/srs/conf/里的srs.conf也可以修改

1
2
3
4
5
6
7
8
## /etc/init.d/srs 中的部分内容
# the config of ROOT, user must modify it when start srs from other directory,
# it's ok to use the script by command ./etc/init.d/ossrs
ROOT="/usr/local/srs"
APP="./objs/srs"
CONFIG="./conf/srs.conf"
DEFAULT_PID_FILE='./objs/srs.pid'
DEFAULT_LOG_FILE='./objs/srs.log'

推流与拉流

我采用OBS Studio进行推流,VLC 拉流测试

OBS Studio 配置

我这里是采用内网进行直播的推流和拉流

VLC 拉流观看

通过VLC打开直播

效果拉流效果

参考

Performance benchmark for SRS on RaspberryPi

SRS for linux-arm (RaspberryPi篇)

中国科学技术大学Raspbian 源使用帮助

中国科学技术大学另一个Raspberry Pi 源使用帮助

lsb_release - Raspberry Pi Forums