I would upgrade to the latest but I'm still sticking to the very last version that supports DeepStack since it's less work to migrate. Ergo, I'd like to stay put but wanted to save some video footage before it gets overwritten in a couple of days.But being on 5.5.7.11, they will probably just tell you to get current and try again![]()
For anyone following along ... Ken delivered a BVR spec to me this afternoon, so I built a web-based player based on it. GitHub - bp2008/BVR-Player-Web: A web-based player for Blue Iris .bvr files. (none of this would have been possible on this timescale without AI !)I wish "bvr" was a public format understood by anything besides Blue Iris. Maybe I could get Ken to produce a spec sheet for me. With AI available it should be easy for him, and then it'd be easy for anyone else (like me) to use AI to build a standalone BVR player and/or converter. Heck with it. I'm gonna send Ken a support email asking if he'll provide that. Doesn't hurt to try.
Thanks @bp2008. I can wrench on cars, screw around with home maintenance repairs, build a PC, etc etc,,,but I know literally nothing about writing code or a program. So big thanks to you sir.For anyone following along ... Ken delivered a BVR spec to me this afternoon, so I built a web-based player based on it. GitHub - bp2008/BVR-Player-Web: A web-based player for Blue Iris .bvr files. (none of this would have been possible on this timescale without AI !)
I would be very curious to know if it has any issues playing your bvr files, @Sybertiger. I've only tested it so far on 3 of my own BVR files which were created much more recently by BI 6. But supposedly the BVR format has been pretty stable. This player doesn't have export-to-mp4 capability yet but that should be coming soon.
Here's a nice real-world example of the usefulness of your new BVR Player:For anyone following along ... Ken delivered a BVR spec to me this afternoon, so I built a web-based player based on it. GitHub - bp2008/BVR-Player-Web: A web-based player for Blue Iris .bvr files. (none of this would have been possible on this timescale without AI !)
I would be very curious to know if it has any issues playing your bvr files, @Sybertiger. I've only tested it so far on 3 of my own BVR files which were created much more recently by BI 6. But supposedly the BVR format has been pretty stable. This player doesn't have export-to-mp4 capability yet but that should be coming soon.


That is very interesting because I haven't fed in a file with those properties yet. Essentially this entire app is AI generated with me just providing the prompts and some testing. It seems like a more elegant seek bar visualization could be done which shows which sections of the clip have video from which streams, but it'd be a little weird to use and probably kind of tricky to work out the bugs.Here's something else interesting that the BVR Player makes very easy to see:
I opened the same one-hour BVR from my previous post and compared the three stream selections.
This camera (DW1) is configured for Continuous sub + Triggered recording, so the BVR contains continuous sub-stream video while the main-stream is recorded only during triggered events. Nothing surprising there, but seeing the streams independently makes the structure of the BVR particularly obvious.
With Sub 704x480 selected, the player spans the entire one-hour recording and reports 54,097 frames - screenshot #1 below.
With Main 2688x1520 selected, the available main-stream video ends at about 10:33:11, with only 882 frames - screenshot #2 below.
And here's another interesting detail: with Auto (main + sub) selected, the player again spans the entire hour but reports 54,099 frames -- only two more than Sub alone, rather than the sum of the main- and sub-stream frame counts - screenshot #3 below.
View attachment 248121 View attachment 248122 View attachment 248124
So Auto apparently isn't simply presenting all 54,097 substream frames plus all 882 main-stream frames as one interleaved sequence. It appears to be constructing a continuous playback timeline using the sub-stream as the baseline and substituting main-stream video where it is available. I'm curious about the extra two frames in the Auto count -- perhaps that's a consequence of how the streams are aligned or switched at boundaries.
This also adds some context to the wrong-stream /time/ API example I posted above. At the troublesome ~10:32:50 timestamp, both streams were present. So this wasn't a case where Blue Iris returned a sub-stream frame because no main-stream video existed at that point. A closely time-matched 2688x1520 main-stream frame was actually present in the BVR.
Again, none of the underlying Continuous sub + Triggered behavior is surprising, but being able to select Auto, Main, and Sub independently makes the internal structure of the recording much easier to see and understand.
cool. i found that menu...didn't notice it last night.
Glad that was useful. The new BVR spec Ken posted with 6.1.0.6 actually documents this as “switching mode,” and apparently the MAINAVAILABLE flag identifies substream frames for which a corresponding mainstream frame exists (excerpt pasted below). So it seems the BVR provides quite a bit of information for that sort of visualization if you ever decide it's worth pursuing.That is very interesting because I haven't fed in a file with those properties yet. Essentially this entire app is AI generated with me just providing the prompts and some testing. It seems like a more elegant seek bar visualization could be done which shows which sections of the clip have video from which streams, but it'd be a little weird to use and probably kind of tricky to work out the bugs.
SUBSTREAM set, MAINAVAILABLE clear on header):flags & STREAMFLAGS == 0; sub-stream frames have SUBSTREAM set. A player selects one stream and filters frames by (flags & STREAMFLAGS) == selected. Main and sub frames interleave in the file in recording order.SUBSTREAM and MAINAVAILABLE both set on header):MAINAVAILABLE. To play "best available quality":STREAMFLAGS == 0) when present.MAINAVAILABLE is not set.BITMAPINFOHEADER and its own AOI rectangle.Glad that was useful. The new BVR spec Ken posted with 6.1.0.6 actually documents this as “switching mode,” and apparently the MAINAVAILABLE flag identifies substream frames for which a corresponding mainstream frame exists (excerpt pasted below). So it seems the BVR provides quite a bit of information for that sort of visualization if you ever decide it's worth pursuing.
But I agree about keeping the scope under control.
Specification excerpt...
### 5.3 Dual-stream files
Blue Iris can record two elementary streams of the same camera into one file:
Independent dual-stream (SUBSTREAMset,MAINAVAILABLEclear on header):
Both streams are complete and independently playable. Main-stream frames haveflags & STREAMFLAGS == 0; sub-stream frames haveSUBSTREAMset. A player selects one stream and filters frames by(flags & STREAMFLAGS) == selected. Main and sub frames interleave in the file in recording order.
Switching mode (SUBSTREAMandMAINAVAILABLEboth set on header):
Set by the recorder when the camera's record mode is one of the dual-stream "sub continuous + main when triggered" options. The sub stream is recorded continuously; the main stream is recorded only during triggered/alert periods. Sub-stream frames recorded while a main frame also exists carryMAINAVAILABLE. To play "best available quality":
- Prefer main-stream frames (
STREAMFLAGS == 0) when present.- Use sub-stream frames only where
MAINAVAILABLEis not set.- Expect resolution changes at the switch points; the first frame after a switch is always a key frame.
Each stream has its ownBITMAPINFOHEADERand its own AOI rectangle.

