flv回调事件处理函数

/*
可以在 FLV 文件中嵌入的提示点有两种类型。
•  导航提示点:
它指定 FLV 文件中的一个关键帧,而且其 time 属性对应于该关键帧。
导航提示点经常被用作书签或入口点,以便用户在视频文件中导航。
•  “事件”提示点:它由时间指定,而不管该时间是否对应于某个特定的关键帧。
事件提示点通常代表视频中的某个时间,到达这个时间时可用于触发其它应用程序事件的情况就会发生。
属性 说明
  name
   将提示点嵌入 FLV 文件时赋予提示点的名称。
  time
   提示点在视频文件回放期间的出现时间(以秒为单位)。
  type
   到达的提示点的类型:业己接提示点或“事件”提示点。
  parameters
   为此提示点指定的一个关联数组,它由名称/值对字符串组成。任何有效的字符串都可用于参数名或参数值。
  您可以在首次对 FLV 文件进行编码时,或者在“Flash 创作”工具中使用“视频导入”向导来导入视频剪辑时,
在该 FLV 文件中定义提示点。
onCuePoint() 会在回放期间对某个提示点所指定的时间,接收有关该提示点的信息。
onMetaData() 会在视频文件中检索有关提示点的信息。不过它会在视频开始播放之前,获取有关所有提示点的信息。
*/
var video:Video = new Video();
addChild(video);

var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);
//使用空的 Object 忽略这些回调方法而不侦听 asyncError 事件
ns.client = {};
//将 NetStream 对象的 client 属性设置为一个自定义类 CustomClient,
//
该类为回调方法定义处理函数:
//
ns.client = new CustomClient();
/*

package
{
public class CustomClient
{
public function onMetaData(infoObject:Object):void
{
trace("metadata");
}
}
}
*/

///////////////////////////////////////////////////////////////////
/*
扩展 NetStream 类、处理必要的 NetConnection 对象的创建
*并处理 onMetaData 和 onCuePoint 回调处理函数方法
*
*var ns:CustomNetStream = new CustomNetStream();
*ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
*
*package
{
import flash.net.NetConnection;
import flash.net.NetStream;
public class CustomNetStream extends NetStream
{
private var nc:NetConnection;
public var onMetaData:Function;
public var onCuePoint:Function;
public function CustomNetStream()
{
onMetaData = metaDataHandler;
onCuePoint = cuePointHandler;
nc = new NetConnection();
nc.connect(null);
super(nc);
}
private function metaDataHandler(infoObject:Object):void
{
trace("metadata");
}
private function cuePointHandler(infoObject:Object):void
{
trace("cue point");
}
}
}

*/
ns.client.onMetaData = ns_onMetaData;
ns.client.onCuePoint = ns_onCuePoint;

video.attachNetStream(ns);
/*本机异步代码中引发异常时调度此事件。
在本例中,当视频文件中包含元数据或提示点信息,并且未定义相应的侦听器时,
将调度此事件。如果您对视频文件的元数据或提示点信息不感兴趣,则可以使用
上面的代码处理 asyncError 事件
*/
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
function asyncErrorHandler(event:AsyncErrorEvent):void
{
  trace("checkInfo:",event.text);
}
//此处理函数在调用 NetStream.play() 方法后、视频播放头前进之前触发。
function ns_onMetaData(item:Object):void
{
trace("metaData");
//根据对 FLV 文件进行编码所使用的软件,属性的列表会有所不同。
for (var propName:String in item)
{
trace(propName + " = " + item[propName]);
}

// Resize video instance.
video.width = item.width;
video.height = item.height;
// Center video instance on Stage.
video.x = (stage.stageWidth - video.width) / 2;
video.y = (stage.stageHeight - video.height) / 2;
}

function ns_onCuePoint(item:Object):void
{
trace("cuePoint");
trace(item.name + "\t" + item.time);
}
原文地址:https://www.cnblogs.com/ddw1997/p/2363453.html