hello friends,
I want to make FLV video loop. how can I do the same ? can anybody help me providing information regarding this ? please give your ideas and suggestions....thanks
hello friends,
I want to make FLV video loop. how can I do the same ? can anybody help me providing information regarding this ? please give your ideas and suggestions....thanks
Looping an FLV file first requires to detect the end of the FLV. To detect the end of FLV playback, you can use the NetStream::onStatus event handler, by checking for NetStream.Play.Stop event. However, it is noticed that this event is not always sent (may be due to undocumented bugs in the flv implementation on the NetStream class). For that reason, you to create workaround for FLV files that does not send the NetStream.Play.Stop event.
use the NetConnection object to open an FLV file. The process of looping the movie is similar when using FlashCom server. The process described here is the standard way of playing FLV files.
myNetconnection = new NetConnection();
myNetconnection.connect(null);
myStream = new NetStream(myNetconnection);
myStream.setBufferTime(3);
my_video.attachVideo(myStream);
myStream.play(videoUrl);
Download the zip file for this tutorial
There are 2 methods to detect the end of the FLV playback and then loop
- Using the onStatus event handler
- Using metadata
1. onStatus event handler
onStatus is a method of the NetStream class. In this method, you can override for checking the end of FLV playback.
myStream.onStatus = function(info)
{
trace("info="+info.code);
if (info.code == "NetStream.Play.Stop")
{
// Set flag, we will need to wait for
// "NetStream.Buffer.Empty" before
// actually restarting the movie.
stopped=true;
}
if (info.code == "NetStream.Buffer.Empty")
{
// At this point, the movie has stopped, and
// the buffer is empty.
// We're ready to restart the movie.
if (stopped)
{
myStream.seek(0)
myStream.play(videoUrl);
stopped=false;
}
}
}
Check whether the event sent is NetStream.Play.Stop. When you receive NetStream.Play.Stop, it means that the movie has stopped playing. Note - since Flv playback has a tendency to freeze when you start a movie without waiting for the playback buffer to be empty, we should wait for the NetStream.Buffer.Empty event as well. When both conditions are met, then you ready to replay the movie.
2. Metadata
Macromedia has added a metadata section into a FLV file. The metadata contains the duration of the FLV, among other things. You can use the duration information to check whether a movie has reached the end of playback.
Note - All FLV files may not have metadata (you will need to use software that supports metadata to create the FLV).
You can retrieve the duration information by using the following code:
myStream.onMetaData = function(obj)
{
myStreamDuration=obj.duration;
trace("metadata duration="+myStreamDuration);
}
If the FLV has metadata, the above code will show the duration of the FLV.
If the FLV does not have metadata information, it is recommended that you re-encode the FLV with programs that supports metadata, such as Flix Pro or the Flix Exporter.
Checking for the end of the playback using metadata is quite straightforward - just add a loop to check if the current playback time is equal to or greater than the duration. You can view the implementation of this method by examining the code on the frame 2 and 3 of the main timeline of the sample movie.
var maxIdle=5;
if (myStreamDuration>0)
{
myDelta=myStream.time-myStreamDuration;
if (myDelta<0)
myDelta=-myDelta;
if (myDelta<2)
{
if (myDelta==lastDelta)
{
noStreamMovement++;
}
else
{
lastDelta=myDelta;
noStreamMovement=0;
}
if (noStreamMovement>maxIdle)
{
trace("loop");
myStream.seek(0);
myStream.play(videoUrl);
lastDelta=0;
noStreamMovement=0;}
}
}
}
Bookmarks