gpt4 book ai didi

actionscript-3 - FLVPlayback/VideoPlayer : How to access VideoPlayer. 接受 5 个参数的 load() 方法?

转载 作者:行者123 更新时间:2023-12-04 20:46:06 26 4
gpt4 key购买 nike

我想使用以下 load()接受五个参数的方法,以便我可以从较大的视频加载一个小的“摘录”:

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

特别是startTimeduration参数似乎是我需要的,但我收到的错误似乎表明我没有正确的对象/版本的东西,即使 Adob​​e 文档说它应该可以工作。这是我的步骤:

  • 开始一个新的空白 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: Error #1063: Argument count mismatch on fl.video::VideoPlayer/load(). Expected 1, got 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 个参数(并验证它确实在指定的开始时间开始播放),但只能通过编译一个新的 FLVPlayback_116.swc来自最新的 Flex SDK 源代码(Flex 4.6 with playerglobal.swc version 11.6)。

    看我的 screenshot .

    不妨看看它是否适合你。以下是您需要执行的操作:

  • 从您的库中删除 FLVPlayback 组件 - 这定义了与更新版本冲突的类。
  • 下载我的 FLVPlayback_116.swc图书馆
  • FLVPlayback_116_air.swc如果您的目标是 Adob​​e AIR,而不是 Flash Player/web
  • 在 Flash 中,打开 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();

    另外,你可以看到我的 describeTypeVideoPlayer显示适当数量的参数:
    <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 .

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

    关于actionscript-3 - FLVPlayback/VideoPlayer : How to access VideoPlayer. 接受 5 个参数的 load() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17776642/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com