音视频开发-SRS 4.0流媒体服务器系列
0 SRS 4.0流媒体服务器入门系列
结合SRS官方Wiki以及本人对SRS的理解,推出《SRS 4.0流媒体服务器入门系列》,包括内容:
- SRS 4.0 开发环境搭建
- SRS 4.0 配置支持WebRTC推拉流
- SRS 4.0 RTMP推拉流转发原理,包括延迟分析
- SRS 4.0 支持WebRTC一对一通话,包括信令原理讲解
- SRS 4.0 支持WebRTC多人通话,包括信令原理讲解
- SRS 4.0 RTMP to WebRTC原理分析
- SRS 4.0 WebRTC to RTMP 原理分析
- SRS 4.0 配置支持GB28181推流
0 SRS 4.0流媒体服务器入门系列
结合SRS官方Wiki以及本人对SRS的理解,推出《SRS 4.0流媒体服务器入门系列》,包括内容:
- SRS 4.0 开发环境搭建
- SRS 4.0 配置支持WebRTC推拉流
- SRS 4.0 RTMP推拉流转发原理,包括延迟分析
- SRS 4.0 支持WebRTC一对一通话,包括信令原理讲解
- SRS 4.0 支持WebRTC多人通话,包括信令原理讲解
- SRS 4.0 RTMP to WebRTC原理分析
- SRS 4.0 WebRTC to RTMP 原理分析
- SRS 4.0 配置支持GB28181推流
文章相关视频讲解,文档点击 学习资料 获取
云服务器:阿里云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:云服务器一定要在后台开放对应的端口。
音视频高级开发系统学习链接:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频
第四步,启动SRS。
./objs/srs -c conf/srs.conf
第五步,查看日志
tail -f ./objs/srs.log
1.2 查看控制台
在浏览器输入
http://114.215.169.66:1985/console/ng_index.html
我们就可以通过Web查看SRS相关的状态信息。
如果有客户端推流
对应的api(https://github.com/ossrs/srs/wiki/v4_CN_HTTPApi),比如源码里面对应的:
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的地址:rtmp://114.215.169.66:1935/live (注意这里不要带livestream), 然后在串流密钥这里,才是输入livestream (地址要注意换成自己的ip地址,局域网ip就用局域网地址,云服务器就用公网地址)
设置好以后,就可以点击“开始推流”了。如果顺利,下面的状态栏,会显示一些实时数据:
https://pic2.zhimg.com/80/v2-61866191d9da06396c68dc95d75298f1_720w.webp
注意:OBS进行推流占用率比较高,原因在于obs在推流时对源文件进行了解码再编码的操作。
2.2 摄像头推流
跟上面的其实差不多,区别只是添加“视频捕捉设备”
然后选择本机检测到的摄像头设备(比如:下图为Dell笔记本自带的Integrated Webcam)
接下来的操作就一样了:
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
音视频开发-SRS 4.0流媒体服务器系列相关推荐
- 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
SRS 4.0开发环境搭建 视频讲解如下,点击观看: 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发 音视频高级开发学习学习资料链接:FFmpeg/WebR ...
- 音视频开发(7)---流媒体服务器原理和架构解析
流媒体服务器原理和架构解析 多媒体数据文件 一个完整的多媒体文件是由音频和视频两部分组成的,H264.Xvid等就是视频编码格式,MP3.AAC等就是音频编码格式,字幕文件只是附加文件.目前大部分的播 ...
- (音视频开发)WebRTC进阶流媒体服务器开发-多人互动架构
一:多人互动架构方案 (一)WebRTC回顾,两层含义: 1.WebRTC是google开源的流媒体客户端,可以进行实时通讯,主要应用于浏览器之间进行实时通讯,也可以单独编译在自己的应用中 2.Web ...
- SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试
SRS 4.0流媒体服务器入门系列 结合SRS官方Wiki以及本人对SRS的理解,推出<SRS 4.0流媒体服务器入门系列>,包括内容: SRS 4.0 开发环境搭建 SRS 4.0 配置 ...
- 音视频开发(28)---流媒体并发量与宽带、码率计算详解
流媒体并发量与宽带.码率计算详解 码率计算公式 基本的算法是:[码率](kbps)=[文件大小](字节)X8/[时间](秒)*1000 音频文件专用算法:[比特率](kbps)=[量化 ...
- 从事音视频开发,需要学习哪些知识点?
总体来讲,音视频开发是有一定的技术门槛的,我觉得至少需要在这个领域踏踏实实积累个3-5年,才能对音视频相关的开发知识有一个整体.深刻的理解. 从技术上来讲,需要从如下两个大类知识点上去积累: C/C+ ...
- C++音视频开发的技术要点
总体来讲,音视频开发是有一定的技术门槛的,我觉得至少需要在这个领域踏踏实实积累个3-5年,才能对音视频相关的开发知识有一个整体.深刻的理解. 从技术上来讲,需要从如下两个大类知识点上去积累: 1. C ...
- 音视频开发总结之三网络直播技术
一. 直播流程总览 目前主流的直播架构中主要有两种方案,即流媒体转发.P2P.流媒体转发,是一种在视频直播中以流的方式将连续的音.视频数据经编码压缩后传输到流媒体服务器,用户实时从服务器获取流媒体资源 ...
- C/C++音视频开发技术要点与学习路线
总体来讲,音视频开发是有一定的技术门槛的,我觉得至少需要在这个领域踏踏实实积累个3-5年,才能对音视频相关的开发知识有一个整体.深刻的理解. 从技术上来讲,需要从如下两个大类知识点上去积累: 1. C ...
最新文章
- 计算机系统的分类补充完整,数据库系统原(理B)13春A卷.doc
- Django博客系统(推荐文章数据展示)
- retract手机版怎么登录服务器未响应,retract和retreat各自的用法以及它们的区别
- 64位十六进制转浮点数
- 【verilog语法】关于testbench与被测module的输入输出数据类型定义:reg/wire原因
- flex 点击空格键会有以前点击过的事件的保留
- nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- Linux服务器查看日志方法小结
- vue里面实现百度地图 标记多点 地点连线
- SVM-sklearn
- 前端如何引用字体文件
- python微信发送消息过于频繁_微信发送信息频率上限?
- 我喜欢计算机作文300字,关于我喜欢作文300字
- 电影html css页面,纯CSS3构建的电影屏幕效果
- 我的世界联机教程java_我的世界(minecraft)联机教程
- 智源社区AI周刊:Hinton预测破解大脑机制时间;Gary Marcus批判追捧深度学习风潮;谷歌发布Imagen...
- 分支机构稳定接入 库存信息实时掌握
- php 解析word文件,php解析word文档
- 移动OA(手机OA)是什么?与OA系统有何关系?