トップ(ボトム)フィールドにのみロゴが表示されるフレームがあることがあります。そのロゴを消すためには、トップ(ボトム)フィールドにのみEraseLogoフィルタを適応する必要があります。それを簡単にやってくれる関数を紹介します
更新履歴
2020/11/16 動作が軽いスクリプトに変更し忘れてたので反映
導入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function delogo(clip clip, int "start", int "end", bool "fhf", bool "bhf", int "fadein", \ int "fadeout", string "logofile", string "logoname") { start = Default( start, 0) end = Default( end, -1) fhf = Default( fhf, false) bhf = Default( bhf, false) fadein = Default( fadein, 0) fadeout = Default( fadeout, 0) clip = clip.GetParity() ? clip.AssumeTFF() : clip.AssumeBFF() src_sep = clip.SeparateFields() delogo = clip.EraseLogo(start=start, end=end, fadein=fadein, fadeout=fadeout, \ logofile=logofile, logoname=logoname) delogo_sep = delogo.SeparateFields() ret = fhf && bhf ? src_sep.Trim(0, start==0?-1:start*2 ) ++ delogo_sep.Trim(start * 2 + 1, end * 2 ) ++ src_sep.Trim(end * 2 + 1 , 0) \ : fhf ? src_sep.Trim(0, start==0?-1:start*2 ) ++ delogo_sep.Trim(start * 2 + 1, 0) \ : bhf ? delogo_sep.Trim(0, end * 2) ++ src_sep.Trim(end * 2 + 1 , 0) \ : nop() return fhf || bhf ? ret.Weave() : delogo } |
上記のコードをavsファイルの最後にコピペするか、別ファイルに保存してインポートすると使えるようになります
avsの最後に記述
return lastの後にコピペしてください
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
v = LWLibavVideoSource( "xxxx.ts", dr=true, repeat=true, dominance=1 ).AssumeFPS( 30000, 1001 ) v = v.height() == 1088 ? v.crop( 0, 0, 0, -8 ) : v a = LWLibavAudioSource( "a", av_sync=true ) AudioDub( v, a ) return last function delogo(clip clip, int "start", int "end", bool "fhf", bool "bhf", int "fadein", \ int "fadeout", string "logofile", string "logoname") { start = Default( start, 0) end = Default( end, -1) fhf = Default( fhf, false) bhf = Default( bhf, false) fadein = Default( fadein, 0) fadeout = Default( fadeout, 0) clip = clip.GetParity() ? clip.AssumeTFF() : clip.AssumeBFF() src_sep = clip.SeparateFields() delogo = clip.EraseLogo(start=start, end=end, fadein=fadein, fadeout=fadeout, \ logofile=logofile, logoname=logoname) delogo_sep = delogo.SeparateFields() ret = fhf && bhf ? src_sep.Trim(0, start * 2 ) ++ delogo_sep.Trim(start * 2 + 1, end * 2 ) ++ src_sep.Trim(end * 2 + 1 , 0) \ : fhf ? src_sep.Trim(0, start==0?-1:start*2 ) ++ delogo_sep.Trim(start * 2 + 1, 0) \ : bhf ? delogo_sep.Trim(0, start==0?-1:start*2) ++ src_sep.Trim(end * 2 + 1 , 0) \ : nop() return fhf || bhf ? ret.Weave() : delogo } |
このようにreturn last後に記述すると、このavs内で使えるようになります
別ファイルに保存してインポート
コピペしたものを”delogo.avsi”として保存したものとします
1 2 3 4 5 6 7 8 |
Import("C:\xxxx\delogo.avsi") v = LWLibavVideoSource( "xxxx.ts", dr=true, repeat=true, dominance=1 ).AssumeFPS( 30000, 1001 ) v = v.height() == 1088 ? v.crop( 0, 0, 0, -8 ) : v a = LWLibavAudioSource( "a", av_sync=true ) AudioDub( v, a ) return last |
1行目でインポートしています。このようにインポートすると使えるようになります
使い方
EraseLogo()の代わりにDelogo()を使います
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Import("C:\xxxx\delogo.avsi") v = LWLibavVideoSource( "xxxx.ts", dr=true, repeat=true, dominance=1 ).AssumeFPS( 30000, 1001 ) v = v.height() == 1088 ? v.crop( 0, 0, 0, -8 ) : v a = LWLibavAudioSource( "a", av_sync=true ) AudioDub( v, a ) Trim(3026,43095)++Trim(45194,87569) logo = "xxx" Delogo(logofile="C:/aviutl/logodata.ldp",logoname=logo, start=0+0, fadein=0, end=40069-30, fadeout=0, fhf=true, bhf=true) Delogo(logofile="C:/aviutl/logodata.ldp",logoname=logo, start=40070+0, fadein=0, end=82445-30, fadeout=0, fhf=false, bhf=true) return last |
fhfをtrueにすると、startのフレームの片方のフィールドにのみEraseLogoを適用します。bhfをtrueにすると、endのフレームの片方のフィールドにのみEraseLogoを適用します
この例だと[0, 40039, 82415]の4フレームは片方のフィールドにのみEraseLogoが適用されます
マクロを使う
前の記事の透過性ロゴ除去で紹介したマクロを使ってDelogo関数を挿入することができます
1 2 3 4 |
# -- マクロ設定 ----------------------------------------------- # logodata.ldpのパス "\マーク" は使わず "/" でパスを表現してください LDP_FILE = "C:/aviutl/logodata.ldp" DELOGO = 1 # Delogo関数を使う場合は1にする |
マクロを開いて、DELOGO = 0 を DELOGO = 1に書き換えて保存してください。すると、マクロ実行時にEraseLogo()ではなくDelogo()が挿入されるようになります
AvsPmodに関数を登録
この作業は特に必須でもないのですが、登録をするとAvsPmodのユーザースライダーにDelogo関数を出現させることができるようになります。手順を紹介します
オプション → AviSynth関数の定義 とすすみます
ユーザー定義関数タブに開き、新規追加をクリックします
引数に以下を入力します
1 2 3 4 5 6 7 8 9 10 11 |
( clip "clip", string "logofile", string "logoname", int "start"=0, int "fadein"=0, int "end"=0, int "fadeout"=0, bool "fhf"=False, bool "bhf"=False ) |
登録すると、自動補完ができるようになり、ユーザースライダーにも表れるようになります
コメント