スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--:--  |  スポンサー広告  |  EDIT  |  Top↑

2009.06/08(Mon)

AviUtlで動画にモザイクやマスクをかける方法・自分用まとめ

アイドルマスター無印のオーディションを初めとするXbox360の対人戦。キャプチャして動画をアップしたいことが稀によくあるのですが、ゲーマータグを隠す方法が分からなかったので、これまでは諦めていました。でも昨日の負け犬祭り対戦繪のオーディションをアップしたくて、思い立ってちょっとGoogle先生にお伺いを立ててみたら、あっさり解決してしまいました。
以下、自分の覚えに方法をまとめておきます。

mp4ファイルをエンコードできるようになっているところからはじめます

なお、以下の説明は、すでにAviUtlでmp4ファイルがエンコードできるようになっている状態を前提にしています。
AviUtlを使ったmp4ファイルのエンコードの方法はこちら。
http://hanemitsuru.blog105.fc2.com/blog-entry-279.html

フリーのプラグイン「アニメーション編集 for AviUtl」

動画の編集にはAdobe Premiere Elements 7のような市販のアプリケーションが必須だと思っていたのですが、フリーで配布されているプラグイン「アニメーション編集 for AviUtl」を使えば、逆再生、180°回転、テロップ挿入、画面を4分割してそれぞれに動画を表示など、ずいぶんいろいろなことができるようです。
ありがたく使わせてもらうことにしました。

ダウンロードとインストール

「アニメーション編集 for AviUtl」はこちらからダウンロードできます。
AviUtl実験室:アニメーション編集 for AviUtl

ダウンロードするのはanimate12.lzhというファイル。
なお、動作にはVC++2008のランタイムが必要ですが、上記のファイルに同梱されています。

まず、ダウンロードしたanimate12.lzhを適当なフォルダに解凍します。
インストールについての説明がほとんど無く、敷居が高いのですが、基本的にはanimate.aufというファイルを解凍してできたフォルダからaviutl.exeがインストールされているフォルダにコピーするだけです。
アプリケーション編集 for AviUtlのインストール コピーするファイルはanimate.auf
以前のバージョンだと音声用のanimate_a.aufと画像用のanimate_v.aufにファイルが分かれていたようですが、現在ダウンロードできるファイルはこれらが一つにまとまっています。

なお、動作に必要なVC++2008のランタイムがインストールされていない場合は、同梱されているファイルのうち、vcredist_x86.exeをダブルクリックするとインストールできます。
アプリケーション編集 for AviUtlのインストール VC++2008のランタイムのインストールはこのファイルから
自分はVC++2008のランタイムがインストールされているかどうか分からなかったので、とりあえずダブルクリックしてみたら特に何かを設定するわけでもなくインストールされました。
アプリケーション編集 for AviUtlのインストール VC++2008のランタイムのインストール完了画面
あっけなかったのでAviUtlを起動して確認してみます。
アプリケーション編集 for AviUtlのインストール AviUtlのメニューにこれが出ていれば成功
フィルタのメニューの中に「アニメーション編集[Video]」と「アニメーション編集[Audio]」というメニューが増えています。成功しているようです。
これから編集を行うので、それぞれのメニューをクリックしてチェックマークを付けておきます。

座標とフレーム数の確認

設定ができたので、さっそく動画の編集をはじめます。
これからやろうとしていることは、アイドルマスターのオーディション画面の右側に表示されているデータのうち、自分以外のP名をマスクするかモザイクをかけるかすることです。

まずしなければいけないのが、マスク/モザイクをかける場所の確認です。
何フレーム目から何フレーム目までの間、この座標にこれだけの大きさのマスク/モザイクをかけなさい、ということを「アプリケーション編集 for AviUtl」に設定してやらなければなりません。

このうち、フレーム数はAviUtlのタイトルバーを見れば分かります。
アプリケーション編集 for AviUtl animation.txtの編集に必要なフレーム数
[2403/14708]と表示されているのが現在のフレーム数、全体のフレーム数が14,708フレームで、現在表示されているのは2,403フレーム目、ということです。
(なお、スクリーンショットは編集後のものを使っているので、P名にモザイクが既にかかっています)
オーディション画面のP名の表示は、中間審査の順位によって順番が変わるので、画面下のスライドバーを使って1節目の開始、1節目の終了、2節目の開始、2節目の終了、3節目の開始、3節目の終了の時点のフレーム数を調べて、どこかにメモしておきます。

次に座標を調べます。
もっと他にうまいやり方があると思いますが、自分はGimpを使いました。
AviUtlの動画が表示されているエリアを右クリックして出るメニューから、「クリップボードに出力イメージをコピー」を選択します。
アプリケーション編集 for AviUtl animation.txtの編集に必要な座標 まず静止画をコピーして
Gimpを起動して、クリップボードからデータを貼り付けます。
ツールボックスから矩形選択を選んで、モザイクをかけたい範囲を選択してやると、ツールボックスに開始位置のx,y座標、選択した範囲の大きさが表示されるので、どこかにメモしておきます。
アプリケーション編集 for AviUtl animation.txtの編集に必要な座標 Gimpに貼り付けてから、マスク/モザイクをかけたい範囲を選択

なお、自分の環境では、出力するサイズが640×360のときの座標と大きさははこんな感じでした。
x,yは開始位置のx座標、y座標、w,hは範囲の幅、高さです。
No.1 x464,y 89,w177,h11
No.2 x464,y116,w177,h11
No.3 x464,y143,w177,h11
No.4 x464,y170,w177,h11
No.5 x464,y197,w177,h11
No.6 x464,y224,w177,h11

animation.txtの編集

「アプリケーション編集 for AviUtl」へのデータの設定は、必要なデータを書き込んだ「animation.txt」というテキストファイルを編集したい動画と同じフォルダに置くことにより行います。
メニュー画面からGUIを使って設定するわけではないので、やっぱりちょっと取っつきにくいのですが、マスク/モザイクをかける程度の処理ならそれほど複雑ではありません。

マスクをかける

まず、マスクをかけてみます。
マスクをかけるには、fill( )という関数を使うようです。
書き方は

[開始フレーム-終了フレーム]
fill(buf, x,y,w,h, Y,Cb,Cr)

これを必要な回数繰り返すだけ。
bufは0で固定。
x,y,w,hは上記で調べた塗りつぶす範囲の座標と大きさ、Y,Cb,Crは色を指定します。黒で塗りつぶすなら0,0,0になります。
実際のデータはこんな感じ。なお、;(セミコロン)の後はコメントです。

;<------ここからデータ------>
;<------【第一審査】------>
[254-3735]
fill(0,464,89,177,11,0,0,0)
fill(0,464,116,177,11,0,0,0)
fill(0,464,143,177,11,0,0,0)
fill(0,464,170,177,11,0,0,0)
;<------【第二審査】------>
[3736-6138]
fill(0,464,89,177,11,0,0,0)
fill(0,464,116,177,11,0,0,0)
fill(0,464,197,177,11,0,0,0)
fill(0,464,224,177,11,0,0,0)
;<------【第三審査】------>
[6139-8767]
fill(0,464,89,177,11,0,0,0)
fill(0,464,116,177,11,0,0,0)
fill(0,464,170,177,11,0,0,0)
fill(0,464,224,177,11,0,0,0)

この内容を書き込んだ「animation.txt」を編集したい画像と同じフォルダに置いて、あとは普通にエンコードするだけで指定した範囲を黒で塗りつぶした動画ができます。
できあがりはこちら。
http://zoome.jp/hanemitsuru/diary/74/
なお、画面右端まで黒でマスクしているのは、オーディション開始時にP名が画面右端から流れてくるような演出があるからです。

モザイクをかける

黒でマスクをすると結構目障りなので、モザイクをかけてみます。

モザイクはマスクより少し面倒です。
mosaic( )という関数でモザイクの作り方を指定して、バッファという一時保管場所にモザイクを作成し、copy( )という関数で作ったモザイクを動画に上書きします。

mosaic( )の書き方はこんな感じ。

mosaic(buf0,buf1, x0,y0,w,h, x1,y1, nw,nh)

これをanimation.txtの頭に一箇所書いておきます。
buf0,buf1は0,1で固定。
x0,y0,w,hはモザイク作成の元となる画像の範囲と大きさですが、これからやろうとしているのは全画面のモザイクを作って、必要な部分を元画像に上書きするという処理ですので、0,0,640,360(画面左上隅から開始して、画面全体の大きさ)と指定してやります。
x1,y1は作成したモザイクの左上の座標ですが、今回は画面左上隅の0,0で構いません。
最後のnw,nhは作成するモザイクのブロックサイズで、数字が大きいほど粗くなります。今回は4,4で作ってみました。もう少し粗い方が良かったかもしれません。

copy( )の書き方はこんな感じ。

[開始フレーム-終了フレーム]
copy(buf0,buf1, x0,y0,w,h, x1,y1)

これを必要な回数繰り返します。
buf0,buf1はコピー元、コピー先で、今回はbuf1に作ったモザイク画像をbuf0にある元画像にコピーするので、1,0。
x0,y0,w,hはコピー元の画像の範囲です。上記で調べた隠したい範囲の座標と大きさを指定します。
x1,y1はコピー先の範囲の座標なので、x0,y0と同じ。

以上を設定した実際のデータはこんな感じ。

;<------ここからデータ------>
;全画面分のモザイク画像を作って、必要な部分を貼り付ける
mosaic(0,1,0,0,640,360,0,0,4,4)

;<------【第一審査】------>
[232-3886]
copy(1,0,464,89,177,11,464,89)
;copy(1,0,464,116,177,11,464,116)
copy(1,0,464,143,177,11,464,143)
copy(1,0,464,170,177,11,464,170)
copy(1,0,464,197,177,11,464,197)
copy(1,0,464,224,177,11,464,224)
;<------【第二審査】------>
[3888-6288]
copy(1,0,464,89,177,11,464,89)
copy(1,0,464,116,177,11,464,116)
;copy(1,0,464,143,177,11,464,143)
copy(1,0,464,170,177,11,464,170)
copy(1,0,464,197,177,11,464,197)
copy(1,0,464,224,177,11,464,224)
;<------【第三審査】------>
[6290-8926]
copy(1,0,464,89,177,11,464,89)
copy(1,0,464,116,177,11,464,116)
;copy(1,0,464,143,177,11,464,143)
copy(1,0,464,170,177,11,464,170)
copy(1,0,464,197,177,11,464,197)
copy(1,0,464,224,177,11,464,224)

編集に実際に使用したanimation.txtをあげておきます。
実際に使用したanimation.txt

できあがりはこんな感じ。
http://zoome.jp/hanemitsuru/diary/77/

取っつきにくい見た目とは裏腹に、意外と簡単でした。
面白かったので、色々やってみたくなってしまいました。

参考にしたページとか

以下のページが参考になりました。ありがとうございました。
TOM9's Blog:キoー○ー3分クッキング
ぶー戦記:【SC4】AviUtlでマスク(モザイク)処理 上【タグ消し】
関連記事
スポンサーサイト

テーマ : 動画 - ジャンル : コンピュータ

タグ : キャプチャー エンコード MonsterX AviUtl

08:55  |  キャプチャー  |  TB(0)  |  CM(4)  |  EDIT  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。