トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     複数動画をシームレスに連続再生させるには?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Taran
Åê¹ÆNo.33452
投稿日時: 2007-5-23 12:15
新米
居住地:
投稿: 2
使用環境:
WinXP,Flash8
複数動画をシームレスに連続再生させるには?
はじめて投稿させていただきます。
よろしくお願いいたします。m(_ _)m

現在、Flash 8 proにて、複数あるflv動画を「シームレス」に連続再生させるにはどうしたらよいか思案しています。
もう少し具体的に説明しますと、ある1つのflv動画の再生が終了したら、次のflv動画の再生をスタートさせ、それがまた終了したら、またその次動画を自動再生する…といった仕様のものです。
再生方法はプログレッシブダウンロードです。

FLVPlaybackコンポーネントを使い、.stateプロパティで、再生終了のステータスを検知し、それをトリガにして次のFLVを再生させるところまではこぎつけたのですが、「シームレス」というところがポイントでして、
自分で作成してみたものは、
「FLV再生終了→次のFLVのバッファリング→次の動画の再生」
という流れで再生され、どうしてもバッファリングのところで、見た目にブランクができてしまいます。この部分をなくして、シームレスに連続再生する方法はないかと模索しています。

FLVの性質上、バッファリングを物理的になくすことなどできないのではないかと思うのですが、例えば、日本放送協会のHP(http://www3.nhk.or.jp/)のおすすめ番組紹介のSWFファイルで使われている動画は、
各動画再生のあいだに、バッファリングによると思われる画面のブランクがなく、切れ目がなく連続再生されているようです。どうしたらそのように連続再生できるのでしょうか?

ちなみに、自分で作成してみた動画の連続再生のしくみは以下のようなものです。

・フレーム1,2,3に、FLVPlaybackコンポーネントのインスタンスmy_FLVPlybkを配置。
・各フレームにラベルを付ける。それぞれmovie1, movie2, movie3。
・各フレームに、以下のスクリプトを記述。
//フレーム1の場合
this.stop();

import mx.video.*;
var listenerObject:Object = new Object();
listenerObject.stateChange = function(eventObject:Object):Void {
trace(my_FLVPlybk.state);

if(my_FLVPlybk.state == "stopped"){
_root.gotoAndPlay("movie2");

}

};
my_FLVPlybk.addEventListener("stateChange", listenerObject);
my_FLVPlybk.contentPath = "sample.flv";
Shimon Hori
Åê¹ÆNo.33456
投稿日時: 2007-5-23 23:00
新米
居住地:
投稿: 26
使用環境:
WinXP / Flash8Pro / FashCS3Pro / FlexBuilder3 Beta2 / AIR Beta2
Re: 複数動画をシームレスに連続再生させるには?
Taranさん、こんにちは。

そのような場合はFLVPlayBackを複数配置したほうが良いように思われます。

例えば以下のような流れです。

1. attachMovie("FLVPlayBack",名前,深度,{autoPlay:false,_visible:false});
のような形で動画の枚数分 FLVPlayBack を配置

2. それぞれに ready と complete のイベントリスナーを登録。

[イベントリスナーの処理]
→ ready
次に再生するビデオのFLVPlayBackの load(URL) を実行。

→ complete
次に再生するビデオのFLVPlayBack を表示させて play() する。
かつ現在のFLVPlayBackは非表示またはremoveする。
再生ボタンなどUIを次のFLVPlayBackに再設定。

3. 最初のFLVPlayBackを再生させる。


こうすれば複数同時バッファリングを避けられますし、回線が良ければシームレスな再生も可能なはずだと思いますがいかがでしょうか。


----------------

Taran
Åê¹ÆNo.33468
投稿日時: 2007-5-25 10:01
新米
居住地:
投稿: 2
使用環境:
WinXP,Flash8
Re: 複数動画をシームレスに連続再生させるには?
Shimonさん、ありがとうございました!
教えていただいたようにしてみたら上手くいきました。

ボタンの設定などは、はしょっていますが、
だいたい以下のようなスクリプトになるでしょうか。

//フレームアクションとして
//FLVPlayBackを配置
_root.attachMovie("FLVPlayBack", "MyFLV01", 2,{autoPlay:false,_visible:false});
_root.attachMovie("FLVPlayBack", "MyFLV02", 1,{autoPlay:false,_visible:false});
_root.attachMovie("FLVPlayBack", "MyFLV03", 0,{autoPlay:false,_visible:false});


//イベントリスナーの登録

//MyFLV01 readyのイベントリスナーの登録
var listenerReady01:Object = new Object();
listenerReady01.ready = function(evtObj:Object){
MyFLV02.load("video2.flv");
};

MyFLV01.addEventListener("ready", listenerReady01);

//MyFLV01 completeのイベントリスナーの登録
var listenerComplete01:Object = new Object();
listenerComplete01.complete = function(evtObj:Object){
MyFLV01._visible = false;
MyFLV02._visible = true;
MyFLV02.play();
};
MyFLV01.addEventListener("complete", listenerComplete01);

//MyFLV02 readyのイベントリスナーの登録
var listenerReady02:Object = new Object();
listenerReady02.ready = function(evtObj:Object){
MyFLV03.load(""video3.flv");
};

MyFLV02.addEventListener("ready", listenerReady02);

//MyFLV02 イベントリスナーの登録
var listenerComplete02:Object = new Object();
listenerComplete02.complete = function(evtObj:Object){
MyFLV02._visible = false;
MyFLV03._visible = true;
MyFLV03.play();
};
MyFLV02.addEventListener("complete", listenerComplete02);

//最初のムービーの再生
MyFLV01._visible = true;
MyFLV01.play(""video1.flv");

このたびは大変勉強になりました。
また機会があったらよろしくお願いします。m(_ _)m
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops