blakeblackshear / frigate

NVR with realtime local object detection for IP cameras
https://frigate.video
MIT License
19.2k stars 1.76k forks source link

[Camera Support]: Failed to probe corrupt segment #9714

Closed jonwilliams84 closed 8 months ago

jonwilliams84 commented 9 months ago

Describe the problem you are having

Have been running frigate for a couple of years now and had no issues to report up until I upgraded to 0.13.1 from 0.12.

Now I keep getting logs like this ever 10 secs.

It appears to be only happening for one of my cameras (I have 3 of the same model). (HIK-VISION)

Version

0.13.1-34FB1C2

Frigate config file

ffmpeg:
  hwaccel_args: preset-vaapi
  input_args: preset-rtsp-restream
  output_args:
    record: preset-record-generic

go2rtc:
  streams:
    front_main: 
      - rtsp://!REDACTED:554/ch1/main/av_stream
    front_sub:
      - rtsp://REDACTED:554/ch1/sub/av_stream
    front_detect:
      - rtsp://REDACTED:554/Streaming/Channels/103

cameras:
  front:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/front_main
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/front_detect
          roles:
            - detect
    detect:
      width: 1280
      height: 720
    objects:
      track:
        - person
        - car
        - dog
      filters:
        car:
          mask:
            - 266,29,453,34,456,82,270,142
            - 910,84,1117,134,1280,197,1280,80,1057,0,752,0,559,0,451,0,451,59,716,62
    motion:
      mask:
        - 410,0,410,30,22,30,22,0
    zones:
      driveway:
        coordinates: 200,720,1029,720,1104,580,1163,341,1169,209,757,118,317,314,138,391,151,426,94,441
    mqtt:
      enabled: True
      timestamp: False
      bounding_box: False
      crop: True
      height: 500
      required_zones: [ driveway ]
    snapshots:
      enabled: True
      crop: True
      timestamp: False
      bounding_box: False
      required_zones: [ driveway ]
      retain:
        default: 3

Relevant log output

2024-02-06 21:43:49.218364091  [extract_extradata @ 0x7fcb60054040] No start code is found.
2024-02-06 21:43:49.218472126  [ WARN:0@325.877] global cap_ffmpeg_impl.hpp:1139 open Unable to read codec parameters from stream (Invalid data found when processing input)
2024-02-06 21:43:49.218685655  [ERROR:0@325.878] global cap.cpp:164 open VIDEOIO(CV_IMAGES): raised OpenCV exception:
2024-02-06 21:43:49.218691309
2024-02-06 21:43:49.218695966  OpenCV(4.7.0) /io/opencv/modules/videoio/src/cap_images.cpp:267: error: (-215:Assertion failed) number < max_number in function 'icvExtractPattern'
2024-02-06 21:43:49.218698801
2024-02-06 21:43:49.218701829
2024-02-06 21:43:49.301532968  [2024-02-06 21:43:49] frigate.record.maintainer      WARNING : Failed to probe corrupt segment /tmp/cache/front@20240206214335+0000.mp4
2024-02-06 21:43:49.301539199  [2024-02-06 21:43:49] frigate.record.maintainer      WARNING : Discarding a corrupt recording segment: /tmp/cache/front@20240206214335+0000.mp4

FFprobe output from your camera

ffprobe version 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  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
[rtsp @ 0x558771590f00] max delay reached. need to consume packet
[rtsp @ 0x558771590f00] RTP: missed 136 packets
Input #0, rtsp, from 'rtsp://REDACTED:554/ch1/main/av_stream':
  Metadata:
    title           : Media Presentation
  Duration: N/A, start: 0.040000, bitrate: N/A
    Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 2688x1520, 25 tbr, 90k tbn, 90k tbc

Frigate stats

{"cameras":{"back":{"audio_dBFS":0.0,"audio_rms":0.0,"camera_fps":5.0,"capture_pid":498,"detection_enabled":1,"detection_fps":0.0,"ffmpeg_pid":502,"pid":491,"process_fps":5.0,"skipped_fps":0.0},"front":{"audio_dBFS":0.0,"audio_rms":0.0,"camera_fps":5.1,"capture_pid":501,"detection_enabled":1,"detection_fps":0.1,"ffmpeg_pid":507,"pid":492,"process_fps":5.1,"skipped_fps":0.0},"lounge":{"audio_dBFS":0.0,"audio_rms":0.0,"camera_fps":5.0,"capture_pid":509,"detection_enabled":1,"detection_fps":4.9,"ffmpeg_pid":521,"pid":496,"process_fps":5.0,"skipped_fps":0.0},"summerhouse":{"audio_dBFS":0.0,"audio_rms":0.0,"camera_fps":5.1,"capture_pid":506,"detection_enabled":1,"detection_fps":2.8,"ffmpeg_pid":519,"pid":494,"process_fps":5.0,"skipped_fps":0.0}},"cpu_usages":{"1":{"cmdline":"/package/admin/s6/command/s6-svscan -d4 -- /run/service","cpu":"0.0","cpu_average":"0","mem":"0.0"},"14":{"cmdline":"s6-supervise s6-linux-init-shutdownd","cpu":"0.0","cpu_average":"0","mem":"0.0"},"15":{"cmdline":"/package/admin/s6-linux-init/command/s6-linux-init-shutdownd -c /run/s6/basedir -g 3000 -C -B","cpu":"0.0","cpu_average":"0","mem":"0.0"},"23":{"cmdline":"s6-supervise frigate-log","cpu":"0.0","cpu_average":"0","mem":"0.0"},"24":{"cmdline":"s6-supervise nginx-log","cpu":"0.0","cpu_average":"0","mem":"0.0"},"25":{"cmdline":"s6-supervise go2rtc","cpu":"0.0","cpu_average":"0","mem":"0.0"},"26":{"cmdline":"s6-supervise go2rtc-log","cpu":"0.0","cpu_average":"0","mem":"0.0"},"27":{"cmdline":"s6-supervise s6rc-oneshot-runner","cpu":"0.0","cpu_average":"0","mem":"0.0"},"28":{"cmdline":"s6-supervise frigate","cpu":"0.0","cpu_average":"0","mem":"0.0"},"29":{"cmdline":"s6-supervise nginx","cpu":"0.0","cpu_average":"0","mem":"0.0"},"30":{"cmdline":"s6-supervise s6rc-fdholder","cpu":"0.0","cpu_average":"0","mem":"0.0"},"31":{"cmdline":"s6-supervise go2rtc-healthcheck","cpu":"0.0","cpu_average":"0","mem":"0.0"},"40":{"cmdline":"/package/admin/s6-2.11.3.2/command/s6-fdholderd -1 -i data/rules","cpu":"0.0","cpu_average":"0","mem":"0.0"},"41":{"cmdline":"/package/admin/s6/command/s6-ipcserverd -1 -- /package/admin/s6/command/s6-ipcserver-access -v0 -E -l0 -i data/rules -- /package/admin/s6/command/s6-sudod -t 30000 -- /package/admin/s6-rc/command/s6-rc-oneshot-run -l ../.. --","cpu":"0.0","cpu_average":"0","mem":"0.0"},"78":{"cmdline":"s6-log -b -- T 1 n0 s10000000 T /dev/shm/logs/nginx","cpu":"0.0","cpu_average":"0","mem":"0.0"},"80":{"cmdline":"s6-log -b -- T 1 n0 s10000000 T /dev/shm/logs/frigate","cpu":"0.0","cpu_average":"0","mem":"0.0"},"81":{"cmdline":"s6-log -b -- T 1 n0 s10000000 T /dev/shm/logs/go2rtc","cpu":"0.0","cpu_average":"0","mem":"0.0"},"90":{"cmdline":"/usr/local/go2rtc/bin/go2rtc -config=/dev/shm/go2rtc.yaml","cpu":"23.4","cpu_average":"23","mem":"0.1"},"101":{"cmdline":"bash ./run.user go2rtc-healthcheck","cpu":"0.0","cpu_average":"0","mem":"0.0"},"103":{"cmdline":"python3 -u -m frigate","cpu":"5.2","cpu_average":"8","mem":"0.9"},"114":{"cmdline":"nginx: master process nginx","cpu":"0.0","cpu_average":"0","mem":"0.0"},"145":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"146":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"147":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"148":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"149":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"150":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"153":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"159":{"cmdline":"nginx: worker process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"164":{"cmdline":"nginx: cache manager process","cpu":"0.0","cpu_average":"0","mem":"0.0"},"445":{"cmdline":"frigate.logger       ","cpu":"0.0","cpu_average":"0","mem":"0.3"},"447":{"cmdline":"frigate.recording_manager","cpu":"0.9","cpu_average":"0","mem":"0.4"},"456":{"cmdline":"/usr/bin/python3 -c from multiprocessing.resource_tracker import main;main(53)","cpu":"0.6","cpu_average":"0","mem":"0.0"},"457":{"cmdline":"frigate.detector.coral1","cpu":"2.3","cpu_average":"3","mem":"0.4"},"458":{"cmdline":"frigate.output       ","cpu":"2.0","cpu_average":"1","mem":"0.4"},"463":{"cmdline":"ffmpeg -f rawvideo -pix_fmt yuv420p -video_size 1280x720 -i pipe: -f mpegts -s 1280x720 -codec:v mpeg1video -q 8 -bf 0 pipe:","cpu":"0.0","cpu_average":"0","mem":"0.1"},"466":{"cmdline":"ffmpeg -f rawvideo -pix_fmt yuv420p -video_size 1280x720 -i pipe: -f mpegts -s 1280x720 -codec:v mpeg1video -q 8 -bf 0 pipe:","cpu":"0.0","cpu_average":"0","mem":"0.2"},"479":{"cmdline":"ffmpeg -f rawvideo -pix_fmt yuv420p -video_size 1280x720 -i pipe: -f mpegts -s 1280x720 -codec:v mpeg1video -q 8 -bf 0 pipe:","cpu":"0.0","cpu_average":"0","mem":"0.1"},"480":{"cmdline":"ffmpeg -f rawvideo -pix_fmt yuv420p -video_size 1920x1080 -i pipe: -f mpegts -s 1280x720 -codec:v mpeg1video -q 8 -bf 0 pipe:","cpu":"0.0","cpu_average":"0","mem":"0.1"},"491":{"cmdline":"frigate.process:back ","cpu":"2.3","cpu_average":"4","mem":"0.4"},"492":{"cmdline":"frigate.process:front","cpu":"2.9","cpu_average":"13","mem":"0.4"},"494":{"cmdline":"frigate.process:summerhouse","cpu":"13.0","cpu_average":"16","mem":"0.5"},"496":{"cmdline":"frigate.process:lounge","cpu":"17.8","cpu_average":"12","mem":"0.5"},"498":{"cmdline":"frigate.capture:back ","cpu":"3.0","cpu_average":"2","mem":"0.4"},"501":{"cmdline":"frigate.capture:front","cpu":"2.6","cpu_average":"2","mem":"0.4"},"502":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/back_detect -r 5 -vf fps=5,scale_vaapi=w=1280:h=720:format=nv12,hwdownload,format=nv12,format=yuv420p -threads 2 -f rawvideo -pix_fmt yuv420p pipe:","cpu":"6.4","cpu_average":"6","mem":"0.2"},"506":{"cmdline":"frigate.capture:summerhouse","cpu":"2.9","cpu_average":"2","mem":"0.4"},"507":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/front_detect -r 5 -vf fps=5,scale_vaapi=w=1280:h=720:format=nv12,hwdownload,format=nv12,format=yuv420p -threads 2 -f rawvideo -pix_fmt yuv420p pipe:","cpu":"6.2","cpu_average":"6","mem":"0.2"},"509":{"cmdline":"frigate.capture:lounge","cpu":"5.2","cpu_average":"4","mem":"0.4"},"514":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/back_main -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c copy -an /tmp/cache/back@%Y%m%d%H%M%S%z.mp4","cpu":"2.9","cpu_average":"2","mem":"0.1"},"519":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/summerhouse_detect -r 5 -vf fps=5,scale_vaapi=w=1280:h=720:format=nv12,hwdownload,format=nv12,format=yuv420p -threads 2 -f rawvideo -pix_fmt yuv420p pipe:","cpu":"6.2","cpu_average":"6","mem":"0.2"},"520":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/front_main -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c copy -an /tmp/cache/front@%Y%m%d%H%M%S%z.mp4","cpu":"2.9","cpu_average":"2","mem":"0.1"},"521":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/lounge_main -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c copy -an /tmp/cache/lounge@%Y%m%d%H%M%S%z.mp4 -r 5 -vf fps=5,scale_vaapi=w=1920:h=1080:format=nv12,hwdownload,format=nv12,format=yuv420p -threads 2 -f rawvideo -pix_fmt yuv420p pipe:","cpu":"11.1","cpu_average":"10","mem":"0.2"},"525":{"cmdline":"ffmpeg -hide_banner -loglevel warning -threads 2 -hwaccel_flags allow_profile_mismatch -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -user_agent FFmpeg Frigate/0.13.1-34fb1c2 -rtsp_transport tcp -timeout 5000000 -i rtsp://127.0.0.1:8554/summerhouse_main -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c copy -an /tmp/cache/summerhouse@%Y%m%d%H%M%S%z.mp4","cpu":"2.5","cpu_average":"2","mem":"0.1"},"5456":{"cmdline":"sleep 30s","cpu":"0.0","cpu_average":"0","mem":"0.0"}},"detection_fps":7.8,"detectors":{"coral1":{"detection_start":0.0,"inference_speed":9.42,"pid":457}},"gpu_usages":{"intel-vaapi":{"gpu":"2.61%","mem":"-%"}},"processes":{"go2rtc":{"pid":90},"logger":{"pid":445},"recording":{"pid":447}},"service":{"last_updated":1707256914,"latest_version":"0.13.1","storage":{"/dev/shm":{"free":949.1,"mount_type":"tmpfs","total":1024.0,"used":74.9},"/media/frigate/clips":{"free":864172.2,"mount_type":"ext4","total":959837.4,"used":55576.3},"/media/frigate/recordings":{"free":864172.2,"mount_type":"ext4","total":959837.4,"used":55576.3},"/tmp/cache":{"free":864172.2,"mount_type":"overlay","total":959837.4,"used":55576.3}},"temperatures":{"apex_0":50.55},"uptime":1410,"version":"0.13.1-34fb1c2"}}

Operating system

Other Linux

Install method

Docker Compose

Coral version

M.2

Network connection

Wired

Camera make and model

hikvision

Any other information that may be helpful

No response

NickM-27 commented 9 months ago

if this is the same camera then it seems like the main paths are wrong. But in any case could try using ffmpeg: on the go2rtc camera that is having trouble

jonwilliams84 commented 9 months ago

if this is the same camera then it seems like the main paths are wrong. But in any case could try using ffmpeg: on the go2rtc camera that is having trouble

Huh? The paths are right aren't they?...I probably needed to add that everything seems to be still working, regardless of the errors in the logs...I have only included config lines for the camera generating the errors.

Do you mean like this?: front_main:

If so, I tried this and only 2 of 4 cameras worked.

NickM-27 commented 9 months ago

rtsp://REDACTED:554/Streaming/Channels/103

Is hikvision sub stream

rtsp://REDACTED:554/Streaming/Channels/101

Is what hikvision main stream is

jonwilliams84 commented 9 months ago

rtsp://REDACTED:554/Streaming/Channels/103

Is hikvision sub stream

rtsp://REDACTED:554/Streaming/Channels/101

Is what hikvision main stream is

Yes - They work, but so do the ones I am currently using

gregewing commented 9 months ago

Just wanted to add that i'm new here, and I get these errors too. I came looking to see if this was an explanation for why object detection does not work at all for me.

XMaarten commented 8 months ago

I am experiencing exactly the same issue with also a Hikvision camera,

gregewing commented 8 months ago

I wanted to update that I am 50% confident that forcing TCP streaming from within frigate has stopped these messages appearing in my logs. certainly I don't see them during run, but only occasionally at startup.

It was not obvious to be how to force tcp streaming, but I figured it out while resolving broken images issues with UDP streaming. I did this by adding ffmpeg input args to each camera as per the screenshot.

image

NickM-27 commented 8 months ago

You are overriding input args incorrectly. You are putting hwaccel args under input which is entirely wrong

jonwilliams84 commented 8 months ago

I am experiencing exactly the same issue with also a Hikvision camera,

Update: I have updated the FW on the cameras affected to V5.5.801 build 211105 from V5.3.xxx and the errors have disappeared.

Frigate has been stable since making this firmware change on the camera.

jonwilliams84 commented 8 months ago

I wanted to update that I am 50% confident that forcing TCP streaming from within frigate has stopped these messages appearing in my logs. certainly I don't see them during run, but only occasionally at startup.

It was not obvious to be how to force tcp streaming, but I figured it out while resolving broken images issues with UDP streaming. I did this by adding ffmpeg input args to each camera as per the screenshot.

image

If this helps, here is my config:

ffmpeg:
  hwaccel_args: preset-vaapi
  input_args: preset-rtsp-restream
  output_args:
    record: preset-record-generic

birdseye:
  # Optional: Enable birdseye view (default: shown below)
  enabled: False

go2rtc:
  streams:
    back_main: 
      - rtsp://REDACTED@10.32.99.6:554/ch1/main/av_stream
    back_sub:
      - rtsp://REDACTED@10.32.99.6:554/ch1/sub/av_stream
    back_detect:
      - rtsp://REDACTED@10.32.99.6:554/Streaming/Channels/103

cameras:
  back:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/back_main
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/back_detect
          roles:
            - detect
    detect:
...
gregewing commented 8 months ago

You are overriding input args incorrectly. You are putting hwaccel args under input which is entirely wrong

Granted, i'm new to this, and I take on board your feedback.

However, my intention is to modify the behaviour of ffmpeg when it connects to the camera, not what it does with output streams. I'm not using go2rtc, though maybe I should be...? My cameras all support multiple streams, and I'm using a RTX3060 for hardware decoding (and detecting), so I don' think go2rtc offers me an advantage. Please set me straight if I am wrong, I certainly don't have this instance performance tuned quite yet.

NickM-27 commented 8 months ago

there are multiple problems.

  1. you have -c:v as an input arg. This arg is used for hardware decoding and belongs as a hwaccel_args
  2. you are using manual -c:v when you should be using preset preset-nvidia-h264
  3. you want to use an input arg like preset-rtsp-generic

using go2rtc has absolutely nothing to do with the advice above

gregewing commented 8 months ago

Interesting... Looks like i've misunderstood something... I got that straight out of the documentation.

I'll re-read.

gregewing commented 8 months ago

Still some work to do, configuring it your recommended way (@NickM-27 ) results in UDP being used to capture video from the cameras, and I get random image corruptions. I'll tried adding in my fix to the hwaccel_args, but still no dice.

How should I be adding this kind of custom configuration for ffmpeg to force it to use TCP to talk to the camera(s)?

NickM-27 commented 8 months ago

if you are using preset-rtsp-generic for input args then udp is not used, as tcp is forced by default

gregewing commented 8 months ago

Ok, so I've spent a little more time with the docs today and I appear to have a stable config, with input, output and hwaccel args in the right places. I'm using the presets as you recommended, and having them all set globally works for my camera types. No need to finagle the ffmpeg command structure to force tcp...

So thanks for pointing me in the right direction @NickM-27