This movie shows the power of MPEG-4 regarding media stream selection. With very few scripting you can dynamically switch languages or subtitles while ensuring a proper synchronization between the streams.
Note that the stream selection can happen when the main player is paused, because pausing only affects timelines, not interactions.
Important features used in this content
Media Management
- MediaControl
This node allows to pause and resume a media object from a given point in time, rather than from its begining. It may also be used to mute media composition.
In this example, the MediaControl controls the playback of the video stream, on which all other streams are synchronized.. - MediaSensor
This node is used to track the timeline of a media object. It may also be used to track switching of media segments (eg chapters).
In this example, the MediaSensor tracks the timeline of the video stream, on which all other streams are synchronized.. - AnimationStream
This node is used to control the playback of a media object carrying enhancement to the scene description, usually BIFS commands or BIFS animation. The enhancement are carried in a dedicated stream. This feature is very similar to animation sprites in games or other multimedia formats. It may also be used to control a 3GPP text stream.
In this example, the AnimationStream controls the playback of the subtitles.
Scripting
- Conditional
This node is used to exectute a set of BIFS commands (replace, delete, …) upon a scene event (pointing device, time event). It allows fast and memory-efficient modification of the scene, without the overhead of a full scripting language.
In this example, the Conditional nodes are used to modify object appearances on mouse move. - Script
This node is used to exectute complex scripting, typically ECMAScript. It gives more control on the scene compared to a conditional, and is very usefull to handle state variables.
In this example, the script is used to manage the stream selection state as well as the MediaControl node.
User Interactivity
- Anchor
This node is used to navigate between viewpoints inside the scene, to another scene or to an external, non-MPEG-4 ressource such as an HTML page.
In this example, the anchor node is used to navigate to the home page of the Animatrix series. - TouchSensor
This node is used enable pointing devices interactions with graphical elements of the scene, generating a set of simple (isOver, isActive) as well as complex (hitPoint, hitNormal, hitTexCoord) events. - TimeSensor
This node is used to generate time events at each simultaion tick, as well as cycle events when the sensor loops.
In this example, the TimeSensor node drives the control bar animations. - PositionInterpolator2D
This node is used to generate a SFVec2f value by linear interpolation between user defined values.
In this example, the PositionInterpolator2D node controls the translation and scaling of the control bar.