8.13.处理FLV数据的提示点
8.13.1. 问题
我需要在播放时使用编译在FLV 文件中的提示点。
8.13.2. 解决办法
使用NetStream 类的onCuePoint 事件,创建一个处理方法,当遇到提示点时激活。
8.13.3. 讨论
提示点是插入到一个FLV 文件中的纪录一个视频特定时间的值,包括一个简单的名称或带有一个hash 表值的数据对象。提示点经常在文件开始编译时插入一个FLV 文件,任何值在这里确定。Flex VideoDisplay 对象使用mx.controls.videoclasses.CuePoint manager 类来从提示点检测和读取数据。为进一步了解这些,请考虑例子如何使用flash.media.Video 对象。
当NetConnection 对象已经连接时,NetStream 被实例化,你需要设置一个对象传递任何变化数据和提示点事件的处理方法。
这些需要在NetStream 的play 方法被呼叫之前实现。注意下面的代码,onMetaData 和onCuePoint 事件作为参数被对象接受。
使用mx.controls.VideoDisplay 相当大程度简化了提示点的工作。当使用CuePointManager 处理CuePointEvent 时,不同于前面的情况下,收到的事件只拥有三个属性: cuePointTime,cuePointName, and cuePointType. 如果你需要从提示点获得更多或不同的信息,你可能要写一个自定义类来返回提示点数据,并设置它为VideoDisplay 对象的cuePointManager 属性。
完整的代码如下:
我需要在播放时使用编译在FLV 文件中的提示点。
8.13.2. 解决办法
使用NetStream 类的onCuePoint 事件,创建一个处理方法,当遇到提示点时激活。
8.13.3. 讨论
提示点是插入到一个FLV 文件中的纪录一个视频特定时间的值,包括一个简单的名称或带有一个hash 表值的数据对象。提示点经常在文件开始编译时插入一个FLV 文件,任何值在这里确定。Flex VideoDisplay 对象使用mx.controls.videoclasses.CuePoint manager 类来从提示点检测和读取数据。为进一步了解这些,请考虑例子如何使用flash.media.Video 对象。
当NetConnection 对象已经连接时,NetStream 被实例化,你需要设置一个对象传递任何变化数据和提示点事件的处理方法。
+展开
-ActionScript
var obj:Object = new Object();
obj.onCuePoint = onCuePoint;
obj.onMetaData = onMetaData;
ns.client = obj;
obj.onCuePoint = onCuePoint;
obj.onMetaData = onMetaData;
ns.client = obj;
这些需要在NetStream 的play 方法被呼叫之前实现。注意下面的代码,onMetaData 和onCuePoint 事件作为参数被对象接受。
+展开
-ActionScript
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import mx.core.UIComponent;
public class CuePointExample extends UIComponent
{
private var ns:NetStream;
private var nc:NetConnection;
private var obj:Object = {};
private var vid:Video;
public function CuePointExample () {
super();
vid = new Video();
addChild(vid);
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,
netStatusEventHandler);
nc.connect(null);
}
private function
netStatusEventHandler(event:NetStatusEvent):void {
ns = new NetStream(nc);
obj.onCuePoint = onCuePoint;
obj.onMetaData = onMetaData;
ns.client = obj;
ns.play("http://localhost:3001/test2.flv");
vid.attachNetStream(ns);
}
private function onCuePoint(obj:Object):void {
trace(obj.name+" "+obj.time+" "+obj.length+" ");
for each(var o:String in obj.parameters) {
trace(obj[o]+" "+o);
}
}
private function onMetaData(obj:Object):void{
}
}
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import mx.core.UIComponent;
public class CuePointExample extends UIComponent
{
private var ns:NetStream;
private var nc:NetConnection;
private var obj:Object = {};
private var vid:Video;
public function CuePointExample () {
super();
vid = new Video();
addChild(vid);
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,
netStatusEventHandler);
nc.connect(null);
}
private function
netStatusEventHandler(event:NetStatusEvent):void {
ns = new NetStream(nc);
obj.onCuePoint = onCuePoint;
obj.onMetaData = onMetaData;
ns.client = obj;
ns.play("http://localhost:3001/test2.flv");
vid.attachNetStream(ns);
}
private function onCuePoint(obj:Object):void {
trace(obj.name+" "+obj.time+" "+obj.length+" ");
for each(var o:String in obj.parameters) {
trace(obj[o]+" "+o);
}
}
private function onMetaData(obj:Object):void{
}
}
使用mx.controls.VideoDisplay 相当大程度简化了提示点的工作。当使用CuePointManager 处理CuePointEvent 时,不同于前面的情况下,收到的事件只拥有三个属性: cuePointTime,cuePointName, and cuePointType. 如果你需要从提示点获得更多或不同的信息,你可能要写一个自定义类来返回提示点数据,并设置它为VideoDisplay 对象的cuePointManager 属性。
完整的代码如下:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400"
height="300">
<mx:Script>
<![CDATA[
import mx.events.CuePointEvent;
private function onCuePoint(event:CuePointEvent):void {
trace(event.cuePointName+" "+event.cuePointTime+
" "+event.cuePointType+" ");
}
]]>
</mx:Script>
<mx:VideoDisplay id="vid" cuePoint="onCuePoint(event)"/>
</mx:VBox>
height="300">
<mx:Script>
<![CDATA[
import mx.events.CuePointEvent;
private function onCuePoint(event:CuePointEvent):void {
trace(event.cuePointName+" "+event.cuePointTime+
" "+event.cuePointType+" ");
}
]]>
</mx:Script>
<mx:VideoDisplay id="vid" cuePoint="onCuePoint(event)"/>
</mx:VBox>
加支付宝好友偷能量挖...