利用SRS搭建直播服务器
前言
初入公司,调研SRS搭建流媒体服务器,实现直播、点播功能,并搭建基于SRS的流媒体服务器集群。
我们知道,SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。SRS包含支持大规模集群如CDN业务的关键特性,譬如RTMP多级集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群。此外,SRS还提供丰富的应用接口,包括HTTP回调、安全策略Security、HTTP API接口、RTMP测速。
互联网上直播现在主要有两种分发方式:HLS与RTMP,其中还有点播中运用较为频繁的HTTP协议。对比以下互联网上用的流媒体分发方式:
HLS:apple的HLS,支持点播和直播。
HTTP:即HTTP stream,各家自己定义的http流,应用于国内点播视频网站。
RTMP:直播应用,对实时性有一定要求,以PC为主。
RTMP本质是流协议,主要优点有1.实时性高,RTMP的实时性在3秒之内,2.支持加密,RTMPE与RTMPS为其加密协议,3.稳定性高,做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的。RTMP的缺点是1.协议复杂,协议复杂带来的后果是在研发,扩展,维护等方面成本相对会高。2.Cache麻烦,流协议做缓存不方便,所以,直接用RTMP协议做点播实现起来很麻烦。HTTP本质是文件分发,主要优势有1.性能很高。分发的量特别大,没有实时性的要求,譬如点播,那么HTTP是最好的选择。劣势是实时性差,原生支持不好,尤其移动端对于HTTP的支持不是很完善。HLS的优势是性能高,原生支持很好,尤其对于移动端的支持。劣势是实时性差。
应用方式具体来说:
编码器输出RTMP协议。
流媒体系统接入使用RTMP协议。
流媒体系统内部直播分发使用RTMP。
PC+直播+实时性要求高:使用flash播放RTMP。
PC+直播+没有实时性要求:使用RTMP或者HLS均可。
PC+点播:使用HTTP或者HLS。
Apple IOS/OSX:都使用HLS(实时性要求高得自己解析RTMP,或者使用外部库,譬如https://www.vitamio.org)
Andorid:和IOS一样,不过可以确定的是可以自己开发支持RTMP。
协议的比较见下表:
分发 |
平台 |
协议 |
公司 |
说明 |
RTMP |
Windows Flash |
RTMP |
Adobe |
主流的低延时分发方式, |
HLS |
Apple/ |
HTTP |
Apple/ |
延时一个切片以上(一般10秒以上), |
对于利用SRS做流媒体服务器集群,可以借用EasyDSS的方案,一台SRS接受直播端的推流并转发给其他服务器。
SRS流媒体服务器搭建
1.源码下载:git clone https://git.oschina.net/winlinvip/srs.oschina.git && cd srs.oschina && git remote set-url origin https://github.com/ossrs/srs.git
2.分支切换,有些功能只有SRS2.0有,SRS1.0没有,请注意看wiki是v1还是v2的。
如果是1.0的功能,更新代码后要改变到1.0分支:
git pull && git checkout 1.0release
如果是2.0的功能,更新代码后要改变到2.0分支:
git pull && git checkout 2.0release
如果是3.0的功能,更新代码后要改变到3.0分支(没有单独的3.0release分支就是develop):
git pull && git checkout develop
3.编译。下载文件名为srs.oschaina,如图所示:
进入该目录下,找见trunk目录,进入trunk目录。
输入命令./configure,配置完成后,输入make && make install命令,等到编译完成。
4.配置文件,配置文件是:conf/rtmp.conf,默认非常精简只有下面这些:
只需上面这几行配置就可以完整的实现rtmp流媒体服务器,其中listen默认为1935,是rtmp流推送的默认端口;max_connections值最大连接;daemon是否为守护进行在后台执行,然后vhost为虚拟主机可以隔离客户,这个默认不用配置即可.
然后可以执行命令启动rtmp服务: ./objs/srs -c conf/rtmp.conf ,启动之后就可以向服务推流了,另外srs也提供了完整的http服务用作srs服务器使用,具体配置文件在conf/srs.conf,其中多了http部分的配置,其中用于播放测试的配置如下,也可以添加到rtmp.conf配置中:
http_server {enabled on;listen 8080;dir ./objs/nginx/html;}
添加配置完成后,重启srs服务器然后可以访问页面,我这里地址是:http://10.0.4.181:8080,ip和端口要改成实际配置的,访问会跳转到默认页面。注意:我在配置的时候,端口号1935与8080都被占用了,我修改了端口号,1935改为1930,8080改为8081。启动srs服务器,页面如下图所示:
5.安装FFmpeg:
1.git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
2.cd ffmpeg
3../configure && make
在第三步配置的时候,我遇到了问题:
yasm/nasm not found or too old. Use –disable-yasm for a crippled build.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file “config.log” produced by configure as this will help
solve the problem.
解决办法是:https://java-er.com/blog/linux-installffmpeg/,这是在Linux上安装FFmpeg的教程。vi
6.进行FFmpeg进行推流,进入FFmpeg目录,输入命令./ffmpeg -re -i /home/k8s/srs.oschina/trunk/doc/source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv rtmp://10.0.4.181:1930/live/livestream,其中,rtmp://10.0.4.181:1930/live/livestream为rtmp地址,其具体解释见链接https://github.com/ossrs/srs/wiki/v1_CN_RtmpUrlVhost。推流成功显示如下图:
7.播放推流视频。不知道什么原因,在编写本文档时候,SRS网页中自带的播放器不能播放视频,可能是配置时候出了问题,我下载了VLC播放器,VLC播放器下载安装教程可自行百度。下载安装完成后,打开,播放器如图所示:
点击媒体按钮,然后点击打开网络串流,输入rtmp协议,点击播放,即可播放推流视频。
8.使用obs推流,下载obs推流客户端,下载安装完成,打开界面如下图:
具体如何推流教程网上可以百度,这里不做赘述,推流完成后,效果如下图:
利用SRS搭建直播服务器相关推荐
- 利用自己的电脑设置web服务器建网站_win7系统篇,win7系统利用iis搭建web服务器实现信息浏览资源共享的操作方法...
很多小伙伴都遇到过对win7系统利用iis搭建web服务器实现信息浏览资源共享进行设置的困惑吧,一些朋友看过网上对win7系统利用iis搭建web服务器实现信息浏览资源共享设置的零散处理方法,并没有完 ...
- centos下利用httpd搭建http服务器方法
centos下利用httpd搭建http服务器方法 1. 解决的问题 在开发测试过程中,分析图片任务需要将图片保存在服务器端,通过url来访问和下载该图片,这就需要使用一台图片服务器,但常常遇到图片服 ...
- 如何利用ewomail搭建邮件服务器
如何利用ewomail搭建邮件服务器 首先你应该做好如下准备 1.需要一台全新干净的服务器,就是不需要安装任何东西的服务器,mysql,apache都不要.不然会安装不成功.切记!!! 2.查看官方文 ...
- 使用Nginx搭建直播服务器(nginx-rtmp-module)
使用Nginx搭建直播服务器 1 简介 2 RTMP Module 3 gcc 4 OpenSSL 5 g++ 6 pcre 7 zlib 8 安装nginx 9 配置文件 10 systemctl ...
- Qt显示视频流——nginx+rtmp搭建直播服务器(二)
上次介绍的是使用ffmpeg推流,这次介绍的是使用nginx + rtmp搭建直播服务器. 环境:ubuntu 16.04 一. 安装nginx 和 rtmp模块 1. 下载安装 nginx 和 ng ...
- win10系统如何配置web服务器,win10系统利用iis搭建web服务器的设置教程
有关win10系统利用iis搭建web服务器的操作方法想必大家有所耳闻.但是能够对win10系统利用iis搭建web服务器进行实际操作的人却不多.其实解决win10系统利用iis搭建web服务器的问题 ...
- 使用SRS搭建流服务器使用ffmpeg推流用VLC拉流
目录 一.背景 二.下载srs 三.编译srs 四.编写srs配置文件 五.启动srs 六.使用ffmpeg推流 七.使用VLC拉流观看 八.在树莓派上推一下摄像头的视频流用VLC拉流看一下延迟 一. ...
- SRS搭建流媒体服务器
流媒体服务器搭建 目录 流媒体服务器搭建 1.安装 2.常用设置 HTTPCallback Config SRS HTTP callback events(回调事件) 3.回调测试 SRS HTTP ...
- Centos7.6利用vsftpd搭建FTP服务器详细教程
Centos7搭建FTP服务器 目录 Centos7搭建FTP服务器 一.关闭防火墙 二.安装vsftpd并启动服务 1.安装vsftpd 2.启动服务 三.编辑配置 四.新建用户并设置密码 1.新建 ...
最新文章
- Zookeeper和Redis实现分布式锁,附我的可靠性分析
- Android 侧划菜单
- 命令行是你的至交好友
- 如何用DW设计界面 结合 VS设计后台代码
- MySQL运维知识点_mysql运维必备知识点(转载至其他作者)
- php如何随机显示图片,php中随机显示图片的函数代码_php
- 开源云操作系统:找到适合自己的应用模式
- HDU 3695 Computer Virus on Planet Pandora (AC自己主动机)
- Java表示语言(文化)代码及国家地区对照表
- tkinter教程——toplevel
- Ubuntu18.04 显卡驱动安装(GTX1060)正确步骤
- 常规操作系统Windows系统淋雨系统Unix系统netware等系统介绍分析
- 什么是软件即服务(SaaS) ? SaaS新手入门指南
- 粒子滤波的通俗解释,傻子的搜寻策略--我的理解_拔剑-浆糊的传说_新浪博客
- 【小程序】报getUserProfile:fail can only be invoked by user TAP gesture.
- 计算机无法设置双屏显示,win10无法设置双屏显示怎么办_win10系统设置双屏显示失败如何解决...
- Discourse 调整使用不同的表情符号
- 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
- Integer 用法
- Continued Fraction