Not finished, sorry. Just wanted to share my latest findings from yesterdays upgrade until today.
First, I came to the conclusion that if the camera is mjpeg you can only use "mjpeg" or "base64 over websocket" as streaming mode.
No other method will work, so that's just to save people some fiddling with it.
It's also in the docs, take it literally.
Next, a word about dirt cheap Chinese H.264 cams.
As some of you may know, the Chinese design some camera concept and then a lot of Chinese manufacturers can build those cams under license.
My cameras (or more correctly "camera modules") are from XiongMai brand, this may not mean a lot right now but it is a pretty big company.
The modules are being manufactured in great numbers and can be integrated in various camera designs.
Most of them are HiSilicon based, cheap but acceptable quality.
Where I live we have limited access to technology. It's a third world country, and buying the neat stuff like Axis or Indigo Vision is out of the question.
Chinese cameras have flooded the market, are relatively cheap and readily available.
That's how I got mines, for about 50 dollars a piece, FHD.
The cameras work fine with Shinobi but there are some pitfalls:
The so called "H.264+" or "H.265+" option will lead you to believe that it offers better compression over the regular H.264/H.265 codecs.
From my testing and when it comes to Shinobi, that simply does not apply.
Those "+" extensions do not offer any benefit at all! No smaller files, if that's what you thought.
The so called "+" extensions do work, but they work with DVR's that are made by the same technology provider.
The "+" extensions are also called "smart codecs" and provide reduced storage space when enabled.
This works for example when you are recording static images that don't change much, like an empty office.
One hour of video normally takes up between 800MB and 1GB, with the "smart" option enabled it gets reduced to only 60MB for H.264+ and 30MB for H.265+.
So granted it works on DVR's that have support for it, but from my testing with Shinobi there wasn't any improvement, so I figured I could as well further test without the "smart" option enabled.
Likewise, I disabled motion detection on the camera as it gave very weird results like frames skipping into the past.
As a last step, I followed the doc on optimizing the RTSP camera and reduced the quality.
Then I re-enabled the poseidon streaming method on Shinobi. And guess what...
Next morning still totally stable operation. Actually, I discovered why I had issues with poseidon.
Poseidon seems to be some kind of play list, segments that are "stitched" together.
When the quality of the camera is set to high, you'll get skipping, freezing and stuttering.
With the help of the rtsp camera optimization, I could get it to do reasonable fluent streaming.
I say reasonable, because on full screen you can still barely see the reloading circle every one or two seconds.
So it's more or less a trade off, you can use poseidon but don't go to high on the video quality because it will bug out.
Btw, if I set my cams as suggested in the optimization doc, my cams look like shit.
There is simply no way I can lower it to 1Mbit/s and keep it neat.
But that is not Shinobi's fault, it is simply the camera module's quality. But what do you expect for 50 dollar?
You get what you pay for.
That said, I believe that if you want to get the most out of Shinobi, you'll need to investigate a bit on what cameras you are going to use.
The cameras that will suit you are those that can do good quality on low bitrates. And as a lesson, don't look at the mp numbers, the cameras have several components that are important, image sensor, chipset and lens!
I hope that this clears up some doubts most newbies will have, I'm glad to be able to document my adventures on the bitter low end of the budget.