[Bounty] Request for supporting Mobotix MxPEG video codec

Is a developer around who likes to develop a binding or a UI control which is capable of receiving and decoding Mobotix proprietary MxPEG codec?

What I found out so far is the following (not sure if that really helps):

  1. If you activate “MxWeb” GUI on the camera then your PC browser is able to receive MxPEG streams without any plug-ins
  2. The decoding engine for MxPEG streams is translated into javascript with emscripten

This leads me to the idea if an experienced developer could write a kind of wrapper around this emscripten compiler and integrate it into openHAB.
Basically that is all what I would need. Maybe some other users also might jump in and request PTZ and some other basic controls. But in the first step I would be happy with an MxPEG support.
If emscripten cannot be integrated the full SDK is available here for download.

Just for completeness:

  • I know that recent Mobotix cameras have an onvif mode. But up to models like Q15/6MP they do not support onvif.
  • I know that video is accessible through webview controls (oh-image), but that is MJPEG format, with poor frame rate and quality

I think you forgot to mention what you’re offering the developer in return for the work. :wink:

FYI, bounties get discussed every once in awhile, but from what I’ve seen in discussions there aren’t a lot (or any) developers here who are motivated by them.

that will be discussed if there is one person willing to do that.
Then I will ask in the forum who else might be interested to fund this and if there are additional requirements

That’s not how bountys work. First define the bounty, so others can pay in as well, the there might be a developer to step in.

but this is how fund raising works. please no discussion about definitions or any other haarspalterei. I just want to get in contact with someone who is willing to do that.

It’s less about definitions and more about trying to help you be successful in your efforts. There was no mention of compensation in your first post, so it read like you were asking someone to do work for you for free and calling it a bounty. I assumed that you just forgot to mention it in the post, but I guess that was a choice.

I wish you good luck as since it is proprietary that means the dev needs to own that brand of camera or you will need to supply them with one.

Why do you want to use Mobotix? Why not change your cameras to ones that work out of the box in openHAB?

Then unless they have an easy API documented you will find getting PTZ to work may not be possible.

I am interested to know what attracts you to a closed codec instead of using HLS?

it is proprietary, but the SDK is available for free. but I am not talking about SDK integration. A javascript based engine is already embedded inside the camera.

As said, mjpeg video can be easily integrated and if you need PTZ there are http commands available. Not sure why you say that.

It is a COST vs BENEFIT weighing up that I am doing. Cost of the time to implement VS how many users actually own the cameras. The more users, the more you can share the cost of a bounty over.

But only 1 brand uses it and if that companies market share is small, this means low number of users.

Great then it may be possible to do it without a binding or dev needed.

It may be simple if ffmpeg supports it?
General Documentation (ffmpeg.org)
If you can work out the way to create jpeg snapshots from the stream using ffmpeg it may be simple if your wanting/happy with <10 FPS from only a small number of cameras. If ffmpeg can do it and your able to test the CPU and network load using the command line you will know if it is possible and what to expect.

It can get complicated fast if you need to pay license fees or create heaps of browser plugins that keep needing to be updated. Hence why HLS and MJPEG streams are popular.

hey matt,
my current „solution“ which is a oh-image UI control already brings up a video with 10fps/mjpeg. No need to think about other workarounds.
It is just about the video codec.

As said there is a javascript based „decoding engine“ already within every camera‘s web server. Maybe an html file which makes use of these functions could also be a solution.

Anyway, I am sure that some more users here would also required/fund this integration.

If you can create a HTML page that works with the JS then it should be possible to create a widget for it. only a widget is needed if you prove it works that way. If the JS works in all browsers is something that would need testing.

The alternative way would be to use ffmpeg to convert it to jpgs as the ipcamera binding
can stitch them into a mjpeg stream. If the camera creates higher quality on its mxpeg stream this way may be worth looking at as it may need only a few lines changed.

If your camera offers mjpeg streams of the same resolution and quality then there is no point to doing this but if the camera does not then it is worth spending the half hour testing what sort of load it would place on your server.

The JS method would be the better way if it means no
Load on the OH server and the stream goes from camera direct to viewing device.

that‘s why I am posting here :grinning:
I have some experience with html, but I am far away from doing js/emscripten integrations from a different server (mobotix camera) into an html file

Then this is my guess as to what is needed to either help you learn and try it yourself or to get a bounty set on the following…

  1. Create a HTML file (so you cant blame openHAB when it does not work) anywhere to test and this link may give you a clue on how to embed the js player from a remote server. HLS can be supported by embedding a javascript player the way I am guessing your mobotix JS can be done…
    video-dev/hls.js: HLS.js is a JavaScript library that plays HLS in browsers with support for MSE. (github.com)
    You may find it useful to right hand click and select INSPECT SOURCE on a page that has it working if mobotix has example server links anywhere.

  2. After you have proven it works in a HTML file. You will then need to work out how to get it working in a widget which the hurdle may be that JS may have some security loop holes to jump through before it will work in a widget.

  3. Then the fun starts where it may only work under X platforms, or it may work when first created and then breaks when a version of your iphone/android device is updated due to the JS code not being compatible anymore and nothing to do with openHAB at all.

Hey Matt, thanks for your post. I will do my best and let‘s see how far I can get.

As said, Mobotix cameras are not sending H.264 streams. The browser is decoding MxPEG streams via emscripten/js.