画像ブラシの使い方

字幕の文字色が単なるグラデーションでは物足りなくなったら、
好きな画像を作って文字色にすることができる。

assだけではできないので、assファイルと動画編集ソフトの機能も組み合わせて実現する。

ここではavisynthを使っているけど、avisynthより高機能な動画編集ソフトはいくらでもあると思うので、お使いの動画編集ソフトでもできるんじゃないかな?

自作分では
http://www.nicovideo.jp/watch/sm25189958
以降、いろんな動画で実装中。
例として
http://www.nicovideo.jp/watch/sm26176496
の動画で説明。

作成手順(ワイプ前の文字色を画像ブラシにする例)

1.普通の字幕assファイルを作成
普通に字幕assファイルを用意する。画像ブラシ部分の色は後からつけるので文字色とかは気にしないでOK

例)

baseass

2.背景色にする画像を作成
背景色にする画像を用意する。GIMPやPhotoshopなどの画像編集ソフトで作成。
画像サイズは使用したい動画と同じサイズかそれより大きくしとけばOK(HD動画だと1280×720とか)

例)

all

3.mask用assファイルを作成。
1の通常字幕assファイルの縁&影サイズを0.ワイプ前文字色を白、ワイプ後文字色を黒として別名で保存する。(aegisubを使うと簡単)
ワイプ後の文字色を画像ブラシにしたい場合は白黒を逆。縁を画像ブラシにしたい場合は縁部分を白。要は画像ブラシにしたいところを白それ以外を黒とすればOK

例) 今回縁ワイプなのでワイプ前の文字の中だけ白

maskass

準備するものは以上の3つの物でOK

動画は次のような3層構造となる。

—(画像ブラシ部分)—-
—(通常字幕)—-
—(ベース動画)—-

4.画像ブラシの作成
黒ベタ画像の上に3のmask用assファイルを適用する。=> アルファマスク
背景色画像にアルファマスクを適用する。
→ これによって2の背景画像が3のmaskでくりぬかれたものが出来上がる。

avisynthで書くとこんな感じ


movie
black=BlankClip(length=movie.FrameCount,width=movie.width,height=movie.height,pixel_type="RGB32",fps=movie.FrameRate,audio_rate=movie.AudioRate,color=$000000,stereo=true)
msk=black.Textsub("[MAD][2.5次元ラブライブ]Star!!_アイドルマスター_シンデレラガールズOP[ショート]_2line_mask.ass")
blushbase=Imagesource("all.png",start=0,end=1,fps=movie.FrameRate,pixel_type="RGB32").Lanczos4Resize(movie.width,movie.height)
blash_b=blushbase.Loop().assumefps(movie)
Overlay(blash_b,mask=msk)

よく使うので関数にしちゃうとこんな感じ

function make_mask_brash_image(clip c, string maskfilename, string basefilename){
black=BlankClip(length=c.FrameCount,width=c.width,height=c.height,pixel_type="RGB32",fps=c.FrameRateNumerator/c.FrameRateDenominator,audio_rate=c.AudioRate,color=$000000,stereo=true).assumefps(c)
msk=black.Textsub(maskfilename)
#画像ブラシ
blushbase=Imagesource(basefilename,start=0,end=1,fps=c.FrameRate,pixel_type="RGB32").Lanczos4Resize(c.width,c.height)
blash_b=blushbase.Loop().assumefps(c)
c.Overlay(blash_b,mask=msk)
return last
}

画像ブラシの部分はこんな風になっている。

maskasswithbase

5.すべて合成

元映像 → 通常字幕 → 画像ブラシの順番に合成する。

avisynthで書くと

movie # 元画像
Textsub("字幕assファイル.ass") # 通常字幕合成
make_mask_brash_image("mask用assファイル名.ass","背景色にする画像のファイル名") # 合成画像ブラシ
return last

合成した結果こんな風になる。

maskblashfinal

これで出来上がり。

応用編

背景にしている画像は止まった画像でなくて、動画でもOK
静止画をひたすら横スクロールさせたらずっと何かが飛んでいるようになる。

この場合、
4’.背景動画ブラシの作成
黒ベタ画像の上に3のmask用assファイルを適用する。=> アルファマスク
背景動画にアルファマスクを適用する。

avisynthで関数にするとこんな感じ

function make_mask_brash_movie(clip c, string maskfilename, clip basemovie){
black=BlankClip(length=c.FrameCount,width=c.width,height=c.height,pixel_type="RGB32",fps=c.FrameRateNumerator/c.FrameRateDenominator,audio_rate=c.AudioRate,color=$000000,stereo=true).assumefps(c)
msk=black.Textsub(maskfilename)
c.Overlay(basemovie,mask=msk)
return last
}

5’.すべて合成
元映像 → 通常字幕 → 画像ブラシの順番に合成する。

静止画をひたすら横スクロールする画像ブラシを
avisynthで書くと

blushbase=Imagesource("all.png",start=0,end=1,fps=movie.FrameRate,pixel_type="RGB32")
StackHorizontal(blushbase,blushbase)
yokosc(movie,400) #横スクロール生成関数(内容は割愛)
maskmovie = last.Loop() # 背景動画
movie # 元動画
Textsub("字幕assファイル.ass") # 通常字幕合成
make_mask_brash_movie("mask用assファイル名.ass",maskmovie ) # 合成画像ブラシ
return last

  1. No comments yet.
(公開されません。ってか記入しなくてもいいです)