加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

actionscript-3 – FLVPlayback / VideoPlayer:如何访问接受5个

发布时间:2020-12-15 07:28:38 所属栏目:百科 来源:网络整理
导读:我想使用以下load()方法接受五个参数,以便我可以从较大的视频加载一个小的“摘录”: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#load() 特别是,startTime和duration参数似乎是我需要的,但我收到的错误
我想使用以下load()方法接受五个参数,以便我可以从较大的视频加载一个小的“摘录”:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#load()

特别是,startTime和duration参数似乎是我需要的,但我收到的错误似乎表明我没有正确的对象/版本的东西,即使Adobe文档说它应该工作.这是我的步骤:

>启动一个新的空白FLA文档(AS3).
>将FLVPlayback组件拖到舞台上并将其命名为vPlayer.
>创建一个新图层并在第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这样的错误:错误#1063:fl.video :::PideoPlayer/load()上的参数计数不匹配.预计1,得到5.

我也尝试将innerPlayer转换为fl.video.VideoPlayer,但这不起作用.

我究竟做错了什么?

编辑:即使我在CS4 / AS3和文档声称适用于CS4 / AS3,我的“组件源”文件夹中的类文件似乎与文档不匹配.我也在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组件).

我能够使用.load()调用来处理所有5个参数(并验证它确实在指定的开始时间开始播放),但只能通过从最新的Flex SDK源代码编译新的FLVPlayback_116.swc(Flex) 4.6 with playerglobal.swc version 11.6).

见我的screenshot.

不妨看看它是否适合你.这是你需要做的:

>从库中删除FLVPlayback组件 – 这将使用更新的版本定义冲突的类.
>下载我的FLVPlayback_116.swc库

>或者FLVPlayback_116_air.swc,如果您的目标是Adobe AIR,而不是Flash Player / web

>在Flash中,打开文件 – >在“动作脚本设置”对话框的“库路径”选项卡下,单击“浏览到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",5 // startTime,5 // duration
);
innerPlayer.play();

此外,您可以看到我的VideoPlayer的describeType显示了正确数量的参数:

<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",5 // duration
                   );

注意 – 为了使用皮肤,我从Flash CS6中编译了一个FLA示例…我尝试使用我在Internet上找到的皮肤并且它不起作用 – 它很可能是为旧版本编译的.请参阅此skinned screenshot并下载我的skin.swf.

祝你好运,如果你需要更多信息,请告诉我!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读