SRS 简单高效的实时视频服务器
一. 简介
SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT。
你可以用它实现视频推流,并且支持http回调事件(HTTPCallback),还可以保存视频流文件。支持本地化部署,操作简单。
二. SRS-HTTP服务部署实例
SRS内嵌了http服务器,支持分发hls流和文件。
以分发HLS为例,使用SRS分发RTMP和HLS流,不依赖于外部服务器。
假设服务器的IP是:192.168.1.152
第一步,获取SRS。
git clone https://github.com/ossrs/srs
cd srs/trunk
第二步,编译SRS。
./configure && make
第三步,启动服务器。
./objs/srs -c conf/srs.conf
检查SRS是否成功启动,可以打开 http://localhost:8080/ ,或者执行命令:
# 查看SRS的状态
./etc/init.d/srs status
第三步,编写SRS配置文件。
贴出我的配置文件
# main config for srs.
# @see full.conf for detail config.listen 1935;
max_connections 1000;
srs_log_tank console;
srs_log_file ./objs/srs.log;
daemon off;
stats {network 0;
}
http_api {enabled on;listen 1985;crossdomain on;raw_api {enabled on;allow_reload on;allow_query on;allow_update on;}
}
http_server {enabled on;listen 8080;dir ./objs/nginx/html;
}vhost 192.168.1.152 {# http回调http_hooks{enabled on;on_connect http://xxx.com/api/live/srs_callback;on_close http://xxx.com/api/live/srs_callback;on_publish http://xxx.com/api/live/srs_callback;on_unpublish http://xxx.com/api/live/srs_callback;on_play http://xxx.com/api/live/srs_callback;on_stop http://xxx.com/api/live/srs_callback;on_dvr http://xxx.com/api/live/srs_callback;}hls {enabled on;hls_path ./objs/nginx/html;hls_fragment 3;hls_cleanup on;hls_dispose 3;hls_window 12;}dvr {enabled on;dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].mp4;dvr_plan session;dvr_duration 30;dvr_wait_keyframe on;time_jitter full;}http_remux {enabled on;mount [vhost]/[app]/[stream].flv;}
}
三.HttpCallback回调
SRS总是开启HttpCallback
SRS的回调事件包括:
事件 | 数据 | 说明 |
---|---|---|
on_connect |
{ "action": "on_connect", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "tcUrl": "rtmp://x/x?key=xxx", "pageUrl": "http://x/x.html" } |
当客户端连接到指定的vhost时 |
on_close |
{ "action": "on_close", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "send_bytes": 10240, "recv_bytes": 10240 } |
当客户端关闭连接,或者SRS主动关闭连接时 |
on_publish |
{ "action": "on_publish", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "stream": "livestream" } |
当客户端发布流时,譬如flash/FMLE方式推流到服务器 |
on_unpublish |
{ "action": "on_unpublish", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "stream": "livestream" } |
当客户端停止发布流时 |
on_play |
{ "action": "on_play", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "stream": "livestream", "pageUrl": "http://a.com/i.html", "param":"?k=v" } |
当客户端开始播放流时 |
on_stop |
{ "action": "on_stop", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "stream": "livestream" } |
当客户端停止播放时。备注:停止播放可能不会关闭连接,还能再继续播放。 |
on_dvr |
{ "action": "on_dvr", "client_id": 1985, "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live", "stream": "livestream", "cwd": "/opt", "file": "./l.xxx.flv" } |
当DVR录制关闭一个flv文件时 |
其中,
- 事件:发生该事件时,即回调指定的HTTP地址。
- HTTP地址:可以支持多个,以空格分隔,SRS会依次回调这些接口。
- 数据:SRS将数据POST到HTTP接口。
- 返回值:SRS要求HTTP服务器返回HTTP200并且response内容为整数错误码(0表示成功),其他错误码会断开客户端连接。
当http接口获取到ssr回调数据时,就可以在PHP或者JAVA端展开你的工作了。
SRS 简单高效的实时视频服务器相关推荐
- docker部署SRS实时视频服务器,rtmp推流,用WebRTC播放
SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181 大家可以先去gitub上面看使用说明,地址是:v4_CN_Home · ossrs/ ...
- cvm服务器虚拟化,云服务器cvm简单高效便于处理能力提升
在虚拟服务器的成熟技术面前,各行业的网络应用都得到了明显的改善,毕竟简单高效的特点已经极为明显,在不同领域所发挥的作用也为用户的网络体验带来了明显的改善,这也是云服务器cvm能够备受青睐的原因所在,毕 ...
- 简单高效的直播直播系统源码需要的服务器
简单高效的直播直播系统源码需要的服务器: 安装和使用非常简单: 纯 Golang 编写,性能高,跨平台: 支持常用的传输协议.文件格式.编码格式:支持的传输协议 RTMP AMF HLS HTTP-F ...
- 虚拟化---简单高效的IT管理模型
很多人认为云计算就是虚拟化,虚拟化就是云计算.笔者虽然并不认同这个观点,但绝对赞同虚拟化技术在云计算众多关键技术中有一席之地,而且是非常重要的关键技术. 维基百科对虚拟化的定义是:虚拟化是表示计算机资 ...
- 最简单去水印工具免服务器域名源码搭建,
现如今在线副业已经成为一种趋势,越来越多的人选择副业作为起步.小程序凭借不占内存.无论前期投入还是后期维护,成本都较低:如果你想副业来赚钱,选择小程序是非常不错的选择,有很多人可能会问,我不会做小程序 ...
- 转52破解jiangwei212Android爆破应用签名的一种全新高效方式(Native+服务器验证)
原文地址:Android爆破应用签名的一种全新高效方式(Native+服务器验证) http://www.52pojie.cn/thread-606272-1-1.html (出处: 吾爱破解论坛) ...
- nodejs爬虫实战_简单高效的 nodejs 爬虫模型
这篇文章讲解一下yunshare项目的爬虫模型. 使用 nodejs 开发爬虫很简单,不需要类似 python 的 scrapy 这样的爬虫框架,只需要用 request 或者 superagent ...
- 简单高效压缩图片,保持图片高质量的神仙网站
简单高效压缩图片,保持图片高质量的神网站 前言 我们在做网站前端的时候常常会遇到这样一个场景 我有一张超高清的图片,要在首页作为封面图来展示,图片大小达到了 1.23MB,而我们此时需要要求我们前端页 ...
- HiLink LiteOS IoT芯片 让IoT开发简单高效
HiLink & LiteOS & IoT芯片 让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手 ...
最新文章
- 机器视觉资料汇总(2)
- jsp输入限制正则表达式
- SAP UI5 应用的 OData XML 格式的元数据请求解析原理,基于 DOMParser
- 【python】生成器
- jsp自定义标签详解(2)
- PHP学习总结(5)——PHP入门篇之PHP字符串
- 操作系统思考 第一章 编译
- PHP如何大幅度提升运行效率? -- 把它编译成机器码!
- Web前端:7大Web开发趋势和技术
- 计算机麦克地址,WO Mic Client
- 学习Dart语言,看这一篇文章就够了!(详细介绍)
- php 覆盖写入txt文件内容,PHP使用内置函数file_put_contents覆盖写入文件及追加内容的方法...
- Navicat定期备份MySQL数据库,定期清理备份文件
- 2017百度AI开发者大会召开,智能云计算分论坛聚焦ABC
- Makefile中的CFLAGS、$^、$< 、$@
- 小程序_动态设置tabBar主题皮肤
- 微信小程序和uniapp开发工具
- 名帖380 张弼 草书《草书帖选》
- matlab上万大型矩阵求逆,要好好总结一下超大矩阵求逆的技巧了
- 上海亚商投顾:信创概念掀涨停潮