-
Streaming .flv cue point problem
I’ve been working with Flash video with synced slide presentations since February, which have been exclusively download streaming, all based on the presentation available at the adobe web site:
http://www.adobe.com/devnet/flash/ar...corppreso.html
My issue has come up when using this template with streaming flv’s, the buttons that I use to reference the cue points in the video and slides on the timeline do not work reliably; sometimes they will shuttle the video and slides to the correct point, usually they move the slides on timeline to the appropriate spot and the video jumps back to the beginning. Besides this sizable problem, the presentation plays the way it is supposed to. Is there a setting in the component inspector that I’m missing? Should I re-encode the video with Navigation cue points? Any help would be appreciated.
L
-
Problem Solved
Finally got the solution from adobe, The change must be made in the ActionScript code that calls the slides and the buttons, I have written up these changes and posted them so nobody has to go through same ordeal I did to make something work the way adobe says it is supposed to.
Symptom: When a Streaming Video is put into the synced-slide template used to deliver download streaming or CD-Rom based projects, the project will play with the slides in-sync, but when you try to use the buttons or the video skin to advance or retard the slides, the presentation jumps back to the beginning.
The Solution: The problem, as it turns out, is in the code that calls the buttons and the slides that resides on the timeline in the Layer called Actions & Lables on the frame that is labeled “slide1” under the “Actions” tab at the bottom (or the ActionScript)– at the beginning of video / synced-slide portion of the template. The problem lies in the placement of five lines of code that are moved up, those lines of code are as follows:
{
// If the video is currently stopped, then play it
if(!display.playing ){
display.play();
}
In the original code used for the Download Streaming / CD Rom, this portion was lower in the code, beneath the beginning section that looks like this:
// Is this a screens document or not?
var uses_screens:Boolean = false;
stop();
// *************************
// Navigation buttons call this function to trigger a change
// in the video and the view of the content
function seekToCuePoint( cueName ) : Void
{
// Find the cue point in the FLVPlayback component, seek
// to time, and highlight the next button for a quick redraw
var c = display.findCuePoint( cueName );
display.seekSeconds( c.time );
findNextButton( c.name );
}
// *************************
// The natural flow through the video or jumping by seeking
// forward and backward will trigger the following function
function synchVideoToInterace( cueName:String ):Void
{
// If the video is currently stopped, then play it
if(!display.playing ){
display.play();
}
If you wanted to manually change this code with-in a pre-existing Download Streaming / CD Rom presentation, simply cut the code out of it’s location, and paste it higher in the code, beneath the section that follows that you will recognize from the previous section:
// Is this a screens document or not?
var uses_screens:Boolean = false;
stop();
// *************************
// Navigation buttons call this function to trigger a change
// in the video and the view of the content
function seekToCuePoint( cueName ) : Void
If all of that is too confusing, I have copied the two codes in there intirety onto the next four pages of this document, labeled to show which is used for streaming and which is used for Download Streaming / CD Rom presentations, simply copy and paste from this document into the code area specified above, and you should be good to deliver any way that is possible.
For Download Streaming / CD Rom presentations:
// Is this a screens document or not?
var uses_screens:Boolean = false;
stop();
// *************************
// Navigation buttons call this function to trigger a change
// in the video and the view of the content
function seekToCuePoint( cueName ) : Void
{
// Find the cue point in the FLVPlayback component, seek
// to time, and highlight the next button for a quick redraw
var c = display.findCuePoint( cueName );
display.seekSeconds( c.time );
findNextButton( c.name );
}
// *************************
// The natural flow through the video or jumping by seeking
// forward and backward will trigger the following function
function synchVideoToInterace( cueName:String ):Void
{
// If the video is currently stopped, then play it
if(!display.playing ){
display.play();
}
// Show associated content on screens or labeled frames
if( uses_screens ){
currentSlide.gotoSlide(this[ cueName ]);
}else{
gotoAndStop( cueName );
}
// Update the higlight position
findNextButton( cueName );
}
// Layout the button highlight when requested
function findNextButton( cueName:String ):Void
{
// Look for buttons named with the current cue point
// name plus the letters '_btn' (i.e. studiomx_btn)
var cueBtn = this[ cueName+"_btn" ];
if( cueBtn != undefined )
{
// Attach the highlight clip if needed
if( highlight_mc == undefined ){
this.attachMovie("ThumbOutlineSelected","highlight _mc", 100);
}
highlight_mc._x = cueBtn._x;
highlight_mc._y = cueBtn._y;
}
}
// *************************
// Create a listener object to catch events from
// the video component and update the interface...
var videoEventHandler:Object = new Object();
videoEventHandler.cuePoint = function( evt:Object ):Void
{
// Get the cue name from the event object
synchVideoToInterace( evt.info.name );
}
videoEventHandler.fastForward =
videoEventHandler.rewind = function( evt:Object ):Void
{
// Get the cue name of the nearest cue point
var nearestCue = evt.target.findNearestCuePoint(evt.playheadTime);
synchVideoToInterace( nearestCue.name );
}
display.addEventListener("cuePoint",videoEventHand ler);
display.addEventListener("fastForward",videoEventH andler);
display.addEventListener("rewind",videoEventHandle r);
For Streaming Video presentations:
// Is this a screens document or not?
var uses_screens:Boolean = false;
stop();
// *************************
// Navigation buttons call this function to trigger a change
// in the video and the view of the content
function seekToCuePoint( cueName ) : Void
{
// If the video is currently stopped, then play it
if(!display.playing ){
display.play();
}
// Find the cue point in the FLVPlayback component, seek
// to time, and highlight the next button for a quick redraw
var c = display.findCuePoint( cueName );
display.seekSeconds( c.time );
findNextButton( c.name );
}
// *************************
// The natural flow through the video or jumping by seeking
// forward and backward will trigger the following function
function synchVideoToInterace( cueName:String ):Void
{
// Show associated content on screens or labeled frames
if( uses_screens ){
currentSlide.gotoSlide(this[ cueName ]);
}else{
gotoAndStop( cueName );
}
// Update the higlight position
findNextButton( cueName );
}
// Layout the button highlight when requested
function findNextButton( cueName:String ):Void
{
// Look for buttons named with the current cue point
// name plus the letters '_btn' (i.e. studiomx_btn)
var cueBtn = this[ cueName+"_btn" ];
if( cueBtn != undefined )
{
// Attach the highlight clip if needed
if( highlight_mc == undefined ){
this.attachMovie("ThumbOutlineSelected","highlight _mc", 100);
}
highlight_mc._x = cueBtn._x;
highlight_mc._y = cueBtn._y;
}
}
// *************************
// Create a listener object to catch events from
// the video component and update the interface...
var videoEventHandler:Object = new Object();
videoEventHandler.cuePoint = function( evt:Object ):Void
{
// Get the cue name from the event object
synchVideoToInterace( evt.info.name );
}
videoEventHandler.fastForward =
videoEventHandler.rewind = function( evt:Object ):Void
{
// Get the cue name of the nearest cue point
var nearestCue = evt.target.findNearestCuePoint(evt.playheadTime);
synchVideoToInterace( nearestCue.name );
}
display.addEventListener("cuePoint",videoEventHand ler);
display.addEventListener("fastForward",videoEventH andler);
display.addEventListener("rewind",videoEventHandle r);
-
cuepoints
This is an Awesome link!! thanks,
I have been starting out with that template and changed the button selections to a listbox, like chapters, with no luck. I can't get the listbox to control things instead of buttons. I will review your comments and see if I can tweak the code for listbox items instead of buttons.
Thanks
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|