H264 video from recording server to web / html5

You are welcom @Petar Vutov​! Yes, Viinex did a great job with this integration and it helps us a lot. If you want to know more I think it’s the best you contact @Andrey Kireev​ who represents Viinex and together with the development can share more information about it. In case I can help with something from the perspective of company that integrated that solution, I am happy to participate!

Thank you @Jakub Bartkowiak​ , we are happy to help and we’re glad if our software can be useful in your projects.

And thank you@Petar Vutov​ for your interest in our software, I can tell more about Viinex, being an author of both the WebRTC stack implementation in it, and the integration of Viinex with Milestone XProtect.

Viinex is written in Haskell, and I would say we’ve developed WebRTC implementation from ground up. We made use of STUN packets serialization library that was already there, but that’s all: most of the stack, SRTP, STUN server, ICE protocol, WebRTC-specific SDP semantics, – were all implemented from scratch. Even the DTLS was missing in Haskell TLS library so we had to add the support for it.

For communication with Milestone XProtect we’re using the protocol-level integration, – for the sake of portability, because we want to support Linux as well, and also because it would be somewhat difficult to use .NET libraries from Haskell.

Regarding the playback controller, – yes you’re correct, we have a notion of a “WebRTC session”, and for each such session the client controls what is streamed over the respective RTCPeerConnection, – either a live stream, or an archive, and from which Milestone camera, at what speed. There’s a HTTP API for that in Viinex, e.g. this needs to be done “out-of-band” with respect to WebRTC, – however this is a common approach, since WebRTC does not specify how the signaling should be performed. Anyway, in this manner the playback can be controlled by an HTML5 application.

Thanks for sharing @German Zhyvotnikov. Awesome solution! does this implementation support H.265?

@Xinshuang Wei​ Not as per today, for most part because it’s only Safari supports H.265 among modern browsers. https://caniuse.com/?search=h.265

understand. Thanks!

@Petar Vutov​ and @Jakub Bartkowiak - We’re busy sinking our teeth into this problem right now!

We have a use case to stream Milestone Managed video to our customers via a webfrontend.

The Milestone Mobile server doesn’t support our use case, due to it’s not being able to stream Playback video as FragmentedMP4. But we’ve seen it has great support for Live video. the MJPEG stream is not suitable for both network and compute efficiency as it is really not optimal.

We’re in contact with Viinex - I’ll get in contact with Andrey.

We were hoping that the Milestone WebRTC implementation would be ready soon - Early 2021 - but from my chats with Milestone SDK dev team - It looks like it’ll only be 2022.

Thank you @German Zhyvotnikov​. Really impressive. Well done !

@Grant Visser​ Yep, most probably Milestone WebRTC access won’t be available in 2021.

@Jakub Bartkowiak​ Thank you very much for sharing both your insights, experience and the introduction to Viinex. @Petar Vutov​ thanks for your suggestions and for acknowledging the challenges we’re facing with integrating Milestone into modern web architectures.

@German Zhyvotnikov​ I know you’ve been working closely with Grant on this - thank you for your rapid response and willingness to assist.

I know it’s bad form to revive an old thread, but I’ moo glad I did. This community has come together and helped us give us options we didn’t know were available to us.