IpCamera: New IP Camera Binding

Great work. I am going to test this as ffmpeg support is a feature i want to eventually use. I installed the plugin, but have some troubles getting an image. I use a HikVision NVR with 7 camera’s. These camera’s are PoE connected to the NVR, running on their own subnet. So these are not available directly on the openHAB subnet. For this HikVision has ‘Virtual Host’ support; it makes the camera’s available on a separate port on the NVR subnet. So for example i have the thing:

Thing ipcamera:HIKVISION:ServerrroomFront [IPADDRESS="192.168.x.x", PASSWORD="password", USERNAME="admin", POLL_CAMERA_MS=2000, PORT=65001, SERVER_PORT=65001, FFMPEG_OUTPUT="/tmp/serverroomfront/"]

So the camera is available on http://192.168.x.x:65001/

My item:

Image ServerroomFrontImage { channel="ipcamera:HIKVISION:ServerrroomFront:image" }
Switch ServerroomFrontUpdateImage "Get new picture" { channel="ipcamera:HIKVISION:ServerrroomFront:updateImageNow" }

But nothing is displayed.

When i start the plugin i get:

2019-05-01 15:01:29.565 [ERROR] [l.internal.messaging.saaj.client.p2p] - SAAJ0008: Bad Response; Not Found

2019-05-01 15:01:29.566 [WARN ] [ing.ipcamera.handler.IpCameraHandler] - SOAP error when trying to connect with ONVIF. This may indicate your camera does not fully support ONVIF, check for an updated firmware for your camera. Will try and connect with HTTP. Camera at IP:192.168.x.x, fault was com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (404Not Found

This is because ONVIF is not enabled on NVR and cams. Could this be related to my issue?

Continuing the discussion from IpCamera: New IP Camera Binding:

Almost there, i enabled Hikvision-CGI and ONVIF on the camere (NOT on the NVR) and set authentications to digest/basic. Still some issues (TRACE log):

2019-05-01 17:10:35.915 [hingStatusInfoChangedEvent] - 'ipcamera:HIKVISION:ServerrroomFront' changed from UNINITIALIZED to INITIALIZING
==> /var/log/openhab2/openhab.log <==
2019-05-01 17:10:36.915 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - About to connect to the IP Camera using the ONVIF PORT at IP:192.168.0.41:65001
2019-05-01 17:10:37.698 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Fetching the number of Media Profiles this camera supports.
2019-05-01 17:10:38.356 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Checking the selected Media Profile is a valid number.
2019-05-01 17:10:38.357 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Fetching a Token for the selected Media Profile.
2019-05-01 17:10:38.357 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - About to fetch some information about the Media Profiles from the camera
2019-05-01 17:10:38.357 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - *********** Media Profile 0 details reported by camera at IP:192.168.0.41 ***********
2019-05-01 17:10:38.358 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Camera will use this Media Profile unless you change it in the bindings settings.
2019-05-01 17:10:38.358 [WARN ] [ing.ipcamera.handler.IpCameraHandler] - Following NPE occured when trying to connect to the camera with ONVIF.java.lang.NullPointerException
2019-05-01 17:10:38.358 [ERROR] [ing.ipcamera.handler.IpCameraHandler] - Since an NPE occured when asking the camera about PTZ, the PTZ controls will not work. If the camera does not come online, give the camera the wrong ONVIF port number so it can bypass using ONVIF and still come online.
2019-05-01 17:10:38.358 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Sending camera GET: http://192.168.0.41:65001/Streaming/channels/101/picture
2019-05-01 17:10:38.367 [TRACE] [ipcamera.internal.MyNettyAuthHandler] - MyNettyAuthHandler is now setup for 	GET:/Streaming/channels/101/picture
2019-05-01 17:10:38.367 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Have  opened  a  brand NEW channel:0 	GET:/Streaming/channels/101/picture
2019-05-01 17:10:38.367 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - request to camera is :DefaultFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /Streaming/channels/101/picture HTTP/1.1
host: 192.168.0.41
connection: keep-alive
2019-05-01 17:10:38.370 [INFO ] [ing.ipcamera.handler.IpCameraHandler] - IP Camera at 192.168.0.41:65001 is now online.
==> /var/log/openhab2/events.log <==
2019-05-01 17:10:38.370 [hingStatusInfoChangedEvent] - 'ipcamera:HIKVISION:ServerrroomFront' changed from INITIALIZING to ONLINE

==> /var/log/openhab2/openhab.log <==
2019-05-01 17:10:38.371 [DEBUG] [ipcamera.internal.MyNettyAuthHandler] - 401: Mark to re-use,  the channel:0 	GET:/Streaming/channels/101/picture
2019-05-01 17:10:38.372 [DEBUG] [ipcamera.internal.MyNettyAuthHandler] - Setting up the camera to use Basic Auth and resending last request with correct auth.
2019-05-01 17:10:38.373 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Stream Server is serving on IP:192.168.0.40
2019-05-01 17:10:38.373 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Setting up the BASIC auth now, this should only happen once.
2019-05-01 17:10:38.374 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Sending camera GET: http://192.168.0.41:65001/Streaming/channels/101/picture
2019-05-01 17:10:38.375 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -    Using the already open channel:0 	GET:/Streaming/channels/101/picture
2019-05-01 17:10:38.375 [TRACE] [ipcamera.internal.MyNettyAuthHandler] - MyNettyAuthHandler is now setup for 	GET:/Streaming/channels/101/picture
2019-05-01 17:10:38.376 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpResponse(decodeResult: success, version: HTTP/1.1)
HTTP/1.1 401 Unauthorized
Date: Wed, 01 May 2019 17:09:23 GMT
Server: App-webs/
Content-Length: 277
Content-Type: text/html
Connection: keep-alive
Keep-Alive: timeout=10, max=99
WWW-Authenticate: Digest qop="auth", realm="IP Camera(C1121)", nonce="4d54426d596a59314d544d364e7a51315a6a526b4d6a633d", stale="FALSE"
WWW-Authenticate: Basic realm="IP Camera(C1121)"
2019-05-01 17:10:38.377 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultLastHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 277, cap: 277/277, unwrapped: PooledUnsafeDirectByteBuf(ridx: 650, widx: 650, cap: 1024)), decoderResult: success)
2019-05-01 17:10:38.378 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Sending camera GET: http://192.168.0.41:65001/ISAPI/System/Video/inputs/channels/101/motionDetection
2019-05-01 17:10:38.378 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - HTTP Result back from camera is 	:<!DOCTYPE html>
<html><head><title>Document Error: Unauthorized</title></head>
<body><h2>Access Error: 401 -- Unauthorized</h2>
<p>Authentication Error: Your client does not have permission to get URL /Streaming/channels/101/picture from this server.</p>
</body>
</html>
:
2019-05-01 17:10:38.398 [TRACE] [ipcamera.internal.MyNettyAuthHandler] - MyNettyAuthHandler is now setup for 	GET:/ISAPI/System/Video/inputs/channels/101/motionDetection
2019-05-01 17:10:38.399 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Have  opened  a  brand NEW channel:1 	GET:/ISAPI/System/Video/inputs/channels/101/motionDetection
2019-05-01 17:10:38.399 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - request to camera is :DefaultFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /ISAPI/System/Video/inputs/channels/101/motionDetection HTTP/1.1
host: 192.168.0.41
connection: keep-alive
authorization: Basic YWRtaW46MDFZTzA3REEwNWh2
2019-05-01 17:10:38.399 [INFO ] [ing.ipcamera.handler.IpCameraHandler] - IpCamera stream server has started on port:65001.
2019-05-01 17:10:38.404 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpResponse(decodeResult: success, version: HTTP/1.1)
HTTP/1.1 200 OK
Date: Wed, 01 May 2019 17:09:23 GMT
Server: App-webs/
Content-Length: 804
Connection: keep-alive
Keep-Alive: timeout=10, max=99
Content-Type: application/xml
2019-05-01 17:10:38.405 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultLastHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 804, cap: 804/804, unwrapped: PooledUnsafeDirectByteBuf(ridx: 987, widx: 987, cap: 1024)), decoderResult: success)
2019-05-01 17:10:38.405 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - HTTP Result back from camera is 	:<?xml version="1.0" encoding="UTF-8"?>
<MotionDetection version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<enabled>true</enabled>
<enableHighlight>true</enableHighlight>
<samplingInterval>2</samplingInterval>
<startTriggerTime>500</startTriggerTime>
<endTriggerTime>500</endTriggerTime>
<regionType>grid</regionType>
<Grid>
<rowGranularity>18</rowGranularity>
<columnGranularity>22</columnGranularity>
</Grid>
<MotionDetectionLayout version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<sensitivityLevel>0</sensitivityLevel>
<layout>
<gridMap>ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff</gridMap>
</layout>
</MotionDetectionLayout>
<enableWithMoving>false</enableWithMoving>
</MotionDetection>
:
2019-05-01 17:10:38.406 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Storing new Motion reply <?xml version="1.0" encoding="UTF-8"?>
<MotionDetection version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<enabled>true</enabled>
<enableHighlight>true</enableHighlight>
<samplingInterval>2</samplingInterval>
<startTriggerTime>500</startTriggerTime>
<endTriggerTime>500</endTriggerTime>
<regionType>grid</regionType>
<Grid>
<rowGranularity>18</rowGranularity>
<columnGranularity>22</columnGranularity>
</Grid>
<MotionDetectionLayout version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<sensitivityLevel>0</sensitivityLevel>
<layout>
<gridMap>ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff</gridMap>
</layout>
</MotionDetectionLayout>
<enableWithMoving>false</enableWithMoving>
</MotionDetection>
2019-05-01 17:10:38.883 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpResponse(decodeResult: success, version: HTTP/1.1)
HTTP/1.1 200 OK
Content-Type: image/jpeg; charset="UTF-8"
Connection: close
Content-Length: 291714
2019-05-01 17:10:38.883 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 920, cap: 920/920, unwrapped: PooledUnsafeDirectByteBuf(ridx: 1024, widx: 1024, cap: 1024)), decoderResult: success)

Hope someone can help getting this to work. I can see an image though.,

Hi Matt, trying out the new version and have a few issues, doesn’t capture gif anims, ‘update image now’ also does nothing. Tried a few of the URLs and they don’t work in Firefox at least.

My thing:

Thing ipcamera:ONVIF:ipcam1     "IP Camera 1" @ "Cameras" [
                        USERNAME="user", PASSWORD="psswd",
                        POLL_CAMERA_MS=1000,
                        IPADDRESS="192.168.0.100",
                        SNAPSHOT_URL_OVERRIDE="http://192.168.x.xx/tmpfs/auto.jpg",
                        FFMPEG_INPUT="rtsp://192.168.x.xx:554/1",
                        FFMPEG_OUTPUT="/mnt/data/tmp/ipCam1/",
                        FFMPEG_LOCATION="/usr/local/bin/ffmpeg",
                        FFMPEG_GIF_OUT_ARGUMENTS="-filter_complex fps=4,scale=480:-2:flags=lanczos,setpts=0.25*PTS,split[o1][o2];[o1]palettegen[p];[o2]fifo[o3];[o3][p]paletteuse",
                        FFMPEG_HLS_OUT_ARGUMENTS="-f lavfi -i aevalsrc=0 -acodec aac -vcodec copy -hls_flags delete_segments",
                        SERVER_PORT=54321, PORT=80, ONVIF_PORT=8080,
                        ONVIF_MEDIA_PROFILE=1, IP_WHITELIST="(192.168.x.xx)"
                ]

Error message, not sure if it’s related or not:

2019-05-02 04:24:04.084 [ERROR] [ing.saaj.soap.ver1_2.SOAPPart1_2Impl] - SAAJ0415: InputStream does not represent a valid SOAP 1.2 Message

Screencap of my OH page:

Cheers …

By looking at the log output in your posts I can see the ONVIF is connecting but is not reporting the streams the camera has correctly causing the issue. This is not a big problem, it just means you need to manually provide the urls the binding needs. Also if your camera does not have PTZ features I would give the wrong ONVIF port so that it fails and moves on to connecting quicker (provided you give the extra urls it will need).

Try using this after filling in the URLs correctly…

Thing ipcamera:HIKVISION:ServerrroomFront [IPADDRESS="192.168.x.x", PASSWORD="password", USERNAME="admin", POLL_CAMERA_MS=2000, PORT=65001, SERVER_PORT=5030, FFMPEG_OUTPUT="/tmp/serverroomfront/", FFMPEG_INPUT="any http or rtsp url here", SNAPSHOT_URL_OVERRIDE="http snapshot url here"]

Note I changed the SERVER_PORT to be a different value to the PORT.

If you are using RTSP be sure to check the port 554 is not blocked if you have them behind a VLAN as that is the default port for RTSP.

EDIT: Since the FFMPEG_INPUT can be a http address I would try that first as it will probably pass through the vlans port on 65001 instead of making it more complex with a different port for rtsp.

Look at the logs in DEBUG when you are asking to create a GIF as the ffmpeg output can be seen and it will give clues as to what is wrong. You only see the output in DEBUG or TRACE.

The output of ffmpeg can be seen in DEBUG log mode when you turn the create GIF switch to ON. This log output will tell you what is wrong. Readme file explains how to enable DEBUG logs.

Interesting url because of the tmpfs part, are you sure that fetches a snapshot from the camera? try it in a browser to make sure it works as that is what the “update image now” switch sends and is for updating the IMAGE channel with a picture if you tell the binding to otherwise not fetch snapshots.

Regarding these options, you do not need to include them if you are wanting to use the default values. This way if I make an improved default in a newer build you get the improved setting automatically.
FFMPEG_GIF_OUT_ARGUMENTS
FFMPEG_HLS_OUT_ARGUMENTS

SOAP is related as it is the ONVIF methods having an issue, you can ignore it but it indicates the autodetection of the cameras settings or the PTZ features may not work as intended. You can still get it going as only PTZ requires the ONVIF to be fully working.

Hello Matt,

I can see the image every 10 seconds. However the animated gif creation is completed successfully, but the image is distorted. Attached the TRACE log. It still gives me some authorization issues on startup bu the URL listed is working??

Log Output

Hop you can see why the animated gif creation is failing. When i use the same URL in videoLAN i see the stream without problems.

Generated Image

EDIT: ok and my thing config:

Thing ipcamera:HIKVISION:ServerrroomFront "Front Camera" @ "Serverruimte" [IPADDRESS="192.168.0.41", PASSWORD="password", USERNAME="admin", POLL_CAMERA_MS=10000, PORT=65001, SERVER_PORT=65001, ONVIF_PORT=65001, IP_WHITELIST="(192.168.0.2)", FFMPEG_OUTPUT="/tmp/serverroomfront/", FFMPEG_INPUT="rtsp://192.168.0.41:554/Streaming/Channels/101"]

G’day Matt, here’s the DEBUG log, no mention of ffmpeg even though I turned the associated switch on:

2019-05-03 01:21:51.720 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Sending camera GET: http://192.168.0.100:80/tmpfs/auto.jpg
2019-05-03 01:21:51.721 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Have re-opened  the closed channel:0   GET:/tmpfs/auto.jpg
2019-05-03 01:21:51.779 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Snapshot recieved: Binding will now close the channel.
2019-05-03 01:21:51.780 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - commonCameraHandler closed channel:0   URL:/tmpfs/auto.jpg
2019-05-03 01:21:52.720 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Sending camera GET: http://192.168.0.100:80/tmpfs/auto.jpg
2019-05-03 01:21:52.721 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Have re-opened  the closed channel:0   GET:/tmpfs/auto.jpg
2019-05-03 01:21:52.790 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Snapshot recieved: Binding will now close the channel.
2019-05-03 01:21:52.791 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - commonCameraHandler closed channel:0   URL:/tmpfs/auto.jpg

The url works great in a browser and the stream it generates at 1sec intervals through the binding is also working fine. Deleted the ffmpeg output options too.

The PTZ controls work ok, though a little jerky when controlling with a Slider.

Here’s the item defs, forgot to add them last message.

Image  ipCam1_Image<---><------><------><------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:image"}
Switch ipCam1_Update<-->"Update Image Now"<---->(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:updateImageNow"}
Switch ipCam1_GIF<----->"Create Animated GIF"<->(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:updateGif"}
String ipCam1_Mjpeg<--->"MJPEG URL [%s]"<------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:streamUrl"}
String ipCam1_RTSP<---->"RTSP URL [%s]"><------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:rtspUrl"}
String ipCam1_ImageURL<>"Image URL [%s]"<------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:imageUrl"}
String ipCam1_HLS<----->"HLS URL [%s]"<><------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:hlsUrl"}
Number ipCam1_Direction>"Camera Direction [%d]">(Cameras)
Dimmer ipCam1_Pan<----->"Pan left/right"<------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:pan"}
Dimmer ipCam1_Tilt<---->"Tilt up/down"<><------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:tilt"}
Dimmer ipCam1_Zoom<---->"Zoom in/out"<-><------>(Cameras)<----->{channel="ipcamera:ONVIF:ipcam1:zoom"}

Cheers …

How did you add the camera? was it with PaperUI? if you get zero log output when the switch is moved my guess is 1 of a few things…

  1. Cache needs cleaning as it has an old binding in the cache and not the latest.
  2. Delete and re-add the camera if you used PaperUI as it will not see the newly added channels and config items as it stores a cache/image of the thing in the database. Do you see the new channels and config items with PaperUI or are they missing?
  3. You did not update the JAR to latest and it is still an older one.

No, never use Paper UI for configuration, always edit text files. I definitely updated the JAR, copied it manualy using mc (Midnight Commander).

@posixx
Change the ffmpeg gif out arguments to this…

-filter_complex fps=2,scale=480:-2:flags=lanczos,setpts=0.5*PTS,split[o1][o2];[o1]palettegen[p];[o2]fifo[o3];[o3][p]paletteuse

I forgot I had the same issue and this fixed it for me and I have not updated the default setting to be the above. I suspect it has to do with the refresh rate of the incoming feed and how often a keyframe gets generated does not match up nicely with the settings.

if you can confirm either way if it works or not and I can look at making the above the default setting. You issue will be just getting the right argument for ffmpeg, the rest is working on your system.

@rastus_rob

No ideas on your issue as there is zero chance the latest build will not put something into the DEBUG log output. There is a newer JAR perhaps download it and triple check the downloaded file is the one you are moving across and maybe disable the snapshots so the logs do not fill up as quick until you have this working. If I hear back from @posixx that the setting suggested works I will do another build to make it the new default.

I tried the new arguments, no difference. Check running processes and no ffmpeg running, not even aconv which is supposed to be the fork I think.

The version I’m running is 2019-05-01-BETA.

@matt1 Using the new arguments i still get distorted gif. TRACE log:

2019-05-03 11:09:54.850 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Starting ffmpeg with this command now:/usr/bin/ffmpeg -y -t 6 -i rtsp://admin:password@192.168.0.41:554/Streaming/Channels/101 -filter_complex fps=2,scale=480:-2:flags=lanczos,setpts=0.5*PTS,split[o1][o2];[o1]palettegen[p];[o2]fifo[o3];[o3][p]paletteuse /tmp/serverroomfront/ipcamera.gif
2019-05-03 11:09:54.851 [vent.ItemStateChangedEvent] - ServerroomFrontCreateGif changed from OFF to ON
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --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
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavutil      55. 78.100 / 55. 78.100
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavcodec     57.107.100 / 57.107.100
2019-05-03 11:09:54.911 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavformat    57. 83.100 / 57. 83.100
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavdevice    57. 10.100 / 57. 10.100
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavfilter     6.107.100 /  6.107.100
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libavresample   3.  7.  0 /  3.  7.  0
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libswscale      4.  8.100 /  4.  8.100
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libswresample   2.  9.100 /  2.  9.100
2019-05-03 11:09:54.912 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   libpostproc    54.  7.100 / 54.  7.100
2019-05-03 11:09:55.274 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.274 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 12 packets
2019-05-03 11:09:55.275 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.275 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 36 packets
2019-05-03 11:09:55.276 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.276 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 16 packets
2019-05-03 11:09:55.276 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.277 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 15 packets
2019-05-03 11:09:55.277 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.277 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 16 packets
2019-05-03 11:09:55.278 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.278 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 21 packets
2019-05-03 11:09:55.279 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 2 packets
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 18 packets
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 5 packets
2019-05-03 11:09:55.281 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.282 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 20 packets
2019-05-03 11:09:55.282 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.282 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 2 packets
2019-05-03 11:09:55.282 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:55.282 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 2 packets
2019-05-03 11:09:55.312 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [hevc @ 0x55fb27a69720] The cu_qp_delta -238 is outside the valid range [-26, 25].
2019-05-03 11:09:56.584 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Input #0, rtsp, from 'rtsp://admin:password@192.168.0.41:554/Streaming/Channels/101':
2019-05-03 11:09:56.585 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   Metadata:
2019-05-03 11:09:56.585 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     title           : HIK Media Server V4.1.66
2019-05-03 11:09:56.586 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     comment         : HIK Media Server Session Description : standard
2019-05-03 11:09:56.587 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   Duration: N/A, start: 0.160000, bitrate: N/A
2019-05-03 11:09:56.587 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     Stream #0:0: Video: hevc (Main), yuv420p(tv), 2048x1536, 30 fps, 25 tbr, 90k tbn, 30 tbc
2019-05-03 11:09:56.590 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Stream mapping:
2019-05-03 11:09:56.590 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   Stream #0:0 (hevc) -> fps
2019-05-03 11:09:56.591 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   paletteuse -> Stream #0:0 (gif)
2019-05-03 11:09:56.591 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Press [q] to stop, [?] for help
2019-05-03 11:09:56.604 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [hevc @ 0x55fb27ab1a40] Could not find ref with POC 1
2019-05-03 11:09:56.637 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [hevc @ 0x55fb27a9bf00] The cu_qp_delta -238 is outside the valid range [-26, 25].
2019-05-03 11:09:56.645 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Output #0, gif, to '/tmp/serverroomfront/ipcamera.gif':
2019-05-03 11:09:56.645 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -   Metadata:
2019-05-03 11:09:56.646 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     title           : HIK Media Server V4.1.66
2019-05-03 11:09:56.646 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     comment         : HIK Media Server Session Description : standard
2019-05-03 11:09:56.647 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     encoder         : Lavf57.83.100
2019-05-03 11:09:56.647 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     Stream #0:0: Video: gif, pal8, 480x360, q=2-31, 200 kb/s, 2 fps, 100 tbn, 2 tbc
2019-05-03 11:09:56.647 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     Metadata:
2019-05-03 11:09:56.648 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -       encoder         : Lavc57.107.100 gif
2019-05-03 11:09:56.894 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:56.895 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 66 packets
2019-05-03 11:09:56.944 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [hevc @ 0x55fb28800d40] Could not find ref with POC 26
2019-05-03 11:09:57.174 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:09:57.485 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 83, cap: 83/83, unwrapped: PooledUnsafeDirectByteBuf(ridx: 83, widx: 83, cap: 1024)), decoderResult: success)
2019-05-03 11:09:57.486 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - HTTP Result back from camera is 	:--boundary
Content-Type: application/xml; charset="UTF-8"
Content-Length: 527
:
2019-05-03 11:09:57.486 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 512, cap: 512/512, unwrapped: PooledUnsafeDirectByteBuf(ridx: 512, widx: 512, cap: 512)), decoderResult: success)
2019-05-03 11:09:57.486 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - HTTP Result back from camera is 	:<EventNotificationAlert version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<ipAddress>192.168.254.19</ipAddress>
<portNo>80</portNo>
<protocol>HTTP</protocol>
<macAddress>94:e1:ac:3e:44:e2</macAddress>
<channelID>1</channelID>
<dateTime>2019-05-03T11:08:40+01:00</dateTime>
<activePostCount>0</activePostCount>
<eventType>videoloss</eventType>
<eventState>inactive</eventState>
<eventDescription>videoloss alarm</eventDescription>
<channelName>Serverroom Front</channelName>
</EventNotif:
2019-05-03 11:09:57.487 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - DefaultHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 15, cap: 15/15, unwrapped: PooledUnsafeDirectByteBuf(ridx: 15, widx: 15, cap: 8192)), decoderResult: success)
2019-05-03 11:09:57.487 [TRACE] [ing.ipcamera.handler.IpCameraHandler] - HTTP Result back from camera is 	:icationAlert>
:
2019-05-03 11:09:57.807 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:09:58.414 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:09:58.534 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.534 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 5 packets
2019-05-03 11:09:58.535 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.535 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 6 packets
2019-05-03 11:09:58.535 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.536 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 24 packets
2019-05-03 11:09:58.536 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.536 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 9 packets
2019-05-03 11:09:58.536 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.537 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 8 packets
2019-05-03 11:09:58.537 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.537 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 17 packets
2019-05-03 11:09:58.538 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.538 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 6 packets
2019-05-03 11:09:58.538 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.539 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 11 packets
2019-05-03 11:09:58.539 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.539 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 6 packets
2019-05-03 11:09:58.540 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.540 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 11 packets
2019-05-03 11:09:58.540 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.540 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 5 packets
2019-05-03 11:09:58.541 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.541 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 2 packets
2019-05-03 11:09:58.541 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:09:58.541 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 20 packets
2019-05-03 11:09:58.567 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [hevc @ 0x55fb28913c60] The cu_qp_delta 50 is outside the valid range [-26, 25].
2019-05-03 11:09:58.894 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:09:59.394 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:09:59.935 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:10:00.366 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:10:00.584 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:10:00.585 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 2 packets
2019-05-03 11:10:00.984 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
2019-05-03 11:10:01.344 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] max delay reached. need to consume packet
2019-05-03 11:10:01.345 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [rtsp @ 0x55fb27a659a0] RTP: missed 12 packets
2019-05-03 11:10:01.468 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [Parsed_palettegen_4 @ 0x55fb288884a0] 255(+1) colors generated out of 2693 colors; ratio=0.094690
2019-05-03 11:10:01.468 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - [Parsed_palettegen_4 @ 0x55fb288884a0] Dupped color: FFA9A9A9
2019-05-03 11:10:01.489 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    2 fps=0.4 q=-0.0 size=       1kB time=00:00:00.51 bitrate=  12.5kbits/s speed=0.104x    
2019-05-03 11:10:01.494 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Past duration 0.999992 too large
2019-05-03 11:10:01.568 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] -     Last message repeated 4 times
2019-05-03 11:10:01.568 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - frame=    7 fps=1.4 q=-0.0 Lsize=     543kB time=00:00:03.01 bitrate=1478.1kbits/s dup=0 drop=5 speed=0.605x    
2019-05-03 11:10:01.568 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - video:542kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.154339%
2019-05-03 11:10:01.576 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Animated GIF has been created and is ready for use.

New build 2019-05-03-Beta has following changes:

  • Fixed missing create gif from ONVIF thing types @rastus_rob this should be the reason you can get no log output, I missed it when pasting in the new feature.
  • UI changes to hide the arguments as advanced, now has a show more link down the bottom of the setup page to reach them.
  • Logging changes.

Also note that some Chromecasts have a limitation on the resolution you can cast HLS to them with, please google your model to see what they can do as this info is found in WIKI’s.

@posixx
I did some testing for an hour and it seems related to resolution, If I use 1080p it works and if I go higher it has issues.

1 Like

@matt1 i have 1 camera which is set to 1920x1080P (highest resolution on that camera) but this also suffers from the problem…

Stream = main stream
Bitrate = Variable
VIdeo Quality = Highest
Frame Rate = 15fps
Encoding = H.264

Excellent Matt, will try it now. Got a new cam today, basically an updated versions of the old one (kkMoon), it streams much better, the binding stream is now 1920 x 1080, on the old one it was 640 x 352.

Also some *.264 files showed up in my downloads directory, I’ve been playing with it a lot since setting it up, so no idea what dumped them there.

Will report back soon, thanks for all your efforts mate.

WHOO HOO !!! You’ve cracked it @matt1, fantastic stuff, I tried scale=960 and 720 but they had tearing so I backed off to 640 and they come out clear as a bell.

Outstanding work.

1 Like

Do you think you could add support for subnets on the whitelist? ie 192.168.0.0/24
just gets a little tedious adding like 50 IP’s

Another suggestion, I’ve noticed the gif anims all have the filename ipcamera.gif, would it be possible to add a timestamp so they’re not overwritten each time ?

@posixx
I finally got some time to check your log out in more depth. Your camera is using hevc (h265) format which thanks to ffmpeg will probably work fine for the GIF feature but if using the HLS feature I don’t know what the compat is with the different chromecast models as h265 is much newer format and requires more CPU to decode it.

The log had this as a summary of what is not normal, google is a good place to start as ffmpeg is very widely used for many years…

The cu_qp_delta 112 is outside the valid range
Could not find ref with POC 26
RTP: missed xx packets

I suspect the first two may be issues caused by the missing packets.

I did some testing last night with my camera in 4k and 20fps and I solved it (can now use any resolution and gif size combo that I wish) and created a newer build which is uploaded already. @rastus_rob this new build I suspect will fix the fussy resolutions for you. The cause for me was ffmpeg was using UDP. The newer build tries to use TCP so if your camera supports both be sure to try using TCP and I have seen this in my Hikvision control panel the ability to choose which one that cameras will use. From what little I know of RTP it is possible that some cameras may only offer UDP streaming and in this case dropped or late packets will cause the tearing as this is trying to be processed in realtime.

I must say I am surprised the GIF feature seems to be more popular than the ability to cast the video or have high res in the ios app.

Not the binding as far as I know, but it could be if you tried to open the HLS link some browsers default to saving/downloading files instead of playing them if there is no built in HLS player support which can be added with browser plugins. Possibly it was the browser saving the stream is my best guess. Usually it is a m3u8 file it downloads which thankfully is a small text file.

Best to explain your use case so I understand the request and the reason why. I don’t think of everything and often it is these requests that spark an idea. You can always write an Openhab rule that does this. The approach would be…

When updateGif changes to OFF
Run command or script that copies the file to any format you wish, you could also use the script to only keep 20 of the last files. This is why a predictable filename is handy as scripts and rules know what the file is called and then you can process them any way you wish.

Personally I chose cameras which can do this directly and it is a feature that makes a camera worth the extra money as they can continue doing this even if Openhab is not running and in better formats than GIF.