我想使用下面的load()
方法,该方法接受五个参数,以便可以从较大的视频中加载一个小的“摘录”:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#load()
特别是startTime
和duration
参数似乎是我所需要的,但是我收到一些错误,似乎表明我没有正确的对象/版本,即使Adobe文档说它应该可以工作。这是我的步骤:
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,但这是行不通的。
我究竟做错了什么?
编辑::即使我使用的是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组件无效。
最佳答案
Anon,我认为这是一个糟糕的文档/具有不同版本的太多不同产品(Flash,Flex,播放器,flvplayback组件)的问题。
我能够通过所有5个参数使用.load()
调用(并验证它确实在指定的开始时间开始播放),但是只能通过从最新的Flex SDK源代码(带有FLVPlayback_116.swc
版本11.6的Flex 4.6)中编译新的playerglobal.swc
来进行。 )。
看到我的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一样对待它(除非我添加了width/height构造函数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。
祝您好运,如果您需要更多信息,请告诉我!
关于actionscript-3 - 可以接受5个参数的FLVPlayback/VideoPlayer : How to access VideoPlayer. load()方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17776642/