CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历

2024-09-09 03:58

本文主要是介绍CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:http://blog.csdn.net/fengyily/article/details/42557841


本人一直用的是CRtmpServer服务,在CRtmpServer服务中根据自已的想法也加入了许多功能,如通过http接口来加载配置等,苦于不支持HLS,自已添加ts分片水平又有限,思来想去决定借助SimpleRtmpServer的HLS功能。说干就干,马上查找相关资源,下载、解压一一蹴而就,SRS顺利搭好,比想像中的要简单很多。

SRS服务搭建好后,直推测试成功,在配置CRtmpServer转推流时,SRS的流播放不出,查看日志发现报了个tcUrl不能为空的异常,于是想到应该是CRtmpServer在转推时没有传入tcurl的参数,查看CRtmpServer的源代码,定位到转推的位置,跟综下来确认tcUrl为空,了解了tcUrl的格式,与targetUri是一致,于是将targetUri的值赋给tcUrl,测试顺利通过,就是这么简单,但是,经过一段时间跑下来发现SRS好像不太稳定,也许是对它不太了解。也许看到大家都在用Nginx的HLS,于是又有了将SRS换成Nginx的想法。

在搭建Nginx Rtmp服务时参考的是前辈留下的nginx搭建支持http和rtmp协议的流媒体服务器之一、二、三,由于是第一次在Nginx中添加nginx-rtmp-module模块,感觉和SRS的相比相对烦锁,很多的依赖包要么对版本依赖性较大,要么干脆链接打不开。总的来说整个流程下来搭建还算顺利。

Nginx的配置之前一直用的是它的反向代理及前端Cache,配置起来也得心应手,很快便可以独立使用了,但我搭建Nginx的目的是想用来做RTMP的边缘,提供RTMP以及HLS的播放。在测试时,同样也遇到了CRtmpServer转推至Nginx时不成功,在Nginx 日志中也没发现什么异常,与直接推送相比,发现PUSH的连接,成功然后马上又被断开,经过反复的比较,直推是连接成功后便有创建流、发布流的日志,如下:

2015/01/09 17:13:12 [info] 6587#0: *8 client connected '10.22.22.245'
2015/01/09 17:13:12 [info] 6587#0: *8 createStream, client: 10.22.22.245, server: 0.0.0.0:1936
2015/01/09 17:13:12 [info] 6587#0: *8 publish: name='snh48_live_640_360' args='' type=live silent=0, client: 10.22.22.245, server: 0.0.0.0:1936

转推的日志中并没有createStream与publish的相关日志,便怀疑会不会是CRtmpServer本身的问题呢?为了验证,马上又开启了CRtmpServer进行本地的调试,发现多了一条错误日志,内容为:

basertmpprotocol.cpp:799:BaseRTMPProtocol::ProcessBytes:Unable to send rtmp message to application。

也是就是这玩意在做怪,迅速找到这片代码:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. if (!_pProtocolHandler->InboundMessageAvailable(this, header, channel.inputData)) {  
  2.     FATAL("Unable to send rtmp message to application");  
  3.     return false;  
  4. }  

分析后,估计是CRtmpServer对Nginx返回的消息不被支持,但也不想再去看Nginx的框架,于是想法大胆的直接将return false注释掉跑跑看。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. if (!_pProtocolHandler->InboundMessageAvailable(this, header, channel.inputData)) {  
  2.     FATAL("Unable to send rtmp message to application");  
  3.     //return false;  
  4. }  
再次调试,果然灵光。又测试了转推其它类型流媒体服务,我又笑了。。。

这篇关于CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150096

相关文章

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

nginx长连接的问题

转自: http://www.360doc.com/content/12/1108/17/1073512_246644318.shtml

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

RTMP流媒体服务器 crtmpserver

http://www.oschina.net/p/crtmpserver crtmpserver又称rtmpd是Evostream Media Server(www.evostream.com)的社区版本采用GPLV3授权 其主要作用为一个高性能的RTMP流媒体服务器,可以实现直播与点播功能多终端支持功能,在特定情况下是FMS的良好替代品。 支持RTMP的一堆协议(RT

由Lua 粘合的Nginx生态环境

转自:http://blog-zq-org.qiniucdn.com/pyblosxom/oss/openresty-intro-2012-03-06-01-13.html -- agentzh tech-club.org 演讲听录 免责聲明 Lua 粘合的 Nginx 生态环境 2.1. openresty 2.2. 配置小语言 2.3. ngx_drizzle 2.4.

Nginx高性能分析

Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快! Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 Master 进程、多个 Worker 进程。Master 进程:管理 Work

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8