忍者ブログ
 >admin |  >entry |  yukku++Blog 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

flvをスクラッチ再生みたくしたいのがどうにもうまく行かない。
キーフレームを増やさないとガクガクになったり、ロードが追いつかなかったり。
ローカルでやってるのに重い。たぶん自分のスキル不足なんだろうけど。
んで、仕方ないので連番jpgをその都度書き換えて動画っぽく見せてやろうかと。
つまりほぼ gif アニメーション。
使うのはローカルだから読み込み遅延はあまり考えなくてもよいし、容量もそれほど気にしない。
長いと異常なファイル数でキツイけど、短いし、フレームレート落して対応する。
とりあえず、画像の読み込みについてメモっておく。

import flash.net.URLRequest;
import flash.display.Loader;

// ファイル名を String型 で代入
var Path:String = "test.jpg";

// Path を渡して URLRequest オブジェクトを作る。
var URI:URLRequest = new URLRequest(Path);

// Loader オブジェクトを作る。まだ読み込まない。
var imgLoader:Loader = new Loader();

// load() に URI を渡して読み込む。
imgLoader.load(URI);

// Loader を表示リストに加える。
addChild(imgLoader);

コレを基本として、URIを書き換えて、URLRequest を作り直して代入し、読み込みなおすのを
EnterFrameで回すと動画っぽくなった。
また、読み込み用の番号を減らして逆再生っぽくしたのも一応動いた。
フレーム番号(ファイル名)を指定してやることで任意の画像を出したり、切り替えたり出来た。
読み込みなおしで切り替え時に画像が消えるかと思ったらそうでもなかった。
最近出番の無いSH8たんで動かして見たら、こま落ちはするものの、
読み込みのタイミングが遅れて、背景が見えるなんてことは無かった。
ひとまずよしとする。
PR

気が付けばもう11月。何気に早い卒業制作〆切なのにいまさらビデオ再生関係。

まずは、AS3でFLV形式のビデオを再生するまでの道のり。

  1. NetConnectionオブジェクトがサーバーまたはローカルへの接続を開く。
  2. NetStreamオブジェクトが接続を利用してビデオデータを流す。
  3. Videoオブジェクトがビデオデータを表示する。
大雑把にするとこの3ステップを踏んで、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 関係で揉め事があるようだけど簡単なのには変わりない。

んで、フレーム単位でビデオを行ったりきたり、映像をスクラッチっぽく操作したいんだけど
調べて見ると、どうやらそれに関しては一筋縄ではいかないようだ…。
でも避けては通れないから何とか解決しなくては、てわ。

いままであまり使っていなかったけどサンプルのプログラムなんかで見かけるようになったから、ここいらで勉強しておこう。
主に配列から中身やインデックスなんかを取り出すときに使うらしい。


for ...in ...

var List:Array = [a, b, c, d, e, f, g];
// No に List のインデックス番号が入る。String型であることに注意する。
var No:String;
var Index:uint;

// 今回は List の長さが 7 なので 0-6 までが No に入るのを繰り返す。
for (No in List)
{
    // No に入った番号は String型 なので int型 に変換して Index に入れる。
    Index = int(No);

    // Index に代入された番号を使って抽出。
    trace(No, List[index])
}
0 a
1 b
...
5 f
6 g
// No に代入されるのは String型 のインデックス番号


for ...each ...in ...

var List:Array = [a, b, c, d, e, f, g];
for each ( var v:String in List)
{
    trace(v)
}
a
b
...
f
g
// v に代入されるのは String型 の配列オブジェクト

インデックス番号か配列オブジェクトを取り出すかの違いで使い分けるって感じ?

去年の大学でのプロジェクト作品の Photon Garden を出展するプロジェクトに参加中。
当時は参加していなかったが、今回はシステム関係で推薦がかかった。
と言ってもモニターやカメラの接続や電源関係の担当でたいしたことはしていないが。
コレが見てるとなかなか不思議な気持ちになるインスタレーションで面白いので、
ぜひ見に来てもらいたいし、他のブースも非常に面白そうだから来て損はないと思う。

nas-01G008.jpg

前回の続き。NAS-01GのSATA化と運用。
買ってきた変換基盤が大きいのと用途が少し違ったので、HDDに直付けできるタイプを購入。
玄人志向 SATAD-IDEを利用している人が多そうだし、狭いケースにはちょうどよさそうだ。
電源のソケットがちょっと大きいので、収まりが悪ければスリムなタイプに変えると良い。
付属の電源ケーブルが分岐があるのと長かったので、電源だけの短いケーブルに加工。
IEDケーブルがソケットの位置と微妙に合わないので、HDDを少し力づくで押し込む。

nas-01G009.jpg

問題発生…。1TBのHDDをフォーマットしてもハードディスクが利用できないといわれる。
接触不良や基盤・HDDの故障を調べて見たが、どうも問題がなさそう。
そこで HITACHI Deskstar HD725050GLA360 (500GB)で試したらアッサリ正常に終了。
相性があるのかそれとも他に問題があるのか不明…。
1TBを夢見てたけど、500GBも使い切るには結構な容量なので、コレで行こうかと思う。
あとはケースに収めて完了。
追記:
そもそもこの製品は IDE 750GB までの対応だったので動かなくても仕方無いようだ。

ファイル共有・プリントサーバーはは比較的安定して動作してくれている。
それだけ動いてくれれば今回の買い物としては十分。
DLNAやiTuneサーバーはPS3もiPodもないから検証不可。
まぁ、あまり興味は無いから今回はパスってことで。
やっぱり手元に置くと結構ファンやHDDの動作音が気になるな。

ENCORE ENNHD-1000 という製品が Nas-01G と同じ製品らしい。
こちらには 4.10 のファームがあるので試して見たいところ。
こいつをShareのフォルダにいれるとtelnetで接続できるようになる。
そこいらで拾ってきたものなので自己責任で。

nas-01G001.jpg



NASがほしーな、と前々から考えていたんだけどもついに購入。ってもオークションだけども。
んで、いろいろ悩んだ結果 Planex NAS-01G を落札。
2chや検索ページを眺めるとちょっとアレな感じの製品だったんだけど、
プリントサーバーの機能が欲しかったからちょうどいいかなと。
んで、いざ届いていじって見るとやっぱりアレな製品だった…。
NAS自体が初めてなのと、ネットワークの知識が薄いので設定がイマイチ分からないんだけど
マニュアル見ても分かりづらいし、拡張機能のインストールに何度も失敗する。
ファームウェアを変えて、何度もやってたら何度目かで出来た。原因は不明…。
どうもコツとしては、ファーム更新->電源OFF->ntx_libra.tgz更新->電源OFF、
電源は本体スイッチ長押しで切る。ダメなら更新後に初期化スイッチも押すのも試すのがいいらしい。
また、前述のリンクに英語版のファームがあり、こっちの方が新しいのでコレをインストールする。
インストールする前に、英語版ファームのファイル名を「NH230A_PCI」を「NH230A_PCIJ」のようにPCIの後に「J」を付ける。
手順は日本語版と一緒で、メンテナンスからファームと拡張機能を更新する。
さて、ソフト的なことはひとまず置いておいて、早速中身を見て見よう。


nas-01G003.jpg


上下に付いているネジを外すと半分になる。通常HDDを入れる場合はここまででよい。
単純にIDEと電源ケーブルを繋いで閉じればいいだけ。


nas-01G004.jpg


基盤を取り出した。金属のプレートを固定している四隅のネジを外すと基盤ごと持ち上がり、
基盤側のネジを外すと基盤とプレートに分けることが出来る。
基盤がLEDのプリズムの下に挟まるような形になっているので、ファン側を持ち上げて外す。


nas-01G005.jpg


3.5inch IDEのHDDが無かったので、変換基盤を付けた2.5inch で動作させて見た。
特に問題はないようだ。

nas-01G006.jpg


SATA化をする予定なので、ST31000333ASとSATA-IDE変換基盤をクレバリーで買ってきた。
ヒャッハー!1TBだぜ。それが1万円ちょっとで買えるなんて…ステキ。


nas-01G007.jpg


ここで問題発生。買った基盤が付かない…。
基盤側のIDEはメス。NASのIDEケーブルを変換しなければならないのでオスである必要がある。
無理やりピンでオス化してみて取り付けたが、思った以上にケース内に余裕が無い!
どちらにしても無理そうだ。
HDDに直付けできる玄人志向 SATAD-IDEを買うべきだった。
というわけで、今日はここまで。結局動かせず…。

marin001.jpg

愛車自慢。左が Marin Fairfax 2008 で、右が Marin Venezia 2007 のモデル。
1年前に Fairfax を買って乗り回して、今年の夏に Venezia を買った。
どっちも Marin なんだけど、フレームの形がすごく気に入って二台目も Marin にという事の顛末。
特徴の角パイプフレーム、それによるフォルムのスマートさがかっこよすぎ!
Marin があんまり有名じゃないのか、出回ってないのか町で見かけることが少ないなぁ。
もし、Marin 乗りで自分を見つけたら、「Marin いいよね」って感じに共感してくだしあ。


レイアウトって難しい。このブログのことだけども。
記事中に画像のサムネイルを入れてるけど、どうもしっくりとこない。
回り込みを指定してみたけど、画像の高さよりも書いてることが短いとかっこ悪くなるし
かといって、余白が大きく出来るのはすかすかでカッコワルイ。
いちいち記事ごとにレイアウトを施すのも面倒だし。
もうちょいCSSの勉強をしたらいろいろいじれるかも知れないけど、
レイアウトはセンスだよなぁ。センスも磨かねば。

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9
プロフィール
Name :
yukku
カレンダー
08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
ブログ内検索
Twitter
Ads
アクセス解析
忍者ブログ [PR]