寫在前頭:
srs媒體服務器功能很強大,配置很方便。但是真正遇到問題的時候,在網(wǎng)上搜索了一圈,發(fā)現(xiàn)資料基本都是停留表面,沒有人深入去講,或者沒有人完全講到要點。
本人結(jié)合項目使用過程中出現(xiàn)的問題,給大家講一下常用的一些功能點,絕對是干貨。歡迎大家關(guān)注。
項目場景以及問題描述:
項目相關(guān)背景:
文章來源:http://www.zghlxwxcb.cn/news/detail-408799.html
- 使用librtmp庫打包AAC音頻數(shù)據(jù)到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:同常是指連接中斷,結(jié)合上面srs的打印,基本原因就是因為一段時間不推流,srs主動clean up ,關(guān)閉了此次連接;
- 當推流程序,再次調(diào)用RTMP_SendPacket時,由底層系統(tǒng)返回了Broken pipe的中斷錯誤。
解決方案:
- 嘗試修改srs服務器的配置項:rtmp_push的相關(guān)超時時長。
- 我采用的配置文件是 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;
}
}
授人以魚不如授人以漁:
其實關(guān)鍵文件是:文章來源地址http://www.zghlxwxcb.cn/news/detail-408799.html
- full.conf,所有的配置項目均可以在此處找到;
- 我這次加的publish中的超時配置就在883行左右;
到了這里,關(guān)于2022-03-15 【srs流媒體】rtmp超時中斷場景解決,如何增加srs配置文件conf的配置項的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!