自分が楽するためだけに作った、analyserから直接動画を出力する技術。
技術と言っても、もともとHSPには、動画出力する機能があるので、それを用います。
目次
目次
- Part1
- 基本事項(全体的な外観とか)
- Part2
- 数字(叩く順番)の表示に関するもの
- Part3
- analyserから直接、動画(AVI)出力する
- Part4-1
- HOLDマーカーの挙動
- Part4-2
- HOLDマーカー終点の挙動
使用するコーデックについて
AVIのコーデックには「Lagarith」を使用しています。
速度・容量も優れたロスレスコーデックで、youtubeにそのままうpできます。
【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
↑最終的にこうなる
コメント
[…] jubeat analyserの改造メモ Part3(譜面動画をAVI出力する) ◆追記ここまで◆ […]