AviSynthでロゴファイルを自動選択する

スポンサーリンク
スポンサーリンク
エンコード

動画ファイルのパスに含まれる局名を探してロゴファイルを自動選択します。

スポンサーリンク
スポンサーリンク

スクリプト

src = "D:\ts\sample.ts"
LWLibavVideoSource(src)
AudioDub(last, LWLibavAudioSource(src, av_sync=true))

# ロゴファイルの自動選択
lgd = \
FindStr(src, "日テレ") > 0 ? "C:\lgd\日テレ 1440x1080.lgd" : \
FindStr(src, "テレビ朝日") > 0 ? "C:\lgd\テレビ朝日 1440x1080.lgd" : \
FindStr(src, "TBS") > 0 ? "C:\lgd\TBS 1440x1080.lgd" : \
FindStr(src, "テレビ東京") > 0 ? "C:\lgd\テレビ東京 1440x1080.lgd" : \
FindStr(src, "フジテレビ") > 0 ? "C:\lgd\フジテレビ 1440x1080.lgd" : \
""

EraseLOGO(logofile=lgd, start=0, end=-1, interlaced=true)

return last

解説

FindStrはAviSynthの内蔵関数です。
書式は FindStr(string, substring) です。

stringの中にあるsubstringの位置を返します。見つからない場合は0を返します。

つまり見つかる場合は必ず0より大きい数字を返すので、これを利用して条件分岐します。

今回stringに指定しているのはsrcです。
srcは1行目で定義している変数で、動画ファイルのパスが入っています。

例えば動画ファイルのパスに「日テレ」という文字列があれば、lgdに”C:\lgd\日テレ 1440×1080.lgd”を指定する、という意味になります。

使い方

上記のように書いてもいいですが、自動選択の部分を拡張子.avsiにして、インポートして使った方が管理しやすいと思います。

lgd = \
FindStr(src, "日テレ") > 0 ? "C:\lgd\日テレ 1440x1080.lgd" : \
FindStr(src, "テレビ朝日") > 0 ? "C:\lgd\テレビ朝日 1440x1080.lgd" : \
FindStr(src, "TBS") > 0 ? "C:\lgd\TBS 1440x1080.lgd" : \
FindStr(src, "テレビ東京") > 0 ? "C:\lgd\テレビ東京 1440x1080.lgd" : \
FindStr(src, "フジテレビ") > 0 ? "C:\lgd\フジテレビ 1440x1080.lgd" : \
""
src = "D:\ts\sample.ts"
LWLibavVideoSource(src)
AudioDub(last, LWLibavAudioSource(src, av_sync=true))

# 自動選択スクリプトの読み込み
Import("C:\lgd\lgd.avsi")

EraseLOGO(logofile=lgd, start=0, end=-1, interlaced=true)

return last

変数の名前(lgd、src)は他の名前でも構いません。

局名は人によって違うと思います。適切な名前を指定してください。

ロゴファイルのパスも適切に指定してください。

自動選択の一番最後の””はどの文字列も見つからなかった場合のものなので、忘れずに。
書かないとエラーになります。

注意事項

探す文字列について

全角、半角、大文字、小文字は区別されます。
「TBS」「TBS」「tbs」など。

どれでもいけるように全パターン書いておくのもありです。

lgd = \
FindStr(src, "TBS") > 0 ? "C:\lgd\TBS 1440x1080.lgd" : \
FindStr(src, "TBS") > 0 ? "C:\lgd\TBS 1440x1080.lgd" : \
FindStr(src, "tbs") > 0 ? "C:\lgd\TBS 1440x1080.lgd" : \
""

順番について

上から試していくので、例えば「日テレ」と「BS日テレ」など局名が似ている場合、「日テレ」→「BS日テレ」としていると、BS日テレの番組に日テレのロゴが適用されてしまいます。

そのため似ている局名がある場合は、局名が長い方を上にするようにしてください。

インポートする位置

FindStrで変数から探すので、当然変数定義する前にインポートするとエラーになります。

スポンサーリンク
スポンサーリンク
エンコード
thtsfをフォローする
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました