我想使用以下load()
方法接受五个参数,以便我可以从较大的视频中加载一小段“摘录”:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#load()
特别是,startTime
和duration
参数似乎是我需要的,但我收到的错误似乎表明我没有正确的对象/版本的东西,甚至虽然Adobe文档说它应该有用。以下是我的步骤:
创建一个新图层并在第1帧中添加Actionscript:
import fl.video.*;
var innerPlayer = vPlayer.getVideoPlayer(vPlayer.activeVideoPlayerIndex);
trace(innerPlayer); // "[object VideoPlayer]" appears in Output window
innerPlayer.load(
"RTMP://..."
, 0 // totalTime
, false // isLive
, 60 // startTime
, 10 // duration
);
这应该从一分钟标记开始给我一个十秒钟的剪辑,但我不断收到ArgumentError: Error #1063: Argument count mismatch on fl.video::VideoPlayer/load(). Expected 1, got 5.
我也尝试将innerPlayer投射到fl.video.VideoPlayer,但这不起作用。
我做错了什么?
EDITS :即使我使用CS4 / AS3并且文档声称适用于CS4 / AS3,我的“Component Source”文件夹中的类文件似乎与文档不匹配。我也在CS6中试过这个,我得到“1137:参数数量不正确。预计不超过3个。”
@SunilD。 - 对于CS4:FLVPlayback.VERSION
= 2.1.0.19,我的目标是Flash Player 10(最新版本)+ AS3。对于CS6,FLVPlayback.VERSION
= 2.5.0.26,我的目标是Flash Player 11.4。
在CS4和CS6中,错误表明VideoPlayer load()
只需要一个参数(有两个可选),play()
有三个可选参数。 describeType(innerPlayer)
的输出确认:
<type name="fl.video::VideoPlayer" base="flash.media::Video" isDynamic="false" isFinal="false" isStatic="false">
...
<method name="play" declaredBy="fl.video::VideoPlayer" returnType="void">
<parameter index="1" type="String" optional="true"/>
<parameter index="2" type="Number" optional="true"/>
<parameter index="3" type="Boolean" optional="true"/>
</method>
...
<method name="load" declaredBy="fl.video::VideoPlayer" returnType="void">
<parameter index="1" type="String" optional="false"/>
<parameter index="2" type="Number" optional="true"/>
<parameter index="3" type="Boolean" optional="true"/>
</method>
...
</type>
其他说明:Flash CS6是最新的。手动安装FLVPlayback 2.5组件不起作用。
答案 0 :(得分:3)
Anon,我认为这是一个文档很差/太多不同产品(Flash,Flex,播放器,flvplayback组件)的版本不同的问题。
我能够使用.load()
调用所有5个参数(并验证它确实在指定的开始时间开始播放),但只能通过编译最新的FLVPlayback_116.swc
Flex SDK源代码(带有playerglobal.swc
版本11.6的Flex 4.6)。
查看我的screenshot。
不妨看看它是否适合你。以下是您需要做的事情:
File -> ActionScript Settings
对话框,在库路径选项卡下,单击“浏览到SWC文件”,然后找到刚刚下载的FLVPlayback_116.swc
文件。我上面的屏幕截图显示了此对话框以及添加后FLVPlayback_116.swc
文件的列出方式。fl.video.VideoPlayer.iNCManagerClass = fl.video.NCManager;
innerPlayer = vPlayer.getVideoPlayer
,然后使用innerPlayer = new VideoPlayer(width,height)
和addChild(innerPlayer)
innerPlayer.play()
innerVideo.play()
来启动视频播放(我假设GUI会处理)这是我的代码(在屏幕截图中也可见):
import fl.video.*;
fl.video.VideoPlayer.iNCManagerClass = fl.video.NCManager;
var innerPlayer = new VideoPlayer(640,480);
addChild(innerPlayer);
innerPlayer.load(
"http://10.0.1.3/test.flv"
, 0 // totalTime
, false // isLive
, 5 // startTime
, 5 // duration
);
innerPlayer.play();
此外,您可以看到我的describeType
VideoPlayer
显示了正确数量的参数:
<method name="load" declaredBy="fl.video::VideoPlayer" returnType="void">
<parameter index="1" type="String" optional="false"/>
<parameter index="2" type="Number" optional="true"/>
<parameter index="3" type="Boolean" optional="true"/>
<parameter index="4" type="Number" optional="true"/>
<parameter index="5" type="Number" optional="true"/>
<metadata name="__go_to_definition_help">
<arg key="pos" value="41308"/>
</metadata>
</method>
<method name="play" declaredBy="fl.video::VideoPlayer" returnType="void">
<parameter index="1" type="String" optional="true"/>
<parameter index="2" type="Number" optional="true"/>
<parameter index="3" type="Boolean" optional="true"/>
<parameter index="4" type="Number" optional="true"/>
<parameter index="5" type="Number" optional="true"/>
<metadata name="__go_to_definition_help">
<arg key="pos" value="34410"/>
</metadata>
</method>
更新:我已经更新了库,以便您可以实例化FLVPlayback(w,h)并因此应用皮肤或诸如此类的东西 - 就像上面代码中的vPlayer一样对待它(除了我添加了宽度/高度构造函数args,因为以前的组件来自于舞台上的组件)。像这样实例化:
var vPlayer:FLVPlayback = new FLVPlayback(640,480);
vPlayer.skin = "http://10.0.1.3/skin.swf"; // optional skin
addChild(vPlayer);
var innerPlayer = vPlayer.getVideoPlayer(vPlayer.activeVideoPlayerIndex);
innerPlayer.load(
"http://10.0.1.3/test.flv"
, 0 // totalTime
, false // isLive
, 5 // startTime
, 5 // duration
);
注意 - 为了使用皮肤,我从Flash CS6中编译了一个FLA示例...我尝试使用我在Internet上找到的皮肤并且它不起作用 - 它可能是为旧版本编译的。请参阅此skinned screenshot并下载我的skin.swf。
祝你好运,如果您需要更多信息,请告诉我们!