SRT No room to store incoming packet
metaswirl opened this issue · 1 comments
Description
I have 2 instances of Liquidsoap running, one at home which is a SRT caller, one on a remote VPS which is a SRT listener. The stream works flawlessy for roughly about 12 hours, until the remote VPS SRT listener crashes and the log is filled with:
2024/09/19 10:08:08 [srt:4] 10:08:08.076563/SRT:RcvQ:w1!W:SRT.qr: @466951504: No room to store incoming packet seqno 1089222595, insert offset 16427. iFirstUnackSeqNo=1089214359 m_iStartSeqNo=1089206168 m_iStartPos=6182 m_iMaxPosOff=8191. Space avail 0/8192 pkts. (TSBPD ready in -112483ms, timespan 56120 ms). GETTIME_MONOTONIC drift 0 ms.
Steps to reproduce
Home server (caller)
enc = %ffmpeg(format="s16le",%audio(codec="pcm_s16le", ac=2, ar=48000))
output.srt(host="X.X.X.X", port=9010,
passphrase="********",
enforced_encryption=true, on_connect=srt_connect, id="srt", enc, playlist_safe)
VPS (listener)
raw_srt_input = input.srt(
content_type="application/ffmpeg; format=s16le, channels=2, sample_rate=44100",
passphrase="********", enforced_encryption=true, bind_address="X.X.X.X", port=9010)
radio = blank.strip(stereo(raw_srt_input))
Expected behavior
Possibly the application does not read the packets fast enough and I would need to increase the receive buffer on the listener? re: Haivision/srt#409
Is there a way to add values to rcvbuf on input.srt ?
Liquidsoap version
Liquidsoap 2.2.5+dev
Copyright (c) 2003-2024 Savonet team
Liquidsoap is open-source software, released under GNU General Public License.
See <http://liquidsoap.info> for more information.
Liquidsoap build config
* Liquidsoap version : 2.2.5+dev
* Compilation options
- Release build : false
- Git SHA : (none)
- OCaml version : 5.2.0
- OS type : Unix
- Libs versions : angstrom=0.16.0 asn1-combinators=0.2.6 astring=0.8.5 base64=3.5.1 bigarray-compat=1.1.0 bigstringaf=0.10.0 bos=0.2.1 bytes=[distributed with OCaml 4.02 or above] ca-certs=v0.2.3 camlp-streams camomile.lib=2.0 cry=1.0.3 cstruct=6.2.0 ctypes=0.23.0 ctypes-foreign=0.23.0 ctypes.stubs=0.23.0 curl=0.9.2 domain-name=0.4.0 dtools=0.4.5 dune-build-info=3.16.0 dune-private-libs.dune-section=3.16.0 dune-site=3.16.0 dune-site.private=3.16.0 duppy=0.9.4 eqaf=0.9 eqaf.bigstring=0.9 eqaf.cstruct=0.9 ffmpeg-av=1.1.11 ffmpeg-avcodec=1.1.11 ffmpeg-avdevice=1.1.11 ffmpeg-avfilter=1.1.11 ffmpeg-avutil=1.1.11 ffmpeg-swresample=1.1.11 ffmpeg-swscale=1.1.11 fileutils=0.6.4 fmt=0.9.0 fpath=0.7.3 gen=1.1 gmap=0.3.0 hkdf=1.0.4 integers ipaddr=5.6.0 ladspa=0.2.2 liquidsoap-lang=2.2.5 liquidsoap-lang.console=2.2.5 liquidsoap_builtins liquidsoap_core liquidsoap_ffmpeg liquidsoap_ladspa liquidsoap_optionals liquidsoap_oss liquidsoap_runtime liquidsoap_srt liquidsoap_stereotool liquidsoap_taglib liquidsoap_tls logs=0.7.0 macaddr=5.6.0 magic-mime=1.3.1 menhirLib=20240715 metadata=0.3.0 mirage-crypto=0.11.3 mirage-crypto-ec=0.11.3 mirage-crypto-pk=0.11.3 mirage-crypto-rng=0.11.3 mirage-crypto-rng.unix=0.11.3 mm=0.8.5 mm.audio=0.8.5 mm.base=0.8.5 mm.image=0.8.5 mm.midi=0.8.5 mm.video=0.8.5 pbkdf pcre=7.5.0 posix-base=2.0.2 posix-socket=2.0.2 posix-socket.constants=2.0.2 posix-socket.stubs=2.0.2 posix-socket.types=2.0.2 ppx_string.runtime=v0.17.0 ptime=1.1.0 ptime.clock.os=1.1.0 re=1.12.0 rresult=0.7.0 sedlex=3.2 seq=[distributed with OCaml 4.07 or above] sexplib0=v0.17.0 srt=0.3.0 srt.constants=0.3.0 srt.stubs=0.3.0 srt.stubs.locked=0.3.0 srt.types=0.3.0 stdlib-shims=0.3.0 stereotool str=5.2.0 stringext=1.6.0 taglib=0.3.10 threads=5.2.0 tls=0.17.3 unix=5.2.0 uri=4.4.0 x509=0.16.5 zarith=1.14
- architecture : amd64
- host : x86_64-pc-linux-gnu
- target : x86_64-pc-linux-gnu
- system : linux
- ocamlopt_cflags : -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -pthread
- native_c_compiler : gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -pthread -D_FILE_OFFSET_BITS=64
- native_c_libraries : -lm -ldl -lpthread
* Configured paths
- mode : default
- standard library : (set by dune-site)
- scripted binaries : (set by dune-site)
- rundir : (set by dune-site)
- logdir : (set by dune-site)
- camomile files : (set by dune-site)
* Supported input formats
- MP3 : no (requires mad)
- AAC : no (requires faad)
- Ffmpeg : yes
- Flac (native) : no (requires flac)
- Flac (ogg) : no (requires ogg)
- Opus : no (requires opus)
- Speex : no (requires speex)
- Theora : no (requires theora)
- Vorbis : no (requires vorbis)
* Supported output formats
- FDK-AAC : no (requires fdkaac)
- Ffmpeg : yes
- MP3 : no (requires lame)
- MP3 (fixed-point) : no (requires shine)
- Flac (native) : no (requires flac)
- Flac (ogg) : no (requires ogg)
- Opus : no (requires opus)
- Speex : no (requires speex)
- Theora : no (requires theora)
- Vorbis : no (requires vorbis)
* Tags
- Taglib (ID3 tags) : yes
- Vorbis : no (requires vorbis)
* Input / output
- ALSA : no (requires alsa)
- AO : no (requires ao)
- FFmpeg : yes
- GStreamer : no (requires gstreamer)
- JACK : no (requires bjack)
- OSS : yes
- Portaudio : no (requires portaudio)
- Pulseaudio : no (requires pulseaudio)
- SRT : yes
* Audio manipulation
- FFmpeg : yes
- LADSPA : yes
- Lilv : no (requires lilv)
- Samplerate : no (requires samplerate)
- SoundTouch : no (requires soundtouch)
- StereoTool : yes
* Video manipulation
- camlimages : no (requires camlimages)
- FFmpeg : yes
- frei0r : no (requires frei0r)
- ImageLib : no (requires imagelib)
- SDL : no (requires tsdl-image & tsdl-ttf)
* MIDI manipulation
- DSSI : no (requires dssi)
* Visualization
- GD : no (requires gd)
- Graphics : no (requires graphics)
- SDL : no (requires tsdl-image & tsdl-ttf)
* Additional libraries
- FFmpeg filters : yes
- FFmpeg devices : yes
- inotify : no (requires inotify)
- irc : no (requires irc-client-unix)
- jemalloc : no (requires jemalloc)
- lastfm : no (requires lastfm)
- lo : no (requires lo)
- memtrace : no (requires memtrace)
- mem_usage : no (requires mem_usage)
- osc : no (requires osc-unix)
- ssl : no (requires ssl)
- tls : yes
- posix-time2 : no (requires posix)
- windows service : no (requires winsvc)
- YAML support : no (requires yaml)
- XML playlists : no (requires xmlplaylist)
* Monitoring
- Prometheus : no (requires prometheus)
Installation method
From OPAM
Additional Info
No response
I believe I have solved this issue, might have something to do with using RSAS instead of Icecast.
I changed the following settings on output.icecast:
send_icy_metadata=false
mksafe(buffer(stream)
The stream has been running for 3 days without any issues! :)