5

load()大きなビデオから小さな「抜粋」をロードできるように、5 つのパラメーターを受け入れる次のメソッドを使用したいと考えています。

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

特に、パラメータstartTimedurationパラメータは必要なもののようですが、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
    );
    

これにより、1 分のマークから始まる 10 秒のクリップが得られるはずですが、次のようなエラーが発生し続けます。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()は 1 つの引数 (2 つのオプション) のみが必要であり、play()3 つのオプションの引数があることを示しています。の出力は次を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 コンポーネントを手動でインストールしても機能しませんでした。

4

1 に答える 1

3

匿名さん、これはドキュメントが貧弱であるか、バージョンの異なる製品 (Flash、Flex、プレーヤー、flvplayback コンポーネント) が多すぎることが原因だと思います。

5 つの引数すべてで呼び出しを機能させることができました(指定された開始時間に再生を開始したことを確認しました) が、最新の Flex SDK ソース コード (バージョン 11.6 の Flex 4.6)から.load()新しいものをコンパイルすることによってのみでした。FLVPlayback_116.swcplayerglobal.swc

私のスクリーンショットを見てください。

それがあなたのために働くかどうか見てもいいかもしれません。必要な作業は次のとおりです。

  • ライブラリから FLVPlayback コンポーネントを削除します。これにより、更新されたバージョンと競合するクラスが定義されます。
  • FLVPlayback_116.swcライブラリ をダウンロード
    • または、Flash Player / web ではなく、Adobe AIR をターゲットにしている場合はFLVPlayback_116_air.swc
  • Flash でFile -> ActionScript Settingsダイアログを開き、[ライブラリ パス] タブで [SWC ファイルを参照] をクリックして、FLVPlayback_116.swcダウンロードしたファイルを見つけます。上の私のスクリーンショットは、このダイアログと、FLVPlayback_116.swcファイルが追加された後にどのようにリストされるかを示しています。
  • コード内 (以下を参照):
    • 以下を設定する必要があります。fl.video.VideoPlayer.iNCManagerClass = fl.video.NCManager;
    • 使用するのではなく、and then andinnerPlayer = 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また、 my ofVideoPlayerが適切な数の引数を示していることもわかります。

<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 と同じように扱います (ただし、幅/高さコンストラクター引数を追加しました)。 、ステージ上のコンポーネントからサイズが取得されていたため)。次のようにインスタンス化します。

  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 サンプルの 1 つをコンパイルしました... インターネットで見つけたスキンを使用してみましたが、動作しませんでした。古いバージョン用にコンパイルされた可能性があります。このスキンのスクリーンショットを見て、私のskin.swfをダウンロードしてください。

頑張ってください。さらに情報が必要な場合はお知らせください。

于 2013-08-02T18:47:42.240 に答える