An hypervideo file basically lists a set of sequences. Strictly speaking, an hypervideo file consists in a header block followed by a set of sequences. Each sequence is an ordered list of frames plus specific properties. Each frame corresponds to a position of the square in the window.
Any hypervideo file starts with a monolithic header block. It can be used in a parser to ensure the file is an hypervideo structure and not something else.
The header block is followed by the filepath of the video file. Thus a third party program knows where to look for the video associated to the hypervideo data.
A sequence structure consists in :
A keyframe structure consists in :
FRAME
|
,,
|
X1,
|
Y1,
|
X2,
|
Y2
|
where :
The 7.1.4 paragraph exhibits a graphics of that.
Each member of this structure is separated with a comma except the last. The comma after FRAME is doubled since in fact there should have been an argument which is implicit. This argument may appear in future versions.
There are normally no blank lines between two sequence blocks.
As everything is in text format, the number 40 for example is represented by the ascii code '4' and the ascii code '0'. To read an HPV file, you need a parser.
Now a little detail about the keyframe structure. As any keyframe position corresponds to a square position, hence 4 points, and that the square is always directed horizontally and vertically, 2 points (4 coordinates in the 2D-plane) are necessary and suffisant to fully determine the position of the square in the window. This is the reason why we never mention the number of points of the hotspot.
If for any reason, an extension with advanced polygonal features was released, the argument after FRAME would be the number of points and the list of the n points (X1,Y1),(X2,Y2),...(Xn,Yn) would replace the current 4-coordinate substructure. The keyframe structure would consist in :
FRAME,
|
n,
|
X1,
|
Y1,
|
X2,
|
Y2,
|
...
|
Xn,
|
Yn
|
As we deal with positions, we must talk about reference coordinates.
The system of coordinates is neither based on the real size of the video file itself, which is 352*288 for an ISO-MPEG1 video, nor on the displayed size of the video, which is variable as you stretch the window. It's a good idea to use abstract coordinates. The abstract system is a virtual XY-space between 0 and 1000 in the two directions. Hence the point (352,288) in the video mentioned earlier corresponds to the point (1000,1000) in our XY-space, while the point (0,0) in the video file corresponds to the point (0,0) in our XY-space.
The following graphics shows two things : the virtual XY-space and the geometrical position of the two points (X1,Y1) and (X2,Y2) of the square in the keyframe structure.
A piece of the hotspot may be outside the window, depending on you. In that case, the coordinates of those corners will be either greater than 1000, or lower than 0, ie negative. At run-time, a smart coordinate parser would clip the outside part so that it doesn't break the program just for that reason.
The corner (X2,Y2) is always more to the right and more to the bottom than the corner (X1,Y1), hence there is no reversed square.
The textual format of the hypervideo file fulfills two main goals : 1. a set of data expected to be reused must be in readable and understandable form. A proprietary format can't match that. 2. you can use a simple text editor, open a couple hypervideo files, and start operating copy/pastes to either split or merge the needed subsets of sequences.
We wanted the hypervideo data to be open and reusable since we know everyone will beg for control over it.
v-key
|
effect
|
CTRL-O | open an hypervideo file |
CTRL-S | save the sequences on disk with default HPV filename |
SHIFT-CTRL-S | save the sequences using a standard file dialog box |
ALT-F4 | close the HPV file, the video file and exit |
SPACE | switch between play and pause |
ENTER | start/stop record mode |
ESCAPE | activate/deactivate loop mode |
SHIFT-PAGE UP | set the start-mark of the sequence |
SHIFT-PAGE DOWN | set the end-mark of the sequence |
PAGE UP | go to the start-mark |
PAGE DOWN | go to the end-mark |
CTRL-PAGE UP | reset the start-mark |
CTRL-PAGE DOWN | reset the end-mark |
F2 | add a new bookmark |
SHIFT-F2 | delete the last bookmark in the bookmark menu |
S | display/remove hatches inside the hotspot |
DELETE | remove one or more shots (in the tree control) |
![]() |
Open an hypervideo file, save and close the previous one if necessary |
![]() |
Open a video file |
![]() |
Save the hypervideo data file, with default filename |
![]() |
Close the hypervideo file |
![]() |
Create and select a sequence |
![]() |
Go to previous sequence |
![]() |
Go to next sequence |
![]() |
Watch and modify the sequence properties |
![]() |
Delete the current sequence |
![]() |
Set the begin mark |
![]() |
Go to the begin mark |
![]() |
Play / Pause |
![]() |
Start / Stop Record |
![]() |
Go to the end mark |
![]() |
Set the end mark |
![]() |
Enable / Disable loop mode |
![]() |
Show / Hide the hotspot |
![]() |
Add a bookmark at the current video frame |
![]() |
Automatic keyframer (current sequence) |
![]() |
Watch video properties |
![]() |
Disable / Enable the sound |
![]() |
Encode the hypervideo data into a G2 file format |
![]() |
Switch to fullscreen |
As there are a lot of video seek controls, and we dispatched and focused on them all over the documentation, we wanted to add this section to clear the situation.
Main slider :
Sequence slider :
Go back button :
Go forward button :
Frame counter :
Bookmarks :
Shots :
Mark-IN :
Mark-OUT :