[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
気が付けばもう11月。何気に早い卒業制作〆切なのにいまさらビデオ再生関係。
まずは、AS3でFLV形式のビデオを再生するまでの道のり。
// それぞれ必要なクラスをインポート
import flash.media.Video
import flash.net.NetStream;
import flash.net.NetConnection;
// それぞれを定義。
var nc:NetConnection = new NetConnection();
var ns:NetStream;
var video:Video = new Video(320,240);
// メタデータ用に適当なオブジェクトを用意しておく。
var client:Object = new Object();
var totalTime:String;
function Main():void
{
// ローカルぼ場合は null を指定。
nc.connect(null);
// NetStream に NetConnection を渡す。
ns = new NetStream(nc);
// Video に attachNetStream で NetConnection を渡す。
video.attachNetStream(ns);
// Video を addChild で表示。
stage.addChild(video)
// NetStream の play() で再生開始。
ns.play("maji.flv")
// メタデータの処理
client.onMetaData = function(meta:Object):void
{
// 取得されるデータは String型
totalTime = meta.duration;
}
ns.client = client;
}
最小限だとこんな感じになるかな?
Video オブジェクトは単に表示するためのオブジェクトってのが自分的に意外。
ストリーミングを考慮しての設計らしいのでこのような手順を踏むのだとか。
play() や pause() の再生関係のメソッドは NetStream にある。
実はメタデータの処理の仕方がイマイチ理解できてない…。拾ったサンプルまるパクリ。
メタデータに総再生時間とかコーデックの種類とかが入ってるらしいけど、
参照名が決められてないからコーデック次第で参照名が変わるとの記述も…。
コールバック関数とか、functionの代入がいまだに分かってない。
早急に勉強・理解せねばねば。
Flex なら VideoDisplay のコンポーネントを設置するだけでいけるって便利だなぁ。
NetStream 関係で揉め事があるようだけど簡単なのには変わりない。
んで、フレーム単位でビデオを行ったりきたり、映像をスクラッチっぽく操作したいんだけど
調べて見ると、どうやらそれに関しては一筋縄ではいかないようだ…。
でも避けては通れないから何とか解決しなくては、てわ。