In this movie you may choose two different qualities for audio and video, and still ensure a proper synchronization between the streams. The interesting aspect of this demonstration is its use of MPEG-4 Object Clock Reference stream, which acts as a virtual clock other streams synchronize to, rather than synchronizing media streams on eachother such as video on audio. Of course such a selection of streams would usually be made at the server side, but this nonetheless shows the ease and feasability of stream switching in MPEG-4.
This movie also features chapter navigation and subtitle stream switching, as well as the possibility to move the subtitles around the screen if needed.
This content was designed by Mr Mollet from UGent
Important features used in this content
Media Management
- Object Clock Reference Stream
This special MPEG-4 stream acts as a virtual timebase, on which any stream may synchronize. The main applications are broadcast environment and media selection applications.
In this example, the OCR streams acts as the timebase of currently playing media objects, ensuring a proper synchronization between audio and video, regardless of the media streams chosen. - 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 OCR 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 OCR 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 trigger chapter selection upon mouse clicks. - 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 UGent home page or to send a mail to the author. - 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.
Scene Constructs
- Proto
The proto node is a template node made of other protos or native MPEG-4 objects. It may be used in the scene as any other node, greatly simplifying complex scene organization.
In this example, the proto node is used to modelize the buttons’ appearance and interaction behaviour. - Form and Layout
These two nodes provide automatic element layout functionalities, either through explicit alignment rules (Form) or line/column fitting algorithm (Layout).
In this example, these nodes are used to layout the interaction buttons, the movie and the movie control bar.