お知らせ: にーやんのブログ 2 に移転しました。こちらのブログは、2009 年末までに削除します。

スポンサード リンク

インターレース素材系関数集

これまで、インターレース素材用の関数(フィールド別にフィルタをかける関数など)は、「FP~」と言う名前で紹介していましたが、訳あって(気まぐれで?)、すべての関数の名前を変更し、一部については中身も作り直しました。

個人的にテスト使用していたFPDustV2を放棄したりといったことがあり、この際、紛らわしい名前のもあるし、「え~い、この際だから変えちゃえ~!」みたいな単純な発想だったりします。FPDustV2を放棄したというのも、結局、メタ関数的にするよりも、個々の関数に分けた方がわかりやすいと思っただけです。

といったわけで、個人的な都合で少しいじっただけなのですが、もしかしたら何かの役に立つかもしれないので、公開することにします。

ただし、iFilterとiFilterT以外は、テスト版扱いとします。これらのスクリプトを使用したことによって、何らかの不具合が生じたとしても、私は一切責任を負わないものとします。この条件に同意した方のみ、使用してください。

# ダウンロード

myFunctions.avs のダウンロード(ZIP 形式で圧縮)


# myFunctionsに含まれている関数

  • iFilter: 旧FPFilter
  • iFilterT: 旧FPNR
  • iFilterB: 旧FPResize
  • iF: 上記3つの関数のメタ関数。フィルタのかかり具合の比較などに。
  • iDust: iFilterTのDust特化型。旧FPDust
  • iDustB: iFilterBのDust特化型。旧BobDust
  • AutoBob: AutoDeintを利用したBob。
  • DebugFields: フィールド別表示関数。こちらを参照。
関数名をクリックすると、解説ページに移動します。


# 初期設定

myFunctions.avsの1~5行目の設定を、前もって行ってください。
##### 初期設定 (最初に設定してください)#####
#//--- Bob(60fps化)フィルタの指定(iFilterB、iDustB使用時に必要) ---//
global bbb_filter = "AutoBob()" #kernelbob/dgbobは"kernelbob(order)"と指定可
#//--- DustV5.dllのコピー/リネームしたdllのパス(iDust使用時に必要) ---//
global dustv5_2_dir = "D:\AviSynth\DustV5_2.dll"


# 使用例

Import("myFunctions.avs")
iFilter("KenKunNR()")


# 参考



# 更新履歴

  • ver.0.1(2004-11-29): 初版
  • ver.0.2(2004-11-30):
    • iFilterBのreturn文が間違っていたのを修正。
    • iFilterBの引数resize_filterをfilterに変更。
    • iF関数の追加。
  • ver.0.3(2005-01-13):
    • AutoBob関数をAssumeFrameBasedで返すように変更(LeakKernelBob/KernelBobに倣ったもの)。
  • ver.0.4(2005-02-06):
    • iDust関数で最終フレームが欠ける不具合の修正。
    • iDust/iDustB関数で音声が短くなる場合があったのを修正。
    • FaeryDustMod関数の追加(※インターレース用ではありません)。
  • (2007-10-23 追記)ZIP 形式で圧縮したものに差し替えました。内容に変更はありません。

ユーザー定義関数: FilterArea ver.0.2

FilterArea関数を更新しました。FilterArea関数は、フレーム内の一部分にのみフィルタを適用する関数です。

# 変更点

flipパラメータの追加のみです。

# flipパラメータについて

FilterArea関数は、通常は、x,y,width,heightで指定した範囲にフィルタを適用しますが、flip=trueにすると、指定した範囲の外側にフィルタを適用するようになります。

一部分だけフィルタをかけたくないというような時に便利かもしれません。そのような機会があるかどうかは別にして・・・。

なお、flipパラメータを追加するにあたって、他の部分もいじったため、もしかすると不具合が起こる可能性もあります。もし何か問題があるようでしたら、ご連絡ください。

# 使い方/ダウンロード

詳しい使い方、および、関数のダウンロードは、ユーザー定義関数: FilterAreaからお願いします。

Slideshow4dvd-functions.

Doom9のフォーラムに「Slideshow4dvd-functions.」という関数が投稿されていました。関数自体は、こちらで見ることができます。

実際に試していませんし、関数の中身もチラッとしか見てないので、よくわかりませんが、
With this code it is possible to make a slideshow of images for dvd use.
(このコードにより、DVD用に画像のスライドショーを作ることが可能です。)
ということらしいです。名前のまんまといえば、まんまです。

静止画像からスライドーショーの動画やDVDを作成するソフト(もしくは、そのような機能を持つソフト)って、ありますよね。たしか。

私は、そういうソフトは持ってないのですが、たしかにAviSynthのフィルタを組み合わせれば、似たようなことが出来るかなと。 音声に好きな音楽を使って、お気に入りの画像をスライドさせて・・・(*´Д`)/ヽァ/ヽァ

( ̄□ ̄;)!!ハッ・・・と、取り乱してしまいました。

気が向いたら、私もこういう関数、作ってみようかな。たぶん、作ったっきり、一回も使わなそうな気はしますけど。

ユーザー定義関数: ThumbsView

以前、2ちゃんねるで、複数の画像を並べて静止画として出力できないかという話が出ていたときに作った関数を、少し手直してみました。
個人的には、まったく使う予定はありません(笑)

  • 説明
ビデオクリップの中から、好きなフレームの画像を静止画像として閲覧&出力するための関数。
複数のフレームを分割画面上に配置して、1枚の画像にすることも可能。
AviSynth2.5.5で動作確認(AviSynth2.5.2以降に対応)。

  • ダウンロード
ThumbsView.avs のダウンロード(ZIP 形式で圧縮)

  • 書式
ThumbsView(clip clip, int "f1", int "f2", int "f3", int "f4",
\ int "f5", int "f6", int "f7", int "f8", int "f9", int "f10", int "f11",
\ int "f12", int "f13", int "f14", int "f15", int "f16",
\ int "width", int "height", int "split", bool "output")

  • 引数
    • clip: クリップ
    • f1-f16: フレーム番号(省略時、黒塗り画像)
    • width, height: 画像全体の幅と高さ(デフォルトは元のクリップの大きさ)
    • split: 画面の分割数(1:1枚のみ, 2:4分割画面, 3:9分割画面,4: 16分割画面。デフォルトは2)
    • output: 画像の出力(true: 画像を書き出す, false: 閲覧のみ。デフォルトはfalse)

  • 初期設定
#//--- 初期設定(必ず設定してください) ---//
output_dir = "C:\"
thumbs_extention = "jpg"
  • output_dir: 画像の出力先。
  • thumbs_extention: 画像の種類。bmp、jpg、pngなど(ImageWriterが対応している形式)。

  • 使用例
(1)4分割画面(閲覧のみ)
ThumbsView(0,1,2,3, split=2)
0,1,2,3フレームを指定して、4分割画面(split=2)に配置。


サンプル画像

ThumbsView(0,1,2, split=2)

フレーム指定(f*)を省略した場合、黒のブランク画像になる。

(2)9分割画面(画像出力あり)
ThumbsView(0,1,2,3,4,5,6,7,8, split=3, output=true)
output=trueで静止画像を出力します。
あらかじめ、初期設定で、画像の出力先と出力形式を指定しておく必要があります。


サンプル画像

(2007-10-23 追記)ZIP 形式で圧縮したものに差し替えました。内容に変更はありません。

ユーザー定義関数: FilterArea

2ちゃんねるのAvisynthスレッドで、画面の一部分にだけフィルタをかける方法が話題に上がっていたので、試しに関数を作ってみました。

以前(AvisynthスレッドのPart15で)、同じ話が出た時に少し考えていたものなのですが、その時は、別の方がApplyZoneという関数()を作られていたので、私は実際には作りませんでした。

では、なぜ今、(ApplyZoneがあるにも関わらず)作ったのかというと・・・気まぐれです(笑)

ApplyZoneとの違いは、LayerではなくOverlayを使ってるのでYV12でも通る点と、デバッグ(調整)モードくらいでしょうか。
十分にテストしたわけではありませんので、ApplyZoneを使った方が無難かもしれません。

# 更新履歴

  • ver 0.1: 2004-09-19 初版
  • ver 0.2: 2004-11-19 flipパラメータの追加

# ダウンロード

FilterArea.avs(ZIP 形式で圧縮) (ver 0.2)

# 引数

  • filter: 使用したいフィルタ(必須)。
  • x, y: フィルタをかける位置(デフォルト: 0)。
  • width: フィルタをかける範囲の横幅(デフォルト: 32)。
  • height: フィルタをかける範囲の高さ(デフォルト: 32)。
  • flip: 反転モード。trueで指定した範囲の外側にフィルタを適用(デフォルト: false)。
  • debug; デバッグ(位置調整)モード(デフォルト: false)。

# 使い方

まず、使用したいフィルタ(下の例ではblur()を使っています)とdebug=trueだけ指定します。
FilterArea("blur(1)", debug="true")

すると、このように画面左上に赤い四角形が現れます。
この赤い四角形が、フィルタをかけたい範囲に来るように、x, y, width, heightを調整します。


x, y, width, heightで指定するのがどこになるのかというと、上の図のような感じ。
たとえば、x=16, y=16, width=32, height=32だとすると、次のように記述します。
FilterArea("blur(1)", 16, 16, 32, 32, debug="true")
指定したい範囲に四角形が重なったら、debug=trueを外します(もしくはdebug=false)。
FilterArea("blur(1)", 16, 16, 32, 32)
こんな感じです。

ちなみに、widthとheightは、念のため、8の倍数でなければエラーが出るように設定してあります。
もし、この制限が嫌な場合は、「エラー対策」の部分を削除してください。
ただし、フィルタによって16の倍数じゃないとダメなのとか、逆に何も制限がないのとかあるかもしれないので、そのあたりはフィルタの説明書を参考にしてください。

※ApplyZoneは、このあたりにあります(一番最新のは190以降だと思われます)。

Page 7 of 8: « 1 2 3 4 5 6 7 8