Hi Gary,
I’m not sure if I can answer this question for you myself, but I wanted to ask some clarifying questions so that we can get you on the right path.
Do you need to stream live/playback video to a browser in the MP4 format? Or are you going to export a segment of recorded video, convert it, and make it available to download/stream in MP4 format?
What language(s) are you using? Can the backend be C#/.NET? Is it node.js?
There are a few ways to get access to video - MIP SDK using .NET Framework, JavaScript using the Mobile SDK, or a “protocol level” integration where you interface with the software directly based on the APIs.
Our software will deliver the video in a raw format where you basically receive the original h264 frames (or whatever codec the camera uses), or as JPEG frames. We don’t do any wrapping of streaming video into any kind of container like mp4 or MKV with the exception of when you perform an export. If you export video with our SDK, you can choose to export in MKV or AVI format. With MKV, we are not encoding anything - we’re taking the raw video and putting it in an MKV container. With AVI we are decoding and re-encoding to the target codec.
If you only need to take exported videos and convert them to MP4, you could export the videos with the MIP SDK in MKV format, then use ffmpeg to covert them to whatever container format you need.
If you need to stream live or recorded video on demand in MP4 format, that’s where I’m a bit lost myself as I haven’t done much work in that area. But I imagine you would need to pull the raw video from the Recording Server and then convert it on the fly. I imagine this is something you could also do with ffmpeg one way or another, but my knowledge of ffmpeg is extremely limited.
Another option could be to use our ONVIF Bridge server which makes live/recorded video available over RTSP. That doesn’t convert anything to mp4 but uses a common streaming protocol which I believe you can make use of in HTML5?