Using "media" links in Leviton OmniTouch panels

Answered

Comments

12 comments

  • Official comment
    Avatar
    Norman Graafsma

    Hi Eddy,

    Please try the following URL: 

    rtsp://user:pass@<ip-address>:<port>/cameraId?codec=mjpeg&resolution=480p

    Example:

    rtsp://admin:12345@192.168.1.142:7001/34f15ac2-9725-7b53-7a21-6e58518e6faf?codec=mjpeg&resolution=480p

    Comment actions Permalink
  • Avatar
    Eddy G

    I wish RTSP was an option, but unfortunately it's not. From the documentation for the OmniTouch panels:

    • OmniTouch touchscreens do not interact with the web server of the IP camera, but rather are able to interface directly with the raw MJPEG or JPEG video stream provided by most MJPEG and JPEG IP cameras.
    • Generally, to access the stream there is an http query string that is part of the URL which instructs the camera to stream the MJPEG or JPEG images.  To use a MJPEG or JPEG camera, you will need to find out what the query string is and use it to configure the camera. You can typically find this information on the web site for the camera manufacturer or in an API or Protocol document provided by the manufacturer.  If the camera provides an MJPEG stream, the "Camera Type" must be configured as an MJPEG device. If the camera only provides still frame JPEG images, the "Camera Type" must be configured as a JPEG device.

    Since both sub-channels of my cameras are already in-use (and neither of which is configured as MJPEG), my only hope is to be able to use the /media/ streams from the server. 

    I did notice this bug fix in the Monthly Patch (which I am not running) release notes:

    • When trying to request video streams through API (using any /media/ call), the maxWebMTranscoders parameter limited the sessions to 2 even if the transcoding was not involved. Now the number of the non-transcoded streams that can be requested through API is unlimited and transcoded-ones are limited to maxWebMTranscoders (2 by default).

    Could this be the issue?

    0
    Comment actions Permalink
  • Avatar
    Norman Graafsma

    It could. If you an provide me access to the WebAdmin of the system I might be able to modify something 'under the hood'. 
    You can share the public IP address and login credentials to <removed>. 

    0
    Comment actions Permalink
  • Avatar
    Eddy G

    Sounds good.

    I'll be anxious to see if a simple "under the hood" configuration change can fix this issue.

    Thanks.

    0
    Comment actions Permalink
  • Avatar
    Norman Graafsma

    Hi Eddy,

    I made some changes under the hood. Could you try it again? 

    0
    Comment actions Permalink
  • Avatar
    Eddy G

    Darn. Unfortunately, no change.

    Just to make sure it wasn't something "odd" with the OmniTouch panels, I copy/pasted the URLs in to a web browser and confirmed that I could only occasionally see a 480p MJPEG, and if I hit the X button to stop streaming, then another tab would "start working". Otherwise, I get the same "Too many opened connections" message, and then eventually none of them work and they all return that message.

    0
    Comment actions Permalink
  • Avatar
    Norman Graafsma

    Hi Eddy,

    That's disappointing. Allow me to discuss this internally and get back at you.

    0
    Comment actions Permalink
  • Avatar
    Eddy G

    Just to add some more information to this thread... over the weekend I installed a fresh instance of build 30107 and the behavior remains unchanged.

    I am curious to know if you've been able to reproduce this "Too many opened connections" error on one of your test systems?

    0
    Comment actions Permalink
  • Avatar
    Norman Graafsma

    Hi Eddy,

    I noticed you disabled the user account you provided, but that is fine. 
    Can you share the output of the following API call? 

    HTTP://<server-ip>:<port>/api/metrics

     

    0
    Comment actions Permalink
  • Avatar
    Eddy G

    Here's the output of the /api/metrics call:

    {
    "error": "0",
    "errorString": "",
    "reply": {
    "offlineStatus": {
    "description": "How many times resources have switched to the offline state",
    "value": 26
    },
    "p2pCounters": {
    "description": "P2p statistics",
    "value": {
    "dataSentByMessageType": {
    "description": "Amount of sent data in bytes by p2p message type",
    "value": {
    "alivePeers": 0,
    "pushImpersistentBroadcastTransaction": 0,
    "pushImpersistentUnicastTransaction": 0,
    "pushTransactionData": 5427845,
    "pushTransactionList": 0,
    "resolvePeerNumberRequest": 0,
    "resolvePeerNumberResponse": 0,
    "start": 0,
    "stop": 0,
    "subscribeAll": 0,
    "subscribeForDataUpdates": 0,
    "unknown": 0
    }
    }
    }
    },
    "progressiveDownloadingTranscoders": {
    "description": "Amount of opened progressive downloading connections with trancoding",
    "value": 0
    },
    "tcpConnections": {
    "description": "Opened TCP connections",
    "value": {
    "hls": {
    "description": "Amount of opened HLS connections",
    "value": 0
    },
    "p2p": {
    "description": "Amount of opened p2p connections",
    "value": 2
    },
    "progressiveDownloading": {
    "description": "Amount of opened progressive downloading connections",
    "value": 0
    },
    "rtsp": {
    "description": "Amount of opened RTSP connections",
    "value": 1
    },
    "total": {
    "description": "Total amount of opened TCP connections with any type",
    "value": 8
    },
    "totalBytesSent": {
    "description": "Total tcp bytes sent",
    "value": 2137931208
    }
    }
    },
    "transactions": {
    "description": "Database transactions statistics",
    "value": {
    "errors": {
    "description": "Amount of transactions that can't be written to DB due to SQL error",
    "value": 0
    },
    "local": {
    "description": "Total amount of local transactions written. Local transactions are written to the DB but not synchronized to another servers. 'Local' always <= 'success'",
    "value": 1
    },
    "logSize": {
    "description": "Total size of transaction log in bytes",
    "value": 282388
    },
    "success": {
    "description": "Total amount of transactions successfully written.",
    "value": 221
    }
    }
    },
    "transcoders": {
    "description": "Amount of video transcoding threads (same as amount of encoders)",
    "value": 0
    }
    }
    }

    I'm happy to re-enable the user account credentials I provided to you guys if it would help in figuring out why this isn't working. I didn't know you were still using it.

    One other piece of information that may be of interest: while I was reconfiguring the /media/ URLs in the OmniTouch panel configuration software, I noticed this behavior: there is a Test button for each camera that you add. For the first two /media/ URLs I added as cameras, the Test button worked. After that, the Test button stopped working (including for the two cameras that had previously worked) presumably because the server was now returning the "Too many opened connections" message.

    0
    Comment actions Permalink
  • Avatar
    Norman Graafsma

    Yes, please re-enable the connection for us. 

    The other information provided is pretty useful. Allow me to discuss this further internally. 

    0
    Comment actions Permalink
  • Avatar
    Eddy G

    I think I've figured out the problem: it looks like the Server may be generating mpjpeg streams and not mjpeg streams. The extra "p" seems important, and seems to imply that the API's /media/ links generate multi-part JPEG streams but not motion JPEG streams.

    As I've mentioned, the OmniTouch panels only support MJPEG streams, so that explains why I'm not able to get this working.

    While researching this, I found this discussion about MJPEG over HTTP Specification and looking at packet captures from the API, I don't see any headers like:

    Content-Type: multipart/x-mixed-replace; boundary=

    which means the mpjpeg format generated by the API is slightly different from an mjpeg option.

    Is there some "official" method where I should request support for MJPEG streams via the API?

    0
    Comment actions Permalink

Please sign in to leave a comment.