jubeat analyserの改造メモ Part3(譜面動画を直接、動画(AVI)出力する)

自分が楽するためだけに作った、analyserから直接動画を出力する技術。

技術と言っても、もともとHSPには、動画出力する機能があるので、それを用います。

目次

Part1
基本事項(全体的な外観とか)
Part2
数字(叩く順番)の表示に関するもの
Part3
analyserから直接、動画(AVI)出力する
Part4-1
HOLDマーカーの挙動
Part4-2
HOLDマーカー終点の挙動

使用するコーデックについて

AVIのコーデックには「Lagarith」を使用しています。
速度・容量も優れたロスレスコーデックで、youtubeにそのままうpできます。

Lagarith Lossless Video Codec

【aa.hsp内】

#include "hspcv.as"

どこでもいいので置く。
(約253行目、#include “msort_bsearch.hsp” 付近に書くといい感じ)

hspcv.as が読み込めればいいので、すぐ下にある#ifシリーズを取っ払っても良い。

※アナライザーが新版(130519頃)になって、a2dで画像処理をするようになったが、
 ここではAVI出力のため、従来使われていたhspcvを使う。
 #ifの処理がめんどいので、USEA2Dを無効にした方が早いかも(aa.hsp内の#define global USEA2D 1 を0にする)

【playmovie.hsp内】

約2024行目、*frameoutput 以下で編集を行う。
以下の3か所に変更を加える。

1.動画出力開始命令(ファイル名とかコーデックをここで設定)

[ループ起点] : repeat 命令

2.現フレームをAVIに追加していく

[ループ終点] : loop 命令

3.出力終了命令

[下準備]

// #if USEA2D==0
if (framecut):gsel 19
cvbuffer 0,((ginfo_winx-1)/8+1)*8,((ginfo_winy-1)/8+1)*8: cvsel 0 //ちなみに、黒で初期化されます
// #endif

たぶん処理に使う仮画面の準備かな。
#if と #endif の行を削除し、強制的にONにする。

0.出力フォルダ指定

dirlist stmp,”frame”,5: if (strlen(stmp)==0): mkdir “frame”

これをコメントアウト。
代わりに、以下をmakeaviより前に記述

chdir homedir

◆出力するAVIは、homedir(=analyser本体と同じディレクトリ)に置くことにします。

◆↓この2行は自分用メモ(無視して下さい)

シャッター版は、これも「追記」する。
chdir “..” // シャッター版は一つ上の階層に出力

1.動画出力開始命令

repeat より前に、以下を記述(5347414CはLagarith指定)。 
個人的には cn = 1 の直前かな?

// 動画出力用1
// AVI を analyserのフォルダに出力させる
chdir homedir
cvmakeavi "_frame.avi",0x5347414C,30,0
// 動画出力用1ここまで

◆謎の8桁の数字は、下記の補足を参照ください。

↓旧記述(コーデック選択のダイアログが出る)
// cvmakeavi "_frame.avi",,30,0

(※30はフレームレート。outputfpsの値を参照してもいい)
(※この命令で動画の簡単な設定が行える。詳しくはヘルプ見れ)

//シャッター版はこの名前を適当に_shtとかつけておく

2. フレームをAVIに追加

#if USEA2D
imgsave “frame\\frame”+cn+”.jpg”,95 //a2d の中に新規定義した命令
#else
cvputimg: cvsave “frame\\frame”+cn+”.jpg”,0,95
#endif

↑の5行を削除し、以下を追記
(忘れたメモ : mini>cnやmaxi>cnも削除すべき?)

ファイル内検索をする場合、「cvputimg」あたりで。
すぐ下のexistうんちゃらも消していい

// 動画出力用2
gsel 19
cvputimg
cvputavi
// 動画出力用2ここまで

3.出力終了命令

returnの直前に、以下を記述(後ろに *bgcolorselect があるとこ)

// 動画出力用3
cvendavi
// 動画出力用3ここまで

4.補足A

jpg出力用の処理もあるので、適宜削除するといいかも

◆この1行、何のことか思い出せませんでした。AVI出力するので関係ない話とは思いますが

4.補足B

出力する動画コーデックの指定について

// 動画出力用1
cvmakeavi "_frame.avi",,30,0
// 動画出力用1ここまで

最初にしていたここの省略値に適切なFourCCを挿入すると、自動でコーデックを選択してくれます。

ちなみにLagarithは 0x5347414C 。
16進数表記でリトルエンディアン記法とのことです。

参照↓
http://www.hspcenter.com/hsptvm/archives/2007/10/
「【講座】HSP3ワンポイントテクニック 第26回」 の部分

(頭につく 0x もしくは $ は、16進数を意味します)

更に補足
LagarithのFourCCは「LAGS」。

‘L’=4C
‘A’=41
‘G’=47
‘S’=53

これを下から順に並べて頭に “0x” を付ければOK

cvmakeavi "_frame.avi",0x5347414C,30,0

↑最終的にこうなる

シェアする

  • このエントリーをはてなブックマークに追加

フォローする