Jump to content
Cesbo Community
  • Announcements

    • RadioSintetica

      Information   10/21/18

      Registration on the forum temporarily closed! For support requests, please contacat us: https://cesbo.com/help
      Our community in Telegram: @cesbo_en (English language) , @cesbo_ru (Russian language) , @cesbo_es (Spanish Language)
jidckii

ffmpeg "jitter buffer full"

Recommended Posts

Всем привет.

Вопрос не совсем по конкретному продукту, но может поможет кто разобраться.

вопрос подробно описан тут

https://toster.ru/q/508489

 

Hello.

The question is not really for a particular product, but who can help me figure it out.

the question is described in detail here

https://stackoverflow.com/questions/48920875/how-to-get-rid-of-errors-jitter-buffer-full-in-ffmpeg

Share this post


Link to post
Share on other sites
32 minutes ago, hack said:

reorder_queue_size нужно выставить 

что то не помогло.

Вначале просто дольше думает.

ffmpeg \
-strict experimental \
-fflags + genpts \
-fflags + latm \
-seek2any 1 \
-avoid_negative_ts + make_zero \
-max_delay 5000000 \
-rtsp_transport udp \
-reorder_queue_size 5000 \
-i rtsp://admin:@192.168.87.21:554/0?.sdp \
-map 0 \
-r 15 \
-c: v copy \
-an \
-f mpegts udp://239.0.0.1:1234?ttl=1?pkt_size=1316

а потом снова лезут jitter buffer full и дропы rtp

Share this post


Link to post
Share on other sites

значит мало, делайте больше 10240 к примеру

и добавьте verbose вывода, должно показать "setting jitter buffer size to" 

Share this post


Link to post
Share on other sites
47 minutes ago, hack said:

значит мало, делайте больше 10240 к примеру

и добавьте verbose вывода, должно показать "setting jitter buffer size to" 

Добавил, стало значительно лучше, но стали появляться 

max delay reached. need to consume packet

Прокрутил ещё немного -max_delay и -reorder_queue_size

всё равно периодически дропы RTP.

и есть ещё какие то ошибки непонятны:

[NULL @ 0x1cb3c00] unknown SEI type 229

Вот более полный вывод:

root@38f79613f5db:/tmp/workdir# ffmpeg \
> -v 48 \
> -nostats \
> -strict experimental  \
> -fflags +genpts \
> -fflags +latm \
> -seek2any 1 \
> -avoid_negative_ts +make_zero \
> -max_delay 0 \
> -rtsp_transport udp \
> -reorder_queue_size 20480 \
> -i  rtsp://admin:@192.168.87.21:554/0?.sdp \
> -map 0 \
> -r 15 \
> -c:v copy \
> -an \
> -f mpegts udp://192.168.87.15:1234?ttl=1?pkt_size=1316
ffmpeg version N-90078-gf611fef Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.6) 20160609
  configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-libkvazaar --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 11.101 / 58. 11.101
  libavformat    58.  9.100 / 58.  9.100
  libavdevice    58.  1.100 / 58.  1.100
  libavfilter     7. 12.100 /  7. 12.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '48'.
Reading option '-nostats' ... matched as option 'stats' (print progress report during encoding) with argument 0.
Reading option '-strict' ...Routing option strict to both codec and muxer layer
 matched as AVOption 'strict' with argument 'experimental'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+genpts'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+latm'.
Reading option '-seek2any' ... matched as AVOption 'seek2any' with argument '1'.
Reading option '-avoid_negative_ts' ... matched as AVOption 'avoid_negative_ts' with argument '+make_zero'.
Reading option '-max_delay' ... matched as AVOption 'max_delay' with argument '0'.
Reading option '-rtsp_transport' ... matched as AVOption 'rtsp_transport' with argument 'udp'.
Reading option '-reorder_queue_size' ... matched as AVOption 'reorder_queue_size' with argument '20480'.
Reading option '-i' ... matched as input url with argument 'rtsp://admin:@192.168.87.21:554/0?.sdp'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0'.
Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '15'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mpegts'.
Reading option 'udp://192.168.87.15:1234?ttl=1?pkt_size=1316' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 48.
Applying option nostats (print progress report during encoding) with argument 0.
Successfully parsed a group of options.
Parsing a group of options: input url rtsp://admin:@192.168.87.21:554/0?.sdp.
Successfully parsed a group of options.
Opening an input file: rtsp://admin:@192.168.87.21:554/0?.sdp.
[tcp @ 0x1cb0cc0] No default whitelist set
[rtsp @ 0x1cb0480] SDP:
v=0
o=- 38990265062388 38990265062388 IN IP4 192.168.87.21
s=RTSP Session
c=IN IP4 192.168.87.21
t=0 0
a=control:*
a=range:npt=0-
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000 
a=range:npt=0-
a=framerate:0S
a=fmtp:96 profile-level-id=4d002a; packetization-mode=1; sprop-parameter-sets=Z00AKp2oHgCJ+WbgICAoAAADAAgAAAMA9CA=,aO48gA==
a=framerate:25
a=control:trackID=3

Failed to parse interval end specification ''
[rtsp @ 0x1cb0480] video codec set to: h264
Failed to parse interval end specification ''
[rtsp @ 0x1cb0480] RTP Profile IDC: 4d Profile IOP: 0 Level: 2a
[rtsp @ 0x1cb0480] RTP Packetization Mode: 1
[rtsp @ 0x1cb0480] Extradata set to 0x1caffa0 (size: 38)
[rtp @ 0x1cb1080] No default whitelist set
[udp @ 0x1cb4640] No default whitelist set
[udp @ 0x1cb4640] end receive buffer size reported is 131072
[udp @ 0x1cb4240] No default whitelist set
[udp @ 0x1cb4240] end receive buffer size reported is 131072
[rtsp @ 0x1cb0480] setting jitter buffer size to 20480
[rtsp @ 0x1cb0480] hello state=0
[h264 @ 0x1cb3c00] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x1cb3c00] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x1cb3c00] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x1cb3c00] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x1cb3c00] unknown SEI type 229
[h264 @ 0x1cb3c00] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x1cb3c00] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x1cb3c00] nal_unit_type: 6, nal_ref_idc: 0
[h264 @ 0x1cb3c00] nal_unit_type: 5, nal_ref_idc: 3
[h264 @ 0x1cb3c00] unknown SEI type 229
[h264 @ 0x1cb3c00] Format yuvj420p chosen by get_format().
[h264 @ 0x1cb3c00] Reinit context to 1920x1088, pix_fmt: yuvj420p
[h264 @ 0x1cb3c00] nal_unit_type: 1, nal_ref_idc: 3
    Last message repeated 5 times
[h264 @ 0x1cb3c00] unknown SEI type 229
[rtsp @ 0x1cb0480] All info found
Input #0, rtsp, from 'rtsp://admin:@192.168.87.21:554/0?.sdp':
  Metadata:
    title           : RTSP Session
  Duration: N/A, start: 0.400000, bitrate: N/A
    Stream #0:0, 28, 1/90000: Video: h264, 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088), 0/1, 15 fps, 15 tbr, 90k tbn, 30 tbc
Successfully opened the file.
Parsing a group of options: output url udp://192.168.87.15:1234?ttl=1?pkt_size=1316.
Applying option map (set input stream mapping) with argument 0.
Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 15.
Applying option c:v (codec name) with argument copy.
Applying option an (disable audio) with argument 1.
Applying option f (force format) with argument mpegts.
Successfully parsed a group of options.
Opening an output file: udp://192.168.87.15:1234?ttl=1?pkt_size=1316.
[udp @ 0x1e57d40] No default whitelist set
Successfully opened the file.
[mpegts @ 0x1cf0200] muxrate VBR, pcr every 1 pkts, sdt every 200, pat/pmt every 40 pkts
Output #0, mpegts, to 'udp://192.168.87.15:1234?ttl=1?pkt_size=1316':
  Metadata:
    title           : RTSP Session
    encoder         : Lavf58.9.100
    Stream #0:0, 0, 1/90000: Video: h264, 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (0x0), 0/1, q=2-31, 15 fps, 15 tbr, 90k tbn, 15 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 0, current: -30000; changing to 1. This may result in incorrect timestamps in the output file.
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 1, current: -24000; changing to 2. This may result in incorrect timestamps in the output file.
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 2, current: -18000; changing to 3. This may result in incorrect timestamps in the output file.
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 3, current: -12000; changing to 4. This may result in incorrect timestamps in the output file.
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 4, current: -6000; changing to 5. This may result in incorrect timestamps in the output file.
[mpegts @ 0x1cf0200] Non-monotonous DTS in output stream 0:0; previous: 5, current: 0; changing to 6. This may result in incorrect timestamps in the output file.
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 37 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 1 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 5 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 5 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 5 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 3 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 10 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 3 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 2 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 3 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 25 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 1 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 7 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 1 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 1 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 4 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 22 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 1 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 6 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 5 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 11 times
[rtsp @ 0x1cb0480] max delay reached. need to consume packet
[rtsp @ 0x1cb0480] RTP: missed 10 packets
[NULL @ 0x1cb3c00] unknown SEI type 229
    Last message repeated 19 times

 

Что ещё можно попробовать покрутить ?

Share this post


Link to post
Share on other sites

в целом это все проблемы канала связи, плохой он у вас, ищите ему альтернативу

и пихать в него 1920x1080 это слишком много

ищите можно ли на камере уменьшить качество или размер передаваемой картинки

 

можно еще дальше играться с -max_delay 50000000 -reorder_queue_size 500000

это может улучить unknown SEI type 229

которые валяться от того что декодинг пакетов начинается по таймауту max delay reached. need to consume packet

а буфер пакетов при этом неполный

Share this post


Link to post
Share on other sites
3 minutes ago, hack said:

в целом это все проблемы канала связи, плохой он у вас, ищите ему альтернативу

и пихать в него 1920x1080 это слишком много

ищите можно ли на камере уменьшить качество или размер передаваемой картинки

Это просто не возможно. Я тестирую всё в локалке.

камера > utp cat5e > неуправляемый свич > utp cat5e > notebook lan

всё по проводу, потерь просто быть не может.

 

Битрейт этого 1920x1080 всего 2935.3kbits/s

в локалке на 100 мегабитном линке это не много явно.

Никогда не думал, что это на столько не тривиальная задача, просто рестримить udp поток.

 

Share this post


Link to post
Share on other sites
5 minutes ago, hack said:

http://ibb.co/fmckCc откуда эта картинка ? интерфейс pptp это тунели

Ну это раньше было через тунель ага, но там тоже всё на 100Мб, 2 провайдера в пиринге, gre между роутерами для удобства.

 Я до сервера гнал, сейчас для чистоты эксперимента напрямую практически подключился.

Т.е. есть вероятность что просто камера такое отдаёт ?

Как это проверить ?

Если с венды захожу, через activeX в веб морде поток ровный идёт, не рассыпается.  Наврятли всё таки проблема в камере?

 

Share this post


Link to post
Share on other sites

состояние тунеля проверяется iperf

а для альтернативы можете попробовать завести камеру через vlc или gstreamer

Share this post


Link to post
Share on other sites
33 minutes ago, hack said:

а для альтернативы можете попробовать завести камеру через vlc или gstreamer

в vlc не переставая летят ошибки 
[h264 @ 0x7f61d008bdc0] decode_slice_header error

$ cvlc rtsp://admin:@192.168.87.21:554/0?.sdp
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
[000000000257ef38] dummy interface: using the dummy interface module...
MultiFramedRTPSource::doGetNextFrame1(): The total received frame size exceeds the client's buffer size (100000).  94309 bytes of trailing data will be dropped!
Failed to open VDPAU backend libvdpau_i965.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
Failed to open VDPAU backend libvdpau_i965.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error
[h264 @ 0x7f61d008bdc0] decode_slice_header error

Ну и периодически подсыпается картинка, но не так как в ffplay.

Т.е. ну очень редко артефакты.

Вообще,  можно сказать, что в vlc нет рассыпаний вообще. Ровная картинка, всё хорошо и чётко играется.

Т.е. в камере проблем нет.

Камера китай, вот такая: 

https://ru.aliexpress.com/item/BESDER-Wide-Angle-Dome-720P-960P-1080P-Ip-Camera-Onvif-P2P-Motion-Detection-Surveillance-CCTV-Indoor/32829734170.html?spm=a2g0s.9042311.0.0.9JBCmo

Share this post


Link to post
Share on other sites

А нет, в ffplay если напрямую, просто играть, тоже всё хорошо. 

По ошибке изначально смотрел с рестрима.

Т.е. проблема только при рестриминге.

Share this post


Link to post
Share on other sites

отдайте в другом виде, не мультикаст

может проблема именно в мультикасте, тем более наверное cbr там не

 

хотя опять же  "jitter buffer full" это проблема на входе а не на выходе ffmpeg

Share this post


Link to post
Share on other sites
40 minutes ago, hack said:

хотя опять же  "jitter buffer full" это проблема на входе а не на выходе ffmpeg

вот в этом то и пробема.

я сейчас попробовал сразу делать hls всё работает прекрасно

ffmpeg \
-v 48 \
-strict experimental  \
-fflags +genpts \
-fflags +latm \
-seek2any 1 \
-avoid_negative_ts +make_zero \
-max_delay 0 \
-rtsp_transport udp \
-reorder_queue_size 500000 \
-i  rtsp://admin:@192.168.87.21:554/0?.sdp \
-map 0 \
-r 15 \
-c:v copy \
-an \
-f hls \
-hls_time 3 \
-hls_list_size 20 \
-hls_flags delete_segments \
-use_localtime 1 \
-hls_segment_filename "%Y%m%d_%H%M%S-%s.ts" \
cam01.m3u8

 

вывод примерно такой:

$ ffmpeg \
> -v 48 \
> -strict experimental  \
> -fflags +genpts \
> -fflags +latm \
> -seek2any 1 \
> -avoid_negative_ts +make_zero \
> -max_delay 0 \
> -rtsp_transport udp \
> -reorder_queue_size 500000 \
> -i  rtsp://admin:@192.168.87.21:554/0?.sdp \
> -map 0 \
> -r 15 \
> -c:v copy \
> -an \
> -f hls \
> -hls_time 3 \
> -hls_list_size 20 \
> -hls_flags delete_segments \
> -use_localtime 1 \
> -hls_segment_filename "%Y%m%d_%H%M%S-%s.ts" \
> cam01.m3u8
ffmpeg version 3.4.2-1~16.04.york0 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.6) 20160609
  configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '48'.
Reading option '-strict' ...Routing option strict to both codec and muxer layer
 matched as AVOption 'strict' with argument 'experimental'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+genpts'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+latm'.
Reading option '-seek2any' ... matched as AVOption 'seek2any' with argument '1'.
Reading option '-avoid_negative_ts' ... matched as AVOption 'avoid_negative_ts' with argument '+make_zero'.
Reading option '-max_delay' ... matched as AVOption 'max_delay' with argument '0'.
Reading option '-rtsp_transport' ... matched as AVOption 'rtsp_transport' with argument 'udp'.
Reading option '-reorder_queue_size' ... matched as AVOption 'reorder_queue_size' with argument '500000'.
Reading option '-i' ... matched as input url with argument 'rtsp://admin:@192.168.87.21:554/0?.sdp'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0'.
Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '15'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'hls'.
Reading option '-hls_time' ... matched as AVOption 'hls_time' with argument '3'.
Reading option '-hls_list_size' ... matched as AVOption 'hls_list_size' with argument '20'.
Reading option '-hls_flags' ... matched as AVOption 'hls_flags' with argument 'delete_segments'.
Reading option '-use_localtime' ... matched as AVOption 'use_localtime' with argument '1'.
Reading option '-hls_segment_filename' ... matched as AVOption 'hls_segment_filename' with argument '%Y%m%d_%H%M%S-%s.ts'.
Reading option 'cam01.m3u8' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 48.
Successfully parsed a group of options.
Parsing a group of options: input url rtsp://admin:@192.168.87.21:554/0?.sdp.
Successfully parsed a group of options.
Opening an input file: rtsp://admin:@192.168.87.21:554/0?.sdp.
[tcp @ 0x56103cbbeb00] No default whitelist set
[rtsp @ 0x56103cbbe2a0] SDP:
v=0
o=- 38990265062388 38990265062388 IN IP4 192.168.87.21
s=RTSP Session
c=IN IP4 192.168.87.21
t=0 0
a=control:*
a=range:npt=0-
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000 
a=range:npt=0-
a=framerate:0S
a=fmtp:96 profile-level-id=4d002a; packetization-mode=1; sprop-parameter-sets=Z00AKp2oHgCJ+WbgICAoAAADAAgAAAMA9CA=,aO48gA==
a=framerate:25
a=control:trackID=3

Failed to parse interval end specification ''
[rtsp @ 0x56103cbbe2a0] video codec set to: h264
Failed to parse interval end specification ''
[rtsp @ 0x56103cbbe2a0] RTP Profile IDC: 4d Profile IOP: 0 Level: 2a
[rtsp @ 0x56103cbbe2a0] RTP Packetization Mode: 1
[rtsp @ 0x56103cbbe2a0] Extradata set to 0x56103cbc1ac0 (size: 38)
[rtp @ 0x56103cbbebc0] No default whitelist set
[udp @ 0x56103cbbec80] No default whitelist set
[udp @ 0x56103cbbec80] end receive buffer size reported is 131072
[udp @ 0x56103cbd2100] No default whitelist set
[udp @ 0x56103cbd2100] end receive buffer size reported is 131072
[rtsp @ 0x56103cbbe2a0] setting jitter buffer size to 500000
[rtsp @ 0x56103cbbe2a0] hello state=0
[h264 @ 0x56103cbc1560] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] unknown SEI type 229
[h264 @ 0x56103cbc1560] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] nal_unit_type: 8, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] nal_unit_type: 6, nal_ref_idc: 0
[h264 @ 0x56103cbc1560] nal_unit_type: 5, nal_ref_idc: 3
[h264 @ 0x56103cbc1560] unknown SEI type 229
[h264 @ 0x56103cbc1560] Reinit context to 1920x1088, pix_fmt: yuvj420p
[h264 @ 0x56103cbc1560] nal_unit_type: 1, nal_ref_idc: 3
    Last message repeated 5 times
[h264 @ 0x56103cbc1560] unknown SEI type 229
[rtsp @ 0x56103cbbe2a0] All info found
Input #0, rtsp, from 'rtsp://admin:@192.168.87.21:554/0?.sdp':
  Metadata:
    title           : RTSP Session
  Duration: N/A, start: 0.400000, bitrate: N/A
    Stream #0:0, 28, 1/90000: Video: h264 (Main), 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088), 0/1, 15 fps, 15 tbr, 90k tbn, 30 tbc
Successfully opened the file.
Parsing a group of options: output url cam01.m3u8.
Applying option map (set input stream mapping) with argument 0.
Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 15.
Applying option c:v (codec name) with argument copy.
Applying option an (disable audio) with argument 1.
Applying option f (force format) with argument hls.
Successfully parsed a group of options.
Opening an output file: cam01.m3u8.
Successfully opened the file.
[hls @ 0x56103cbfd140] Opening '20180225_183613-1519565773.ts' for writing
[file @ 0x56103cd616c0] Setting default whitelist 'file,crypto'
[mpegts @ 0x56103cc026a0] muxrate VBR, pcr every 1 pkts, sdt every 2147483647, pat/pmt every 2147483647 pkts
Output #0, hls, to 'cam01.m3u8':
  Metadata:
    title           : RTSP Session
    encoder         : Lavf57.83.100
    Stream #0:0, 0, 1/90000: Video: h264 (Main), 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (0x0), 0/1, q=2-31, 15 fps, 15 tbr, 90k tbn, 15 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 0, current: -30000; changing to 1. This may result in incorrect timestamps in the output file.
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 1, current: -24000; changing to 2. This may result in incorrect timestamps in the output file.
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 2, current: -18000; changing to 3. This may result in incorrect timestamps in the output file.
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 3, current: -12000; changing to 4. This may result in incorrect timestamps in the output file.
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 4, current: -6000; changing to 5. This may result in incorrect timestamps in the output file.
[hls @ 0x56103cbfd140] Non-monotonous DTS in output stream 0:0; previous: 5, current: 0; changing to 6. This may result in incorrect timestamps in the output file.
[NULL @ 0x56103cbc1560] unknown SEI type 229
[NULL @ 0x56103cbc1560] unknown SEI type 22900:02.53 bitrate=N/A speed=2.34x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:03.06 bitrate=N/A speed=1.92x    
[AVIOContext @ 0x56103cd5fb00] Statistics: 0 seeks, 5 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183616-1519565776.ts' for writing
[file @ 0x56103cc191a0] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cd61920] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cc192c0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:04.13 bitrate=N/A speed=1.55x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:05.20 bitrate=N/A speed=1.39x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:06.26 bitrate=N/A speed=1.31x    
[AVIOContext @ 0x56103cbfc0e0] Statistics: 0 seeks, 4 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183619-1519565779.ts' for writing
[file @ 0x56103cddca60] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cbfd9a0] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cc192c0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:07.33 bitrate=N/A speed=1.25x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:08.40 bitrate=N/A speed=1.21x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:09.46 bitrate=N/A speed=1.18x    
[AVIOContext @ 0x56103cd61920] Statistics: 0 seeks, 4 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183622-1519565782.ts' for writing
[file @ 0x56103cd61740] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cbfd9a0] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cd5faa0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:10.53 bitrate=N/A speed=1.16x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:11.06 bitrate=N/A speed=1.15x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:12.13 bitrate=N/A speed=1.14x    
[AVIOContext @ 0x56103cbfc0e0] Statistics: 0 seeks, 4 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183625-1519565785.ts' for writing
[file @ 0x56103cddca60] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cbfd9a0] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cd5faa0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:13.20 bitrate=N/A speed=1.13x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:14.26 bitrate=N/A speed=1.12x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:15.33 bitrate=N/A speed= 1.1x    
[AVIOContext @ 0x56103cd61920] Statistics: 0 seeks, 4 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183628-1519565788.ts' for writing
[file @ 0x56103cd43960] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cbfd9a0] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cd5faa0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:16.40 bitrate=N/A speed= 1.1x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:17.46 bitrate=N/A speed=1.09x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:18.53 bitrate=N/A speed=1.08x    
[AVIOContext @ 0x56103cbfc0e0] Statistics: 0 seeks, 4 writeouts
[hls @ 0x56103cbfd140] Opening '20180225_183631-1519565791.ts' for writing
[file @ 0x56103cbd1fa0] Setting default whitelist 'file,crypto'
[hls @ 0x56103cbfd140] Opening 'cam01.m3u8.tmp' for writing
[file @ 0x56103cbfd9a0] Setting default whitelist 'file,crypto'
[hls muxer @ 0x56103cbfdb00] EXT-X-MEDIA-SEQUENCE:0
[AVIOContext @ 0x56103cd5faa0] Statistics: 0 seeks, 1 writeouts
[NULL @ 0x56103cbc1560] unknown SEI type 22900:19.06 bitrate=N/A speed=1.08x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:20.13 bitrate=N/A speed=1.08x    
[NULL @ 0x56103cbc1560] unknown SEI type 22900:21.20 bitrate=N/A speed=1.08x    

ошибки есть, но поток ровный, картинка не рассыпается.

Есть какая то проблема с буферизацией при udp to udp трансляции.

Скорее всего нужно под каждый поток свои правильные ручки по 

-max_delay и -reorder_queue_size

выкручивать.

Надо добить эту тему. 

Share this post


Link to post
Share on other sites

если с хлс работает, значит нужен cbr на udp

и возможно даже уходить от copy на транскодинг, что бы полностью разжать картинку а потом на cbr собрать

 

дело в том что на входе rtsp h264 идет в пакетизации rtp

такой режим есть только в rtsp, просто в udp или даже просто в rtp такого режима нет

Share this post


Link to post
Share on other sites
1 minute ago, hack said:

 

если с хлс работает, значит нужен cbr на udp

и возможно даже уходить от copy на транскодинг, что бы полностью разжать картинку а потом на cbr собрать

 

пробовал на камере включать cbr, но всё равно кардиограмма на графике.

Не работает у неё cbr.

на транскодинг нет мощей. Да и ffmpeg даже, не умеет полноценного cbr делать.

Share this post


Link to post
Share on other sites

я не про камеру, я про ffmpeg говорил, если при отдачи в хлс все гладко, значит хлс равняет поток сегментами

а udp не равняет, ну экспериментируйте дальше

Share this post


Link to post
Share on other sites
2 minutes ago, hack said:

я не про камеру, я про ffmpeg говорил, если при отдачи в хлс все гладко, значит хлс равняет поток сегментами

а udp не равняет, ну экспериментируйте дальше

А, теперь понял.

Ну значит проблема точно в буферизации между приёмом и отдачей.

ТОлько вот не очень теперь понятно как и какие ручки надо правильно выкрутить, что бы не дропалось на входе всё ...

Share this post


Link to post
Share on other sites
-c:v copy не использовать

а перейти на транскодинг

ttl поставить хотя бы 10, а то оно сразу же будет дропатся на первом узле, вы хоть в курсе что такое ttl ?

cbr больше относится к кодеку, поэтому она появляется только когда появляться транкодинг h264

а в самом udp есть bitrate, вот не знаю даст ли это что то

на мой взгляд если уж очень нужен именно мультикаст на выходе

значит нужно переходть на транскодирование, и на выходе мультикаста менять частоту кейфреймов

тогда картинка более стабильнее будет на выходе

Share this post


Link to post
Share on other sites
1 hour ago, hack said:

а перейти на транскодинг

я понимаю что такое транскодинг, нет у меня ни gpu ни процессора на тренскодирование .

1 hour ago, hack said:

ttl поставить хотя бы 10, а то оно сразу же будет дропатся на первом узле, вы хоть в курсе что такое ttl ?

я знаю что такое ttl, дальше этого узла поток и не должен уходить.

Скажем так, этот rtsp2udp планируется как процесс  парковщик потока. С конечного уже забирать на ssegent, hls, dash , etc...

1 hour ago, hack said:

cbr больше относится к кодеку, поэтому она появляется только когда появляться транкодинг h264

а в самом udp есть bitrate, вот не знаю даст ли это что то

на мой взгляд если уж очень нужен именно мультикаст на выходе

значит нужно переходть на транскодирование, и на выходе мультикаста менять частоту кейфреймов

тогда картинка более стабильнее будет на выходе

всё это не как не отменяет дропов на входе при простой перпаковке из udp в udp . Проблема то только в этом.

Share this post


Link to post
Share on other sites
Just now, hack said:

это не простая перепаковка udp udp, это rtp это не udp, а это не одно и тоже

да я понимаю. RTP запакован в UDP, есть ещё RTCP и т.д. и тому подобное.

летит мне UDP в нём лежит RTP в нем (скорее всего, не проверял) MPEGTS в нем h264....

Иногда прилетают RTCP.

Проблема то не в используемых терминах, а том, что поток который мне прилетает я не могу корректно ретранслировать без потерь. 

 

Share this post


Link to post
Share on other sites

не так, в rtp идет пакетированный h264, а в udp он идет обычный

я бы сравнивал как чуть более надежный,  чуть менее надежный в udp

 

попробуйте астрой ретранслировать, rtsp в udp

может она справится, cbr в ней некий есть

Share this post


Link to post
Share on other sites
On 25.02.2018 at 11:19 PM, hack said:

не так, в rtp идет пакетированный h264, а в udp он идет обычный

я бы сравнивал как чуть более надежный,  чуть менее надежный в udp

в общем сейчас запускаю вот так

ffmpeg -analyzeduration 20000000 -fflags +genpts -fflags +latm 
              -max_delay 1000000 -reorder_queue_size 20000
              -rtsp_transport udp -i rtsp://admin:@192.168.87.21:554/0?.sdp
              -map 0 -r 15 -c:v copy -an -f rtp_mpegts
              -max_interleave_delta 5000000 -fflags +genpts 
              rtp://239.0.0.1:1234?ttl=1?pkt_size=1316

примерно раз в секунду дропы rtp с ошибками типа:

[rtsp @ 0xe430c0] max delay reached. need to consume packet66 bitrate=2649.3kbits/s speed=   1x    
[rtsp @ 0xe430c0] RTP: missed 1 packets

если уменьшаю 
-reorder_queue_size или убираю/уменьшаю  -max_interleave_delta

то начинаю снова получать 

[rtsp @ 0x154d180] jitter buffer full 
[rtsp @ 0x154d180] RTP: missed 4 packets

как то так...

И непонятно, возможно ли вообще ретранслировать без дропов, при этом не важно во что транслировать в udp в hls в файл ....

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×