写在前头:
srs媒体服务器功能很强大,配置很方便。但是真正遇到问题的时候,在网上搜索了一圈,发现资料基本都是停留表面,没有人深入去讲,或者没有人完全讲到要点。
本人结合项目使用过程中出现的问题,给大家讲一下常用的一些功能点,绝对是干货。欢迎大家关注。
项目场景以及问题描述:
项目相关背景:
文章来源:https://www.toymoban.com/news/detail-408799.html
- 使用librtmp库打包AAC音频数据到srs媒体服务器时,如果推流过程中,暂停了几秒不推流,下次再进行推流时,以下代码报错:
qt错误提示:Broken pipe
if(RTMP_SendPacket(rtmp,packet,TRUE) != TRUE)
{
......
}
- srs的控制台中打印以下日志:
serve error code=1011 : service cycle : rtmp: stream service : rtmp: publish timeout
原因分析:
- Broken pipe:同常是指连接中断,结合上面srs的打印,基本原因就是因为一段时间不推流,srs主动clean up ,关闭了此次连接;
- 当推流程序,再次调用RTMP_SendPacket时,由底层系统返回了Broken pipe的中断错误。
解决方案:
- 尝试修改srs服务器的配置项:rtmp_push的相关超时时长。
- 我采用的配置文件是 https.rtmp2rtc.conf,增加了“firstpkt_timeout 600000;normal_timeout 600000;”配置项,修改为以下:
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank console;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
https {
enabled on;
listen 8088;
key ./conf/server.key;
cert ./conf/server.crt;
}
}
http_api {
enabled on;
listen 1985;
https {
enabled on;
listen 1990;
key ./conf/server.key;
cert ./conf/server.crt;
}
}
stats {
network 0;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#config-candidate
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
publish{
firstpkt_timeout 600000;
normal_timeout 600000;
}
rtc {
enabled on;
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtmp-to-rtc
rtmp_to_rtc on;
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtc-to-rtmp
rtc_to_rtmp on;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
授人以鱼不如授人以渔:
其实关键文件是:文章来源地址https://www.toymoban.com/news/detail-408799.html
- full.conf,所有的配置项目均可以在此处找到;
- 我这次加的publish中的超时配置就在883行左右;
到了这里,关于2022-03-15 【srs流媒体】rtmp超时中断场景解决,如何增加srs配置文件conf的配置项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!