流媒体技术学习笔记之(三)Nginx-Rtmp-Module统计某频道在线观看流的客户数
获得订阅者人数,可以方便地显示观看流的客户数。
查看已经安装好的模块
/usr/local/nginx/sbin/nginx -V
安装从源编译Nginx和Nginx-RTMP所需的工具
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
下载Nginx和Nginx-RTMP源码
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
提取Nginx和Nginx-RTMP源
tar -zxvf nginx-1.7..tar.gz
unzip master.zip
切换到Nginx目录
cd nginx-1.7.
添加Nginx将编译的模块,包括Nginx-RTMP
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_xslt_module --with-http_flv_module --with-debug --with-http_gzip_static_module --add-module=../nginx-rtmp-module-master
提示错误:
./configure: error: the HTTP XSLT module requires the libxml2/libxslt
libraries. You can either do not enable the module or install the libraries.
配置 --with-http_xslt_module 时提示 the HTTP XSLT module requires the libxml2/libxslt libraries:安装一下扩展
sudo apt-get install libxml2 libxml2-dev libxslt-dev
编译和安装Nginx与Nginx-RTMP。
make
sudo make install
安装Nginx初始化脚本
sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults
启动和停止Nginx生成配置文件
sudo service nginx start
sudo service nginx stop
观看安装是否成功:
/usr/local/nginx/sbin/nginx -V
安装结果
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_xslt_module --with-http_flv_module --with-debug --with-http_gzip_static_module --add-module=../nginx-rtmp-module-master
修改Nginx 配置文件添加一下信息,在位置设置统计信息页面
location /stat {
rtmp_stat all;
allow 127.0.0.1;
}
创建一个简单的xsl样式表nclients.xsl提取流用户数
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:param name="app"/>
<xsl:param name="name"/> <xsl:template match="/">
<xsl:value-of select="count(//application[name=$app]/live/stream[name=$name]/client[not(publishing) and flashver])"/>
</xsl:template> </xsl:stylesheet>
设置一个返回订阅者数量的位置
location /nclients {
proxy_pass http://127.0.0.1/stat;
xslt_stylesheet /home/www/nclients.xsl app='$arg_app' name='$arg_name';
add_header Refresh "3; $request_uri";
}
Nginx.config 完整配置:
user www www;
worker_processes ; error_log logs/error.log debug; #pid logs/nginx.pid; events {
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream; log_format main '[$time_local][$remote_addr][$http_x_forwarded_for] $status "$request" "$http_referer" "$http_user_agent"'; access_log logs/access.log main; sendfile on;
keepalive_timeout ; server { set $wwwroot /home/www/node/html; listen ;
server_name localhost;
index index.html;
root $wwwroot;
access_log logs/node.access.log main;
error_log logs/error.log debug; location /rtmp/stat {
rtmp_stat all;
rtmp_stat_stylesheet rtmpstat.xsl;
} location /rtmpstat.xsl {
} location /rtmp/control {
rtmp_control all;
} location /stat {
rtmp_stat all;
allow 127.0.0.1;
} location /nclients {
proxy_pass http://127.0.0.1/stat;
xslt_stylesheet /home/www/nclients.xsl app='$arg_app' name='$arg_name';
add_header Refresh "3; $request_uri";
} location ~* /hls/.*\.m3u8$ {
types {
application/vnd.apple.mpegurl m3u8;
}
root /tmp;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
} location ~* /hls/.*\.ts$ {
types {
video/mp2t ts;
}
root /tmp;
expires 1m;
add_header Cache-Control public;
add_header Access-Control-Allow-Origin *;
} #error_page /.html; error_page /50x.html;
location = /50x.html {
root html;
} location / { } } } rtmp {
server {
listen ;
chunk_size ;
application live {
live on;
record off;
}
}
}
重启Nginx
root@iZ239kcyg8rZ:/usr/local/nginx/conf# service nginx restart
* Stopping Nginx Server... [ OK ]
* Starting Nginx Server... [ OK ]
root@iZ239kcyg8rZ:/usr/local/nginx/conf#
根据直播频道访问以下地址:
http://你的推流服务器IP/nclients?app=live&name=
客户端打开三个播放测试:

打开2个VLC播放流:

查看在线人数:

结束。
流媒体技术学习笔记之(三)Nginx-Rtmp-Module统计某频道在线观看流的客户数的更多相关文章
- Nginx模块之———— RTMP模块 统计某频道在线观看流的客户数
获得订阅者人数,可以方便地显示观看流的客户数. 查看已经安装好的模块 /usr/local/nginx/sbin/nginx -V 安装从源编译Nginx和Nginx-RTMP所需的工具 sudo a ...
- 流媒体技术学习笔记之(二)RTMP和HLS分发服务器nginx.conmf配置文件(解决了,只能播放RTMP流而不能够播放HLS流的原因)
user www www; worker_processes ; error_log logs/error.log debug; #pid logs/nginx.pid; events { worke ...
- 流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy ...
- 让你的 Nginx 的 RTMP 直播具有统计某频道在线观看用户数量的功能
你的 Nginx 已经有了 RTMP 直播功能的话,如果你还想统计某直播频道当前观看用户量的话,可以加入 with-http_xslt_module 模块.具体步骤如下: 1.查看原来的 ...
- 流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...
- 流媒体技术学习笔记之(十)HLS协议直播延时优化(35s到10S)
1.首先要了解HLS延时的机制,也就是为什么会延时,延时主要发生在什么地方. HTTP Live Streaming 并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的 ...
- 流媒体技术学习笔记之(十三)Windows安装FFmpeg
一.下载地址: 网址:https://ffmpeg.org/ 选择Windows版本:https://ffmpeg.org/download.html#build-windows 二.解压安装: 下载 ...
- 流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月
原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23 1.HTTP直播流介绍 HTTP实时流媒体提供了一个可靠的,成 ...
- 流媒体技术学习笔记之(十七)FFmpeg 3.3《希尔伯特》-新版本的亮点
FFmpeg 3.3“Hilbert”,一个新的主要版本的一些亮点: 苹果Pixlet解码器 NewTek SpeedHQ解码器 QDMC音频解码器 PSD(Photoshop Document)解码 ...
随机推荐
- 浅谈android Service和BroadCastReceiver
1.题记 Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序. 广播接收者(BroadcastRece ...
- 记录Appium-desktop踩过的坑could not find devices
最近了解到一个自动化入门的新工具appium-desktop,看网上各种文章,感觉这个工具是很简单的一个入门级工具,下载试用了一下. 官网下载,输入网址appium.io,点击下载. 一路傻瓜式安装, ...
- 详细解析 nginx uri 如何匹配 location 规则
location 是 nginx 配置中出现最频繁的配置项,一个 uri 是如何与多个 location 进行匹配的? 在有多个 location 都匹配的情况下,如何决定使用哪一个 location ...
- 实战重现隐藏在A标签_blank下的危险漏洞,简略说明noopener的作用
前几日,在看阮一峰老师的博客文章中,发现了这么一篇 .标题为 <target = "_blank" 的危险性(英文)>.这篇文章同事看过之后因为不理解其中的危险之处,念 ...
- Bootstrap 样式设计 栅格系统
.col-xs- 超小屏幕 手机 (<768px) .col-sm- 小屏幕 平板 (≥768px) .col-md- 中等屏幕 桌面显示器 (≥992px) .col-lg- 大屏幕 大桌面显 ...
- SpringMVC 之 @ResponseBody 和 @RequestBody
前后端进行数据交互的时候,规定数据交互的格式,使数据交互规范而统一,是极为重要的事.一般而言,我们会采用 JSON 进行数据交互.本文暂不讨论如何 JSON 的格式规范,而是解析一下如何在 Sprin ...
- 对《OA云》作品的分析
对<OA云>作品的分析 软件描述:<OA云>是一款基于移动端的企业日常事物办公软件,企业人员进入该产品后可以对当天的出勤情况进行签到,系统会自动的识别以及记录下员工的实时签到信 ...
- 作业C#程序分析
阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...
- [转帖]Kubernetes及容器编排的总体介绍【译】
Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIA ...
- Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?
百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放 ...