考えております。
見事に解決された方には2000Pとイルカ賞を差し上げます。
通常のプレイヤーは作れたのですが、以下の条件を全て満たすプレイヤーが作れ
ません。
テンプレートなど、みつかれば大変ありがたいです。
ちなみに、当方はフラッシュ初級(アニメーションはわかるがASは基本的なこと
しかわかりません)ですので、
そのスキルにわかる範囲内でお答えください。お手数ですが、宜しくお願い致し
ます。
【満たさないといけない絶対条件】
①動画は埋込み形式ではなく、FLV読込み形式でなくてはならない。(ストリーミング配信が前提であるため。)
②テロップは動画(FLV)内ではなく、フラッシュ上に配置されている必要がある。
③再生位置(ハンドル)を動かした際に、再生時間に合わせてタイムコードがきちっと追従する必要がある。
また、この際にテロップも時間にあわせてきちっと追従しないとならない。
④テロップをXMLファイルで管理しないといけない。
こんにちは。
まず、絶対条件のうち(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を書いて拡張するのであれば大丈夫ですが…)。
テロップ部分についてのアイデアを提供いたします。
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) することをオススメします。
※現在時間が取れている限り、テロップに関しては上記のコード以外に気にする必要はありません。
すっかりご返信遅くなり、申し訳ございません!
スクリプトまで記載いただき、大変ありがとうございました。
参考にさせていただきたいと思います。
ご丁寧な回答ありがとうございます。
上記4つ全てを満たす必要が有るのですが、おっしゃるとおり、(3)でつまずいてしまいます。
すべて満たしたプレイヤーはあるらしい(おそらくアクションスクリプトを拡張している?)ので、
できることはできるはずですが、具体的な方法がわかりません。
(最悪、4だけは満たさなくても大丈夫ですが、1・2・3は絶対クリア条件です。)
ここを具体的に教えていただけると大変たすかります。
どうぞ宜しくお願い致します。