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

相关文章

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的