サンプルスクリプト/ロゴの追加
今日の献立 †
今回は、ビデオクリップの上のオリジナルのロゴ画像を追加します。ベースになるクリップにはサンプル動画(example.avi)を使用します。また、その上に重ねるロゴは、当サイトのロゴを使用します。
材料 †
- ビデオクリップ。
- 例としてサンプル動画(example.avi)を使用。
- ロゴ。
- 今回は当サイトのロゴを使用。もちろん他の画像でもよい。
- Layer
- ImageSource
- AviSource
- example.avi の読み込みに利用。他のビデオクリップ、他のビデオ入力フィルタでも可。
作り方 †
- AviSource フィルタで example.avi を開き、変数 main に代入します。ConvertToRGB32 フィルタで RGB32 に変換している点にも注目してください。これは、Layer フィルタが RGB32 と YUY2 にしか対応していないためです。*1
# ソースの読み込みと変数への代入 main = AVISource("example.avi").ConvertToRGB32() # ConvertToRGB32() で RGB32 に変換
- ImageSource フィルタでロゴを読み込み、変数 logo に代入します。pixel_type を "RGB32" に指定することによって、アルファチャンネルの情報を失うことなく読み込むことができます。*2
# ロゴの読み込みと変数への代入(アルファチャンネル付きの PNG 画像を RGB32 デコード) logo = ImageSource("logo.png", pixel_type="RGB32")
必ずしも pixel_type パラメータを指定しなければならないわけではありませんが、ソースとロゴは同じカラーフォーマット(ただし、RGB32 か YUY2 のいずれか)である必要があります。カラーフォーマットの変換には、Convert フィルタを使用します。# ロゴの読み込みと変数への代入 logo = ImageSource("logo.png").ConvertToRGB32() # ConvertToRGB32 で RGB32 に変換
- Layer フィルタで main の上に logo を重ねます。"add" は Layer フィルタのオプションの 1 つで、ベースとなるクリップの上に別のクリップを追加(add)します。また、x と y パラメータで、ロゴ画像の座標を指定しています。
# Layer で main の上に logo を追加 Layer(main, logo, "add" , x=260, y=180)
AVS ファイルを開くと、上の画像のようにロゴが追加されています。 - また、level パラメータの値を調節することで、ロゴを半透明にすることも可能です(RGB32 の場合)*3。level パラメータの取る値の範囲は、0 から 255 までです。
# Layer で main の上に logo を追加 Layer(main, logo, "add" , x=260, y=180, level=100) # level を調節して半透明に
ロゴが半透明になり、うしろのクリップの色が透けているのがわかります。 - 完成したスクリプトは、以下のとおりです。
# ソースの読み込みと変数への代入 main = AVISource("example.avi").ConvertToRGB32() # ConvertToRGB32() で RGB32 に変換 # ロゴの読み込みと変数への代入(アルファチャンネル付きの PNG 画像を RGB32 デコード) logo = ImageSource("logo.png", pixel_type="RGB32") # Layer で main の上に logo を追加 Layer(main, logo, "add" , x=260, y=180, level=100) # level を調節して半透明に
*1 YUY2 ではなく RGB32 に変換したのは、この後でロゴ画像を RGB32 で読み込んでいるのに合わせたものです。
*2 ImageSource フィルタのデフォルトでは、RGB24 形式でデコードされるため、元の画像のアルファチャンネルは無視されます。
*3 実際には、元の画像のアルファチャンネルの値に level を掛け合わせた値が、上に重ねるクリップのアルファチャンネルの値として使用されます。
最終更新日時: 2014-03-11 (火) 03:51:14 (3862d)