04.27.22:43
[PR]
03.01.02:10
画面分割
現在エンコ中の飯屋2日目に遊びで使った画面4分割、StackHorizontal()とStackVertical()の複合で実現する。
v1 = StackHorizontal( h1, h2 )
v2 = StackHorizontal( h3, h4 )
clip = StackVertical( v1, v2 )
各ビデオのサイズを縦横1/2にしないと結合したビデオのサイズは当然縦横2倍になるのでLanczosResize()などで縮小。うちは結合前に縮小したがよくよく考えると結合後でもよかたね。画質を極めるのならCrop()したのちLanczos4Resize()がいいのかもしれない。が、今回BilinearResize()を多用。まーそれほど変わらんでしょう。
02.23.01:25
M.S.の3で導入したテキスト移動
早速技術関連のことも書いておくことに。一応知識ある人向きの内容ですのでavisynthってなんぞ? な人はスルーが吉。
うちでは動画編集にavisynthを使ってるわけですが、まだまだ素人な私には初の試みである移動するテキスト。まー普通にやるぶんにはさほど難しくない。ただこう、動きに緩急をつけたい場合はちょっとめんどくさい。
Animateフィルタを使います。わからん場合はavisynth wikiの内蔵フィルタを参照してね。以下ソース。
function BGMTitle( clip "clip", int "sf", string "title", int "strwidth", int "fcolor1", int "fcolor2" )
{
font = "MS 明朝"
fsize = 18
w = 512
y = clip.height() - 20
sp = w + 100
ep1 = w - strwidth / 10 * 6
ep2 = ep1 - strwidth / 10 * 3
ep3 = ep2 - strwidth / 10 * 1
ep4 = w - strwidth
ep5 = ep4 + strwidth / 10 * 6
ep6 = ep5 + strwidth / 10 * 3
ep7 = ep6 + strwidth / 10 * 1
ret = Animate( clip, sf, sf+10, "Subtitle",
\ title, sp, y, sf, sf+10, font, fsize, fcolor1, fcolor2, 2, 0,
\ title, ep1, y, sf, sf+10, font, fsize, fcolor1, fcolor2, 2, 0 )
ret = Animate( ret, sf+10, sf+20, "Subtitle",
\ title, ep1, y, sf+10, sf+20, font, fsize, fcolor1, fcolor2, 2, 0,
\ title, ep2, y, sf+10, sf+20, font, fsize, fcolor1, fcolor2, 2, 0 )
ret = Animate( ret, sf+20, sf+30, "Subtitle",
\ title, ep2, y, sf+20, sf+30, font, fsize, fcolor1, fcolor2, 2, 0,
\ title, ep3, y, sf+20, sf+30, font, fsize, fcolor1, fcolor2, 2, 0 )
ret = Subtitle( ret, title, ep4, y, sf+30, sf+60, font, fsize, fcolor1, fcolor2, 2, 0 )
ret = Animate( ret, sf+60, sf+70, "Subtitle",
\ title, ep4, y, sf+60, sf+70, font, fsize, fcolor1, fcolor2, 2, 0,
\ title, sp, y, sf+60, sf+70, font, fsize, fcolor1, fcolor2, 2, 0 )
return ret
}
sfで開始フレーム、titleで表示する文字列、strwidthで文字列全体の幅、あとはフォントカラーを指定してます。関数名の通りこれによりBGMタイトル表示を演出してるわけですが、今んとこ他に用途がないので位置(y)もサイズも緩急幅も固定な仕様(使ってやるぜ! という奇特な人は適宜変更してください)。Animateの入れ子とかstrwidthの自動算出とかしたらもっとすっきりするのかもだけどいまいち自信がないのでこのような感じに。