centos 搭建SRS 流媒体服务

服务器前期准备

  • 系统要求
    操作系统 centos7.0以上64位
  • 生成软件包信息缓存
yum makecache
  • 安装更新
yum update -y
  • 安装必要软件
yum install -y zip  unzip  wget curl git vim zsh nano screen
  • 安装 oh my zsh (有助于不全和选择目录)
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

下载安装

  • 将 srs 安装到目录 /usr cd /usr
  • 下载软件包并进入目录 trunk
git clone https://github.com/ossrs/srs && cd srs/trunk
  • 编译
./configure  && make

启动 srs

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

开放端口

  • 以下端口不在开放端口行列,则需要开放
  8080
  1935

3:生成 /etc/sysconfig/iptables

iptables -P INPUT ACCEPT

4:执行开放端口命令

/sbin/iptables -I INPUT -p tcp --dport 1935 -j ACCEPT

5:保存

iptables-save > /etc/sysconfig/iptables

srs 最好每隔一段时间重启一次,我写了计划任务是每周二,周五7点重启。但是注意,如果你使用的是 hls 模式,则需要手动重启
crontab 定时任务资料

conntab -e
* 7 * * 2,5  cd /usr/srs/trunk  && ./etc/init.d/srs restart  > /dev/null 2>&1

手动重启

  • 1.检查 srs 对应的端口 并关闭
ps -ef|grep srs
  • 2.关闭 srs 端口
kill -9 端口号
  • 3.进入srs 项目根目录
cd  /usr/srs/trunk
    1. 重启srs 服务
./objs/srs -c ./conf/http.hls.conf 

github-srs指令链接

指令一定要切换到 /usr/srs/trunk 目录下,才能执行.

./etc/init.d/srs {start|stop|status|restart|reload} 开始,停止,状态,重启,重置

在重启之后,最好执行 ./etc/init.d/srs status,如果显示 SRS(pid 14203) is running. 则表示启动成功,而不要只仅仅靠 ps -ef |grep srs 来判断服务是否开启

查看进程使用情况 htop指令

  • 查看centos 版本
cat /etc/redhat-release  // 执行后看到使用的是 7.5.1804
  • 安装
# CentOS6
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
yum install htop -y

# CentOS7
yum install epel-release -y
yum install htop -y
  • 使用

直接执行 htop 即可

流媒体配置文件

流媒体推送是首先生成一个多少秒(hls_fragment)的文件包,这个文件包成为一个切片,然后推送出去。这个包越小,越会较少网络的性能,也就越容易推送。当一个流推送出去后,我们就可以把他删除,不然会生成太多的切片文件,耗费服务器性能。(hls_window)参数就是指,当前时间多少秒以前的数据文件都要删除。
hls_path 是指流媒体文件生成后存放的文件夹地址

配置文件地址 /usr/srs/trunk/conf/http.hls.conf

vhost __defaultVhost__ {
    hls {
        enabled         on;
        hls_fragment    3; // 切片时间段,3秒种一段(一段文件就是三秒中的播放长度),段越小,越流畅,但数据会产生的更多.但是网络也是有延迟的,我个人尝试,感觉这个是配置 5  hls_window 配置 25 会比较好
        hls_window      9; // 缓存总长度(最多缓存多长时间)
        hls_path        ./objs/nginx/html;
        hls_m3u8_file   [app]/[stream].m3u8;
        hls_ts_file     [app]/[stream]-[seq].ts;
    }
    forward 1.1.1.1:1935;
}
  • 参数理解
1. hls_fragment
 the hls fragment in seconds, the duration of a piece of ts.
 指定ts切片的最小长度。 比如 demo 就是 3s,但实际值可能是大于3s的

2.hls_window:秒,指定HLS窗口大小,即m3u8中ts文件的时长之和,超过总时长后,丢弃第一个m3u8中的第一个切片,直到ts的总时长在这个配置项范围之内。即SRS保证下面的公式: hls_window >= sum(m3u8中每个ts的时长)
# the hls window in seconds, the number of ts in m3u8.

3.hls_path: HLS的m3u8和ts文件保存的路径。SRS会自动加上app和stream名称。比如

    对于RTMP流:rtmp://localhost/live/livestream
    HLS配置路径:hls_path        /data/nginx/html;
    那么会生成以下文件:
    /data/nginx/html/live/livestream.m3u8
    /data/nginx/html/live/livestream-0.ts
    /data/nginx/html/live/livestream-1.ts
    /data/nginx/html/live/livestream-2.ts
    最后的HLS地址为:http://localhost/live/livestream.m3u8

4.hls_m3u8_file: HLS的m3u8文件名

5.hls_ts_file: HLS的ts文件名

HLS Introduction

HLS是提供一个m3u8地址,Apple的Safari浏览器直接就能打开m3u8地址,譬如:

http://demo.srs.com/live/livestream.m3u8

Android不能直接打开,需要使用html5的video标签,然后在浏览器中打开这个页面即可,譬如:

<!-- livestream.html -->
<video width="640" height="360"
        autoplay controls autobuffer 
        src="http://demo.srs.com/live/livestream.m3u8"
        type="application/vnd.apple.mpegurl">
</video>

HLS的m3u8,是一个ts的列表,也就是告诉浏览器可以播放这些ts文件,譬如:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:64
#EXT-X-TARGETDURATION:12
#EXTINF:11.550
livestream-64.ts
#EXTINF:5.250
livestream-65.ts
#EXTINF:7.700
livestream-66.ts
#EXTINF:6.850
livestream-67.ts

推流到指定的服务器

 forward 1.1.1.1:1935; // 端口并不是一定要使用1935,也可以使用其他端口,服务器是其他搭建流媒体的服务器
 这个地址是技能接收流,又能推送流。推送并不是说主动推送的情况,而是说访问这个端口可以得到数据
 如果药推送到多个服务器,直接再 ip 后面留个空格,继续写即可。
 demo forward  192.168.1.6:1935 192.168.1.6:1936 192.168.1.7:1935 192.168.1.7:1936;

软件直播推流

必备软件

OBS Studio: 直播软件
VLC media player,可以播放任何格式的视频

OBS Studio 的使用

OBS-Studio版本的使用教程

在播放期间, 的设置是不能改变的,必须先停止播放。
服务器地址流密匙 是在个人中心的直播页面生成的

  • 手机端的直接在手机上做直播即可

视频居中处理

选中视频,点击右键,选择 交换(T)-> 比例适配屏幕(F)

来源

VLC视频源 - 这个可以选择一个文件夹,但是 媒体源是只可以选择一个文件的

流数据的填写 (值来自于直播页面中,登录账号后,进入我的直播)

服务:选择自定义
服务器:FMSURL 的值
串流密钥: Flow mark 的值

我的直播页面数据

FMSURL: rtmp://1.1.1.1:1935/live   流->服务器的地址
Flow mark: 25791_1558006219               流->流密钥的地址

当直播开始后,我的直播页面不要刷新,否则密钥流地址会变化,导致视频播放失败

一切准备就绪后,1.在我的视频页面点击 OBS直播,会提示直播成功。这个页面不能关闭,否则会导致流密钥无效;
2.OBS软件点击 开始推流


检查网速

  • 安装 speedtest
$ cd /usr/tmp   
$ wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
$ chmod a+rx speedtest.py
$ mv speedtest.py /usr/local/bin/speedtest
$ chown root:root /usr/local/bin/speedtest
  • 执行命令检查网速
$ speedtest

查看网络使用情况 -- iftop 指令

  • 安装 iftop
 yum -y install iftop 
  • 使用
iftop

推流和拉流

推   1.1.1.1:1935
拉   http://1.1.1.1:8080

播放地址   http://x.x.x.x:8080/sdf/yyyyy.m3u8
推流地址  http://x.x.x.x:1935/sdf/yyyyy
或者   rtmp://x.x.x.x:1935/sdf/yyyyy
yyyyy 就相当于具体某个视频  保持一致 就可以看到视频
推流用1935端口,看视频用8080
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容