多协议、性能稳定、丰富API的流媒体服务器软件
您现在的位置:首页  >  文档  >  故障

如果您在使用过程中,遇到故障。不用担心,在这里列举了大部分常见的故障问题:



1、端口已经被占用

如果systmctl start TiTopStreamer的命令无法启动TiTopStreamer服务,通常是端口被占用导致的。请使用下面的命令查看端口占用情况:

以RTMP协议的默认TCP端口1935为例,查看端口占用情况:
netstat -tunlp |grep 1935		
		
如果发现被占用,可以先停止相关服务,或直接杀死相关进程。然后再重新启动TiTopStreamer服务

如果还不能解决问题,请对照端口中的介绍,逐一检查要用到的端口。

2、License验证失败

如果License验证失败,首先我们在软件界面上会提示您。另外,你会发现此时最多只能有一路输入流了,想推送更多的流进入TiTopStreamer,肯定会失败。

那么License验证为什么会失败呢?如果您用的是在线授权。请你首先检查服务器是否能连接外网,如下:
ping www.baidu.com
或者
ping www.ttstream.com		
		
如果发现无法连接,请先解决网络问题后,再重启服务,再做测试。

3、防火墙屏蔽了某些端口的访问

这个问题,也很常见,请参考下面的命令,打开防火墙的屏蔽:
firewall-cmd --zone=public --add-port=1935/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
		


4、无法收到UDP组播流

当通过组播方式接收UDP流(通常封装格式为MPEGTS)时,常常会遇到无法接收到组播流的问题,网络确定没问题,防火墙也没有做屏蔽,但就是接收不到组播流。这种情况很可能是你的系统拒绝了组播流数据包(被系统丢弃了)。
1、用下面的命令检查组播数据包是否被丢弃了(下面的en4,请换成你的网卡,如果你有多个网卡,你必须先确定由哪个网卡接收组播流,请咨询您的网络工程人员)
cat /proc/sys/net/ipv4/conf/en4/rp_filter

2、如果rp_filter的值是0,就说明数据不会被丢弃;如果是1,就说明数据会被丢弃。

3、用下面的命令,临时性关闭组播数据包丢弃功能:(下面的en4,请换成你的网卡)
sysctl -w net.ipv4.conf.en4.rp_filter=0
sysctl -p

4、修改下面的配置文件,永久性关闭组播数据包丢弃功能:
vi /etc/sysctl.conf

按下面的配置修改或添加

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
		


5、启动TiTopStreamerManager或TiTopStreamer时,发现没有启动起来,也没有产生日志文件

这个问题,一般发生在你手工更新了TiTopStreamer安装目录下/bin/tts文件或ttsm文件,而在更新的过程中,这个文件的可执行权限丢失了,这样就导致文件不可执行。 这时,你需要给这个文件恢复可执行权限,如下所示:
cd /usr/local/TiTopStreamer/bin
chmod +x tts
或
chmod +x ttsm
		
然后,你再重启TiTopStreamerManager或TiTopStreamer。

6、rtmp推流失败,或Web管理页面显示"读取授权信息时遇到异常,请稍后再试"

这个时候,单从外部表象和界面提示很难判断什么环节出了异常。因此需要对各个模块分别排查,用排除法来定位问题。
这里提到的"各个模块",在这篇文档中有介绍:系统架构,所以请先阅读它,了解它。

下面,我们需要登录到TiTopStreamer所在的服务器上,用一些简单的命令,来检查各个模块是否工作正常:

1)请使用下面的命令检查TiTopStreamer的config server部分是否可以正常工作。
wget http://127.0.0.1:8089/v1/cs/apps
		
这个命令是从当前的配置文件中查询APP列表,如果这个模块工作正常,你应该能得到200的响应,并且在这个下载下来的apps的文件中可以看到接口响应数据。
接下来,请继续用如下命令检查rtmp推流认证是否存在异常。
curl -X POST -H 'Accept:application/json' -H 'Content-Type:application/json' -d '{"app":"live","stream":"myStream","remote_ip": "10.10.10.10"}' 
-i http://127.0.0.1:8089/v1/cs/on_input_push
		
注1:上面的命令不需要换行,是页面显示宽度的问题,导致换行显示了。
注2:上面命令中的-d参数后面的参数中,app参数是必须实际存在的RTMP推流类型的APP,stream和remote_ip这两个参数值,你随便填一个,我们目的是验证这个接口是否可以正常响应。
无论是认证失败还是认证成功,只要接口能够正常响应,就说明这个config server部分是工作正常的。

2) 请使用下面的命令检查TiTopStreamer的Rest server部分是否可以正常工作。
wget http://127.0.0.1:8085/v1/apps
		
这个命令是通过rest api来查询当前的APP例表,如果这个模块工作正常,你应该能得到200的响应,并且在这个下载下来的apps的文件中可以看到接口响应数据。


3)把当前Web界面关闭,重新打开并登录Web管理界面,只要WEB界面能够展示,或者能够正常登录,那么Web服务这部分功能应该是正常的。

4)请使用下面的命令检查TiTopStreamer的Engine部分是否可以工作正常:
wget http://127.0.0.1:8087/v1/license
		
这个命令是查询Engine中记录的这个服务器的License及状态,如果它可以正常工作,你应该能得到200的响应,并且在这个下载下来的license的文件中可以看到接口响应数据。

接下来您还可以进一步确认Engine的rtmp推流是否正常,你可以用任何工具(编码器、ffmpeg)等给TiTopStreamer推流,然后检查日志,正常情况它会向config server发起认证请求。 关于日志,您可以发送给我们,我们来检查。

通过以上几个步骤,我们基本就可以定位出问题所在。