選択範囲の指定方法 のバックアップ差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents
#br
**AviSynthにおける選択範囲の指定 [#o4e79ee6]
AviSynthで選択範囲の指定を行う方法には、次の3つがあります。
-Trimフィルタ
-AddRangeプラグイン
-AddRange関数
-[[Trimフィルタ>#bbe71594]]
-[[AddRangeプラグイン>#ff5fcec1]]
-[[AddRange関数>#w56b7f38]]
#br

**フレーム番号の数え方 [#fe0dd18f]
AviSynthではフレーム番号は0から始まります。編集ソフトによっては1から始まるものもありますので注意してください。~
AviUtlでは、「1から数える」か「0から数える」かをシステム設定で変更することができます(デフォルトは1から)。
#br

**Trimフィルタ [#bbe71594]
AviSynth内蔵フィルタのTrimを使って、選択範囲を指定することができます。
AviSynth内蔵のTrimフィルタを使って、選択範囲を指定することができます。

Trimの書式は、次の2通りです。
Trimフィルタの書式は、次の2通りです。

 Trim(clip clip, int first_frame, int last_frame)
 Trim(clip clip, int first_frame, int -num_frames)

***書式1: Trim(clip clip, int first_frame, int last_frame) [#ub568d60]
-書式: Trim(clip clip, int first_frame, int last_frame)
--clip: クリップ
--first_frame: 選択開始フレーム
--last_frame: 選択終了フレーム
#br
#br
例: 100番のフレームから199番のフレームまでを選択したい場合~
 Trim(100, 199)
#br

***書式2: Trim(clip clip, int first_frame, int -num_frames) [#rb6846ce]
-書式: Trim(clip clip, int first_frame, int -num_frames)
--clip: クリップ
--first_frame: 選択開始フレーム
--num_frames: 選択フレーム数(負の符号が必要)
#br
#br
例: 100番のフレームから100フレーム分を指定したい場合~
 Trim(100, -100)
#br
「100番のフレームから199番のフレームまでを選択」するのと「100番のフレームから100フレーム分を指定」するのは同じことを意味します。~
このため、「Trim(100, 199)」と「Trim(100, -100)」は、まったく同じことを表していることになります。
#br

***書式1において、last_frame=0のとき [#vc16da6c]
選択終了フレーム番号を0にした場合、フレーム番号0ではなくクリップの最後を意味します。~
このため、たとえばフレーム番号0のみ(1フレーム分)を選択したいときは、

 Trim(0, 0)

ではなく、

 Trim(0, -1)

と記述する必要があります。~
「Trim(0,0)」は、0番〜最終フレームまでを選択範囲として指定してしまうからです。
#br

***複数の選択範囲を結合する [#fbb5adc4]
複数の選択範囲をつなげて、一つのクリップとしてエンコードしたい場合には、次のように記述します。

 Trim(A,B) ++ Trim(C,D) ++ Trim(E,F) ...

たとえば、フレーム番号100から199まで、200から299まで、300から399までを一つのクリップにする場合、

 Trim(100,199) ++ Trim(200,299) ++ Trim(300,399)

と書きます。

***+ と ++ の違い [#b43c5c41]
ビデオクリップの結合に使われる符号(演算子)には、+と++があります。

+は映像と音声の同期を考えずに単純に結合します。これに対し、++は映像と音声の長さが合わない場合に、音声をカットしたり無音を挿入することで同期をはかります。

一般的に、AVIファイルなどの結合には+が、Trimフィルタによる選択範囲どうしの結合には++が用いられます。

**AddRangeプラグイン [#ff5fcec1]
Kiraru2002さん作成のAddRangeプラグインを使って、選択範囲の指定を行います。~
VirtualDub、VirtualDubModやNanDubなどの編集設定ファイル(*.vcf)と組み合わせて使用します。

AddRangeプラグインは、Kiraru2002の部屋から入手してください。

-AddRangeプラグイン(Kiraru2002の部屋)
--http://members.at.infoseek.co.jp/kiraru2002/

AddRangeプラグインは、vcfファイル内に次のような記述があるものに対応しています((AddRangeプラグインの説明書からの引用。AddFrameはNanDubのvcfファイルで使われている形式です。AddFrameとAddMaskedRangeはVer0.5以降で対応。))

 VirtualDub.subset.AddRange ( 999 , 999 )
 VirtualDub.subset.AddFrame ( 999 , 999 )
 VirtualDub.subset.AddMaskedRange ( 999 , 999 )

#br
***AddRangeプラグインの使用手順 [#bc7a5b0c]
''(1)AVSファイルを開く''

#ref(open_avs.png)
VirtualDubModで編集したいAVSファイルを開きます((ここではVirtualDubModを使って説明していますが、VirtualDubやNanDubでも同様の手順で行うことができます。))。

フィルタをかけた状態のAVSファイルだとシークが重くなりますので、フィルタをかけないか、必要最低限のフィルタのみ有効にしておくことをおすすめします。
#br

''(2)不要な範囲の削除''

#ref(vdubmod_delete.png)
不要な範囲を選択して、削除していきます。

 (1)選択開始(''[Edit]->[Set selection start]/[Home]'')
 (2)選択終了(''[Edit]->[Set selection end]/[End]'')
 (3)選択範囲の削除(''[Delete]'')(((4)選択範囲をマスク(選択開始フレームと同じ画像に)することもできます。))

(1)(2)(3)(または(4))を繰り返します。
#br

''(3)vcfファイルの保存''

#ref(vdubmod_save_vcf.png)
選択範囲の指定を終えたら、''[File]->[Save processing settings]''から、VirtualDubModの編集設定ファイル(*.vcf)を保存します。

ここでVirtualDubMod上での編集作業は終わりになります。つづいてAVSファイルを再編集します。
#br

''(4)AVSファイルの再編集''

AVSファイルに次の2行を追加します((オートローディング機能を使ってプラグインを読み込む場合、一行目のLoadPlugin()は必要ありません。))。

 LoadPlugin("AddRange_for_25.dll") #Avisynth1.0/2.0用はAddRange.dll
 AddRange("hoge.vcf")

これで、さきほど行った選択範囲の設定が、AVSファイルに反映されます。

#br
***VirtualDub1.5.8/VirtualDubMod1.5.10.1以降におけるvcf保存時の注意 [#e5078fdf]
#ref(vdub_save_option.png)
VirtualDub1.5.8/VirtualDubMod1.5.10.1以降の場合、vcfファイルの保存ダイアログ画面左下にあるチェックボックスを有効にしてください。ここにチェックを入れないと、vcfファイルに選択範囲指定の情報が保存されません。

#br
**AddRange関数 [#w56b7f38]