A highlight video file generated by Overwatch contains a structure with useful information about the recorded highlight. Anything I have discovered about this structure yet is documented in this file.
The structure is located in the last
315 byte of the MP4 video file. It consists of multiple Base64 encoded strings.
This documents only deals with one of those: It start at byte
95 of the previously described buffer and has a length of
The charset encoding the string is UTF-16 with little-endian byte order (StandardCharsets.UTF_16LE in Java).
Therefore the string consists of only
64 characters, but has a length of
Before applying the structure described here to it, it obviously has to be decoded using Base64.
short (values consisting of 2 bytes) is in little-endian byte order.
You could of course also interpret them as big-endian (as long as you always interpret them as big-endian),
but as the values are always lower in little-endian byte order, I’ve chosen little-endian.
There are many bytes of which I haven’t discovered a use yet. Some of these seem to be constant and some change sometimes.
Possible values for fields shown in the table above are defined in the following Java enumerations:
Since the whole program is still WIP some enumerations are still incomplete and/or missing.
Those have an id of
-1 in Java enumerations.
On first sight it looked like the hero IDs would be ascending by the time the heros where added.
But that doesn’t seem to be true for every hero:
e.g. Tracer is first hero according to Overwatch Wiki, but has ID
318) was added before Doomfist(
303), but has higher ID.
The Java enumerations contain more information than just the id. If you are searching only for the id (short/byte value in structure) simply look at the first constructor argument.
I’m working on completing them, but I sadly don’t have enough different highlights. Threfore I’d be very thankful for people sending me the last bytes of their highlights together with a short description of it. contributing