VIDEO starter kit for Ignition Vision and Perspective 8.1

:new: VIDEO starter kit for Ignition Vision and Perspective 8.1 :video_camera: !

3 use case:

  1. A standalone video wall Ignition Vision project
  2. A video wall Ignition Vision Project with the choices of the cameras driven by an Ignition Perspective Project
  3. A video stream displayed in a standalone Ignition Perspective Project
    (3. is a tricky and complex solution. Don't use it in production without running test over time)

  • Ignition Vision edition support :

    • RTSP H264/H265 video stream (or video File, webcam, or Gstreamer test pattern).4K supported
    • ONVIF PTZ (Pan Tilt Zoom) commands to control camera PTZ if available. Command with:
      • mouse :computer_mouse
      • buttons
      • usb joystick :joystick: :video_game: (tested only on windows OS)
  • Ignition Perspective edition support :

    • RTSP H264/H265 video stream encoded to WEBRTC H264/VP8/VP9 or Gstreamer test pattern
    • ONVIF PTZ (Pan Tilt Zoom) command to control camera PTZ if available. Command with:
      • buttons

h264_petit onvif_petit

:warning: Disclaimer : this starter kit is mainly used with OS windows, and few tests have been done with Linux ubuntu and macOS.

Feedbacks are welcome !

Installation:

It contains lots of script function not used for this project.
The project can be modified to avoid its usage and use classic Ignition binding.

Settings:

  • Adjust settings in: shared.commun.constantesCustom.PLATFORM

    • use of vision, perspective, a joystick or not
  • Adjust camera settings in: shared.commun.constantesCustom.VIDEO_SERVER

    • onvif endpoint and rtsp stream user/password
    • adjust the port serving the page of the iFrame with the webrtc client
      • adjust the maximum perspective session displaying video stream

Launch Ignition Vision and/or Perspective Project

For perspective : start the video server: with the button: "Config & Start"

Important Notes:

  • :warning: some camera allow onvif command only if the times of the camera and the PC sending command are sync. For example, this is the case for Axis camera or IMOU camera.

  • Check your firewall allow communication for ONVIF port (80) and RTSP port (554) and webrtc iframe port (9000) if perspective is used.

  • With Ignition Vision, when testing on localhost, with Ignition Vision client and gateway launched on the same machine: use parameter : shared.commun.constantesCustom.IP_CLIENT_FILTER_VIDEO_WALL = False (IP address is used to detect that Ignition client vision and perspective session are on the same machine and "link" both client. This parameter bypass the test for test with client launched on localhost)

  • :warning: With Ignition Perpective, webrtc between Ignition gateway and browser client work only if the Perspective client session is launched with an IP address:
    http://IP:8088/... instead of http://localhost:8088/... or http://127.0.0.1:8088/...**

  • Perspective Chrome only support H264/VP8 video stream.
    All H264 profile (low, medium, hight) are not always supported.
    In such case you will have to choice the webM VP8 format well supported by the browser.

  • For Perspective the RTSP stream is connected from the gateway.
    According the source video format (H264/H265) and the destination video format (H264/VP8/VP9)
    The module use gstreamer to decode/encode the video format and convert the transport protocol from RTSP to WEBRTC.
    Some quality settings for encoding (low latency) can be used.
    In theory, H264 source => H264 destination will make the lowest load for the gateway

Gateway CPU/RAM Load:

  • In case of perspective, each camera stream displayed in a perspective session give a CPU/memory
    load for the gateway and a load in the browser as well.
    We can put a maximum concurrent stream limit to avoid gateway overload.
    We advice to use a dedicated gateway for video stream decode/encode.

  • In case of vision, the load for each stream is supported by the each vision client.

camera_gamepad

Hardware:

Use camera with RSTP stream (H264/H265) on ONVIF PTZ support

Tools for camera stream debug:

Some video test files:

  • h264
  • h265

Hope this help !

19 Likes

Awesome demo kit @mazeyrat! On behalf of the community, thank you.
And please, all users, share your testing results here along with your hw details.

You are shipping gstreamer jar files in your "heavy" module, and auto-installing on client computers. These files are produced with a LGPL v3 license, which requires you to accommodate users who wish use modified versions of those jars and/or JNI files. Do you have instructions for people who wish to repackage your module to achieve that?

Also, your license file does not include the required acknowledgements for any of the BSD/MIT and LGPL libraries you are including. You should fix that.

{I highly recommend you not offer the heavy version. IANAL, but I've seen this sort of thing before.}

Yes sure, you are right "heavy" module with gtreamer for windows auto-deployed with vision client is just provided for demo/test purpose of this kit and will not be available with a license.

Uhm, it is still distribution. Even if you don't provide a license. Even if your license says it is offered "as-is", with no warranty.

{ You don't seem to understand the obligations put on you by the LGPL. It doesn't matter if you are charging for a license. Seriously consider paying a copyright lawyer look at this, before you get yourself in deep trouble. }

on MacOS (with gstreamer 1.20.4), we can't use the webcam in the vision project image
Trying to use it will close the vision client.
Other feature are ok.

Upgrade for Ignition 8.1.25 - (Jetty 10)
Javalin framework usage has been replace by Embedded Jetty

Starter kit Project for Vision and Perspecive:

For Perspective only:

For Vision and Perspective:

:warning: Note: these module require gstreamer 1.20,1.21 or 1.22 installed on client and gateway for vision, on gateway only for Perspective usage.

1 Like

Thanks. This module free or not. If not I can buy from where?

Upgrade to support:

  • HTTPS/WSS
  • webrtc RTP port range configuration
  • webrtc local IP address configuration

Starter kit Project for Vision and Perspecive:

For Perspective only:

For Vision and Perspective:

3 Likes

Salut Lionel, I am having a hard time trying to play an RTSP stream with the VideoViewer component :smiling_face_with_tear: . Could you explain what are the parameters I should provide to play my stream.
My setup is just an RSTP server publishing a stream locally.

2 Likes

Upgrade to fix a major issue (TCP port not released on webrtc disconnection) and improve stability.

Starter kit Project for Vision and Perspecive:

For Perspective only:

For Vision and Perspective:

2 Likes

For windows only, linux version in progress

  • Upgrade to fix major issue for perspective version (embbeded jetty server launched was in conflict with ignition jetty and broke gan/redundancy websocket connection)
  • Code refactor de rely on the ignition jetty server instead of launching another one.
  • Remove the need to use another dedicated. Usage of Ignition standard ports (8088,8043)

Starter kit Project for Vision and Perspecive:

https://www.dropbox.com/scl/fi/er01rxpm50a5e4gcz9b2i/STARTER_KIT_VIDEO_20241116141852-1.8.zip?rlkey=9gm040d4k2uoj8i1ynykwzdo7&dl=0

For Perspective only:

https://www.dropbox.com/scl/fi/zly0p4rbe4f50brayvf6p/BYES-VideoViewerNextGen-gwonly-signed-1.8.26.modl?rlkey=tdagsguzyqq5i6mkiec6acec0&dl=0

For Vision and Perspective:

https://www.dropbox.com/scl/fi/2l8q8bu37yi15h9vqf1rs/BYES-VideoViewerNextGen-signed-1.8.26.modl?rlkey=jgqidx9ugxxzng9yauntfnswu&dl=0

Design principle:

5 Likes

Now available for Windows, Linux and macOS Sequoia
For Vision and Perspective
(tested under windows 10, 11, server 2019, 2022, ubuntu 24.04, adn macOS so

install gstreamer full version with good, bad and ugly plugin
:warning: on Linux, webrtc protocol used to stream the video for perspective require to install: :warning:

sudo apt install libnice10 gstreamer1.0-nice

Project example:
https://www.dropbox.com/scl/fi/x5zthxe9xq03hi11zumwt/STARTER_KIT_VIDEO_20241118205825-1.9.zip?rlkey=1t82kwxq20ktdtlf82oh57ta2&dl=0

Add images on the gateway (for vision):
https://www.dropbox.com/scl/fi/qvcb0jdr1r32ukwqwcm4n/images_starter_kit_video.zip?rlkey=ba2wm0l1k95a472lda872pe3h&dl=0

Use the module for vision and perspective:
https://www.dropbox.com/scl/fi/ksuaq8m7fig5378fic64f/BYES-VideoViewerNextGen-signed-1.8.28-LIGHT.modl?rlkey=eljkgghoma105lzmxnwteh36a&dl=0

or the module for Perspective only:
https://www.dropbox.com/scl/fi/4udfgi2yclirddm5f9yym/BYES-VideoViewerNextGen-gwonly-signed-1.8.28-LIGHT.modl?rlkey=s2rn1oa9qugdzd2pds2pst2o8&dl=0

No camera video at hand ? use one of the video test pattern generate by the module to check the video stream is send for the gateway to the perspective client, or to check the video is displayed in vision client.

:warning: for perspective, the video is streamed with webrtc. You can adjust the min/max rtp port range used by webrtc. Those TCP ports must not be blocked by your firewall :fire: on the gateway. (1 port is dedicated for each client with an active video stream)

Perspective

Vision

3 Likes