On Wed, Oct 30, 2019 at 3:05 AM James E. Baird <james.ba...@ccr.net> wrote:
> Hello, > > I am trying to setup an SRT server. First, we are dealing with live > continuos streams, not files. I can get the connection setup easily enough > and move the streams fine. > > I am grabbing a UDP multicast stream from one site and uploading to > another site. Output at remote site is UDP. The transmitting server is > setup as the listener with the remote server as the caller. I am running > into 2 issues. > > > --------------------------------------------------------------------------------------------------- > 1. When setting up the connection, the listener side starts having > circular buffer overruns if the caller doesn't connect within the first few > seconds of the listener being started. I added overrun_nonfatal but found > that even after the caller connects, the listener is still in an overrun > state. > Is there a way to purge the buffer once an overrun is reached? I simply > want the stream to be available whenever the caller "dials in". So the > listener should be available 24x7 even if the caller is offline for a few > hours. > > ====Output from the listener showing this problem: > user@hostname:~$ ffmpeg -fflags +genpts -re -i > 'udp://x.x.x.x:xxxxx?overrun_nonfatal=1' -acodec copy -vcodec copy -strict > -2 -y -f mpegts > 'srt://y.y.y.y:yyyypkt_size=1316&mode=listener&passphrase=xxxxxxxxxxxx&pbkeylen=32' > ffmpeg version N-95534-gac0f5f4 Copyright (c) 2000-2019 the FFmpeg > developers > built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1) > configuration: --prefix=/home/circle/ffmpeg_build > --pkg-config-flags=--static > --extra-cflags=-I/home/circle/ffmpeg_build/include > --extra-ldflags=-L/home/circle/ffmpeg_build/lib --extra-libs='-lpthread > -lm' --bindir=/home/circle/bin --enable-libsrt --enable-gpl --enable-libass > --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame > --enable-libvorbis --enable-libx264 --enable-libx265 --enable-nonfree > libavutil 56. 35.101 / 56. 35.101 > libavcodec 58. 59.102 / 58. 59.102 > libavformat 58. 33.100 / 58. 33.100 > libavdevice 58. 9.100 / 58. 9.100 > libavfilter 7. 64.100 / 7. 64.100 > libswscale 5. 6.100 / 5. 6.100 > libswresample 3. 6.100 / 3. 6.100 > libpostproc 55. 6.100 / 55. 6.100 > [mpeg2video @ 0x563bb1a8fa00] Invalid frame dimensions 0x0. > Last message repeated 21 times > Input #0, mpegts, from 'udp://x.x.x.x:xxxx?overrun_nonfatal=1': > Duration: N/A, start: 71228.181744, bitrate: N/A > Program 3 > Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), > yuv420p(tv, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, > 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc > Stream #0:1[0x34](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 > Hz, 5.1(side), fltp, 384 kb/s > Stream #0:2[0x35](spa): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 > Hz, stereo, fltp, 96 kb/s (visual impaired) (descriptions) > Output #0, mpegts, to > 'srt://y.y.y.y:yyyy?pkt_size=1316&mode=listener&passphrase=xxxxxxxxxx&pbkeylen=32': > Metadata: > encoder : Lavf58.33.100 > Stream #0:0: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), > yuv420p(tv, top first), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 29.97 fps, > 29.97 tbr, 90k tbn, 90k tbc > Stream #0:1(eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, > 5.1(side), fltp, 384 kb/s > Stream mapping: > Stream #0:0 -> #0:0 (copy) > Stream #0:1 -> #0:1 (copy) > Press [q] to stop, [?] for help > [udp @ 0x563bb1a8a0c0] Circular buffer overrun. Surviving due to > overrun_nonfatal option 1x > Last message repeated 105 times > [udp @ 0x563bb1a8a0c0] Circular buffer overrun. Surviving due to > overrun_nonfatal option 1x > Last message repeated 37 times > [mpegts @ 0x563bb1a89540] PES packet size mismatch:00:19.71 > bitrate=6787.4kbits/s speed= 1x > Last message repeated 1 times > frame= 815 fps= 28 q=-1.0 size= 23899kB time=00:00:28.81 > bitrate=6793.4kbits/s speed= 1x > > Never use '-re' options for live streams( such as UDP), you should only use it in VOD streams(such as local files) You must receive live stream at full speed in a seperate process, otherwise, some packets could be discraded by '-re' options > > ------------------------------------------------------------------------------------------------------------------------- > 2. When I kill the caller side ffmpeg process, the listener side exits > ffmpeg as well. > Is there a way to make this survivable so the listener stays available? > > ====Remaining output (continuation from above) from the listener side when > the caller connection ends: > [udp @ 0x563bb1a8a0c0] Circular buffer overrun. Surviving due to > overrun_nonfatal option 1x > Last message repeated 39 times > [mpegts @ 0x563bb1a89540] PES packet size mismatch > Last message repeated 1 times > [srt @ 0x563bb1afbf80] Operation not supported: Invalid socket > IDte=6348.0kbits/s speed= 1x > av_interleaved_write_frame(): Unknown error occurred > Error writing trailer of > srt://y.y.y.y:yyyy?pkt_size=1316&mode=listener&passphrase=xxxxxxxxxx&pbkeylen=32: > Unknown error occurred > frame= 5223 fps= 29 q=-1.0 Lsize= 137315kB time=00:02:57.26 > bitrate=6345.6kbits/s speed= 1x > video:124754kB audio:8215kB subtitle:0kB other streams:0kB global > headers:0kB muxing overhead: 3.268119% > Conversion failed! > > > --------------------------------------------------------------------------------------------------------------------------- > The transmit/listener (server) side command being used: > ffmpeg -fflags +genpts -re -i 'udp://x.x.x.x:xxxx?overrun_nonfatal=1' > -acodec copy -vcodec copy -strict -2 -y -f mpegts > 'srt://y.y.y.y:yyyy?pkt_size=1316&mode=listener&passphrase=xxxxxxxxxxxx&pbkeylen=32' > > The receiving/caller (client) side command being used: > ffmpeg -re -i > 'srt://y.y.y.y:yyyy?pkt_size=1316&mode=caller&passphrase=xxxxxxxxxx' > -vcodec copy -acodec copy -strict -2 -y -f mpegts > 'udp://z.z.z.z:zzzz?pkt_size=1316' > > _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".