[FFmpeg-user] Audio decode adding 100ms delay
Max Rowan
max_rowan at hotmail.com
Mon Aug 24 07:07:36 EEST 2020
Hi all and thanks in advance for your responses. I've run into an issue where decoding audio adds roughly 100ms of delay to the entire decode. Simply adding the "-an" flag to either the encode/decode immediately takes 100ms off the overall latency. For reference I'm doing a capture from a decklink card and hardware encoding the video out to a UDP stream, which is then wrapped in an SRT stream. I'm not sure if it is of any consequence, but with "-loglevel debug" enabled the stream output for the opus encoder states "delay 120", like so:
Stream #0:1, 0, 1/90000: Audio: opus (libopus), 48000 Hz, stereo, s16, delay 120, 128 kb/s
I can't find where this "delay" is coming from, how it is calculated, and any change I make to the setting of libupos can never reduce this "delay" below 120. I should say that I had the same issue with other audio codecs as well.
Does anyone have any idea where this 100ms is coming from?
Encoding:
sudo ffmpeg -f decklink -duplex_mode half -format_code Hp50 -queue_size 4976640 -i "DeckLink Duo (1)" -c:v h264_qsv -b:v 6M -maxrate 6M -preset veryslow -bf 0 -refs 1 -c:a libopus -b:a 128k -compression_level 0 -frame_duration 20 -application lowdelay -f mpegts "udp://127.0.0.1:1234?pkt_size=1316"
SRT Wrap:
srt-live-transmit udp://:1234 "srt://10.0.3.5:1235?mode=listener&pkt_size=1316&latency=0"
Decode with audio:
ffplay -fast -fflags nobuffer -flags low_delay -framedrop -strict experimental "srt://10.0.3.5:1235?mode=caller&latency=0"
Decode no audio:
ffplay -fast -fflags nobuffer -flags low_delay -framedrop -strict experimental -an "srt://10.0.3.5:1235?mode=caller&latency=0"
Encode Output:
sudo ffmpeg -f decklink -duplex_mode half -format_code Hp50 -queue_size 4976640 -i "DeckLink Duo (1)" -c:v h264_qsv -b:v 6M -maxrate 6M -preset veryslow -bf 0 -refs 1 -c:a libopus -b:a 128k -compression_level 0 -frame_duration 20 -application lowdelay -f mpegts "udp://127.0.0.1:1234?pkt_size=1316"
ffmpeg version N-98687-g6e951d0cf8 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags='-I/root/ffmpeg_build/include -I/home/max/ffmpeg_sources/BMD_SDK/include' --extra-ldflags='-L/root/ffmpeg_build/lib -L$/home/max/ffmpeg_sources/BMD_SDK/include' --extra-libs='-lpthread -lm' --bindir=/root/bin --enable-libmfx --enable-gpl --enable-gnutls --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libsrt --enable-decklink --enable-libvmaf --enable-nonfree
libavutil 56. 58.100 / 56. 58.100
libavcodec 58.100.100 / 58.100.100
libavformat 58. 50.100 / 58. 50.100
libavdevice 58. 11.101 / 58. 11.101
libavfilter 7. 87.100 / 7. 87.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
[decklink @ 0x55b52ce07140] Found Decklink mode 1920 x 1080 with rate 50.00
[decklink @ 0x55b52ce07140] Frame received (#1) - No input signal detected - Frames dropped 1
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, decklink, from 'DeckLink Duo (1)':
Duration: N/A, start: 0.000000, bitrate: 1660416 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream #0:1: Video: rawvideo (UYVY / 0x59565955), uyvy422(progressive), 1920x1080, 1658880 kb/s, 50 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:1 -> #0:0 (rawvideo (native) -> h264 (h264_qsv))
Stream #0:0 -> #0:1 (pcm_s16le (native) -> opus (libopus))
Press [q] to stop, [?] for help
Output #0, mpegts, to 'udp://127.0.0.1:1234?pkt_size=1316':
Metadata:
encoder : Lavf58.50.100
Stream #0:0: Video: h264 (h264_qsv), nv12(progressive), 1920x1080, q=-1--1, 6000 kb/s, 50 fps, 90k tbn, 50 tbc
Metadata:
encoder : Lavc58.100.100 h264_qsv
Side data:
cpb: bitrate max/min/avg: 6000000/0/6000000 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: opus (libopus), 48000 Hz, stereo, s16, 128 kb/s
Metadata:
encoder : Lavc58.100.100 libopus
Thanks in advance, Max
More information about the ffmpeg-user
mailing list