テロップのついたYoutubeのような動画プレイヤーをFLASH(CS3)で作りたいと

考えております。
見事に解決された方には2000Pとイルカ賞を差し上げます。
通常のプレイヤーは作れたのですが、以下の条件を全て満たすプレイヤーが作れ
ません。
テンプレートなど、みつかれば大変ありがたいです。
ちなみに、当方はフラッシュ初級(アニメーションはわかるがASは基本的なこと
しかわかりません)ですので、
そのスキルにわかる範囲内でお答えください。お手数ですが、宜しくお願い致し
ます。

【満たさないといけない絶対条件】
①動画は埋込み形式ではなく、FLV読込み形式でなくてはならない。(ストリーミング配信が前提であるため。)
②テロップは動画(FLV)内ではなく、フラッシュ上に配置されている必要がある。
③再生位置(ハンドル)を動かした際に、再生時間に合わせてタイムコードがきちっと追従する必要がある。
また、この際にテロップも時間にあわせてきちっと追従しないとならない。
④テロップをXMLファイルで管理しないといけない。

回答の条件
  • URL必須
  • 1人10回まで
  • 登録:
  • 終了:2010/01/11 12:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:yasu-log No.1

回答回数30ベストアンサー獲得回数11

ポイント35pt

こんにちは。

まず、絶対条件のうち(1),(2),(4)の条件でしたら、Flash Professinal CS3/CS4に搭載されているFLV PlayBackコンポーネントを使えば、要件を満たすプレイヤーを作ることができます。標準で搭載されているコンポーネントですので、ヘルプ等での情報も揃っているため、比較的簡単に作ることができます。

なおテロップの入れ方については、XMLベースのTimed Textという標準的なフォーマットをFLV PlayBackで利用することができます。こちらは当方で解説記事を書いてますので、そちらを参考頂ければと思います。

http://clockmaker.jp/blog/2009/07/timed-text-flv/

※(2),(4)の条件を満たすテンプレート的なFLV Playerは私の知る限りこれしかないように思います。


(3)の条件については、ActionScriptを用いて自作するしかないように思います。

有名どころのプレイヤーとして「JW FLV Media Player」がありますが、こちらで目的とする挙動となりますでしょうか?

http://www.forest.impress.co.jp/article/2008/02/12/jwflvmediapla...

なお、このプレイヤーの場合は(2),(4)の条件は満たすことができなくなります(プレイヤーのFlaも提供されているので、ActionScriptを書いて拡張するのであれば大丈夫ですが…)。

id:kutukutu2010

ご丁寧な回答ありがとうございます。

上記4つ全てを満たす必要が有るのですが、おっしゃるとおり、(3)でつまずいてしまいます。

すべて満たしたプレイヤーはあるらしい(おそらくアクションスクリプトを拡張している?)ので、

できることはできるはずですが、具体的な方法がわかりません。

(最悪、4だけは満たさなくても大丈夫ですが、1・2・3は絶対クリア条件です。)

ここを具体的に教えていただけると大変たすかります。

どうぞ宜しくお願い致します。

2010/01/04 15:45:02
id:sjy No.2

回答回数15ベストアンサー獲得回数1

ポイント35pt

テロップ部分についてのアイデアを提供いたします。

XMLファイルの形式

<telops>

<telop>

<time>12</time>

<hide>15</hide>

<description>明けましておめでとうございます</description>

</telop>

<telop>

<time>73</time>

<hide>78</hide>

<description>あばばばテストマイクテスト</description>

</telop>

</telops>



Telopクラス

メンバ変数

・hideTime //消える時間

・descriptionTF //表示する文字列が入るテキストフィールド


コンストラクタ

・Telop(hideTime=-1,_description=null)

  ・引数をメンバ変数に入れる

・_descriptionがnullでなければ

  descriptionTF=new TextField()

    descriptionTF.text=_description

addChild(descriptionTF)

メソッド

・descracter()

removeChild(descriptionTF)

   descriptionTF=null 



TelopManagerクラス

メンバ変数

telop //Telopインスタンスが入る

メソッド

・XMLを読み込み、配列に<telop>から</telop>までを1要素として全部入れる

・ビデオを再生したら、以下のように適当な時間間隔で(Timerクラスでも可)今の秒数をチェックし、テロップを出す・消すメソッドを作る

addEventListener(Event.ENTER_FRAME,_onEnterFrame)

・_onEnterFrame(e:Event)

telopが存在しない && 配列の全要素について現在秒数が要素.time ならば、

    telop = new Telop(その要素.hide,その要素.description)

addChild(telop)

telopをお好きな位置へ移動

  telopが存在する && telopが自分の子 ならば

    removeChild(telop)

telop.destracter()

telop=null


※パフォーマンス向上のために、ビデオ停止、一時停止などの時は removeEventListener(Event.ENTER_FRAME,_onEnterFrame)、

再開したらまた addEventListener(Event.ENTER_FRAME,_onEnterFrame) することをオススメします。

※現在時間が取れている限り、テロップに関しては上記のコード以外に気にする必要はありません。

http://www

id:kutukutu2010

すっかりご返信遅くなり、申し訳ございません!

スクリプトまで記載いただき、大変ありがとうございました。

参考にさせていただきたいと思います。

2010/01/08 10:38:47
  • id:sjy
    申し訳ありません。
    一部、コードの訂正です。

    telopが存在する && telopが自分の子 ならば
    removeChild(telop)
    telop.destracter()
    telop=null



    telopが存在する && telopが自分の子 && telop.hide==現在秒数 ならば
    removeChild(telop)
    telop.destracter()
    telop=null

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません