Opened 7 hours ago

#11276 new defect

Streams quality affected if one of them is sent to non-existing IP address on your local LAN

Reported by: alex_vs Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: rtp, non-existing ip
Cc: alex_vs Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

When encoding multiple RTP streams, and one of them happens to be using non-existing local IP address as destination, then all the rest streams start skipping packets approximately every 3-4 seconds.

More details:

  1. Happens when using our own wrapper library, but reproduced also using FFMPEG standalone commands (see below)
  1. Does not happen when the non existing IP address is from another subnet-i.e. would happen if you use rtp://192.168.1.123 for network 192.168.1.1/24), but would work if using non-existing rtp://192.168.5.123
  1. Initially suspected that it could be due to missing RTCP response from the destination, therefore attempted FFMPEG command with RTCP disabled, but that did not help.

How to reproduce:

Command with two outputs:

% arecord -D plughw:0,0 -r 44100 -c 2 -f S16_LE | ffmpeg -i - -c:a mp3  -b:a 384k -f rtp rtp://239.1.1.1:5767 -f rtp rtp://192.168.1.164:8989

Command with output replication (using tee output)

% arecord -D plughw:0,0 -r 44100 -c 2 -f S16_LE | ffmpeg -i - -c:a mp3  -b:a 384k -f tee -map 0:a "[f=rtp:onfail=ignore]rtp://239.1.1.1:5767|[f=rtp:onfail=ignore]rtp://192.168.1.164:8989"

In both cases the multicast stream starts suffering when the second IP address (1.164) is replaced with nonexistent IP on the LAN (1.123)

Other notes:

  1. We have found that using arecord and piping it to ffmpeg is a bit more efficient than using alsa input directly from ffmpeg
  2. Happens also with other codecs (ex. G.711)
  3. Same thing happens also if you start a second ffmpeg encoding process-its stream(s) output(s) are also affected.

FFMPEG Version:

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.3.0 (GCC)
  configuration: --disable-stripping --enable-pic --enable-shared --enable-pthreads --enable-nonfree --cross-prefix=arm-oe-linux-gnueabi- --ld='arm-oe-linux-gnueabi-gcc -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/recipe-sysroot' --cc='arm-oe-linux-gnueabi-gcc -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/recipe-sysroot' --cxx='arm-oe-linux-gnueabi-g++ -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/recipe-sysroot' --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map==/usr/src/debug/ffmpeg/4.2.2-r0 -fdebug-prefix-map==/usr/src/debug/ffmpeg/4.2.2-r0 -fdebug-prefix-map=/recipe-sysroot= -fdebug-prefix-map=/recipe-sysroot-native= -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/recipe-sysroot' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed' --sysroot=/recipe-sysroot --libdir=/usr/lib --shlibdir=/usr/lib --datadir=/usr/share/ffmpeg --disable-mipsdsp --disable-mipsdspr2 --cpu=cortex-a7 --pkg-config=pkg-config --disable-encoder=aac --disable-decoder=aac --disable-decoder=aac_fixed --enable-alsa --enable-avcodec --enable-avdevice --enable-avfilter --enable-avformat --enable-avresample --enable-bzlib --enable-libfdk-aac --enable-nonfree --enable-gpl --disable-libgsm --disable-indev=jack --enable-libopus --enable-libsrt --disable-libvorbis --enable-lzma --disable-libmfx --enable-libmp3lame --enable-openssl --enable-postproc --disable-sdl2 --disable-libspeex --enable-swresample --enable-swscale --enable-libtheora --disable-vaapi --disable-vdpau --disable-libvpx --enable-libx264 --disable-libx265 --disable-libxcb --disable-outdev=xv --enable-zlib
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100

Linux Kernel version:

Linux barix-ipam400 5.15.88-yocto-standard #1 SMP PREEMPT Wed May 29 09:26:58 UTC 2024 armv7l GNU/Linux

Change History (0)

Note: See TracTickets for help on using tickets.