AddRange のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents

**説明 [#k723509e]
* 説明 [#k723509e]
AddRange関数は、VirtualDub(VirtualDubMod含む)の編集設定ファイル(vcfファイル((VirtualDub Configuration File)))を利用して、選択範囲を指定するための関数です。2ちゃんねるDTV板「DivX & Avisynth を絶賛しよう 3」スレッドの236さんが作成されました。

同名の[[AddRangeプラグイン>選択範囲の指定方法#ff5fcec1]]と同様の機能を持つ関数ですが、使用方法は異なります。詳しくは、下記[[使用例]]をご覧下さい。
同名の[[AddRangeプラグイン]]と同様の機能を持つ関数ですが、使用方法は異なります。詳しくは、下記の[[使用例>#ycb635c3]]をご覧下さい。

**関数 [#qba210f7]
 function AddRange(clip clip, int "startframe", int "offset")
 {
 return clip.Trim( default(startframe,0), ((default(offset,0)==0) ? 0 : startframe+offset-1) )
 }
* 関数 [#qba210f7]

**書式 [#se2081e2]
 AddRange(clip clip, int "startframe", int "offset")
** オリジナル版 [#s4c3d7ed]

#pre{{
function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( default(startframe,0), ((default(offset,0)==0) ? 0 : startframe+offset-1) )
}
}}

** 簡略化版 [#p63fdb6f]

#pre{{
function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( startframe, -offset)
}
}}

こちらを使用する場合は、AviSynth 2.0.7以降を使用してください。((AviSynth 2.0.7よりも古いバージョンには、Trimの2つ目の引数が負の値の場合に、正しい値が適用されないバグがあるため。))

* 書式 [#se2081e2]

#pre{{
AddRange(clip clip, int "startframe", int "offset")
}}

-引数
--startframe: 開始フレーム
--offset: オフセット

**使用例 [#ycb635c3]
***1.vcfファイルの作成 [#o57ab562]
* 使用例 [#ycb635c3]

** 1.vcfファイルの作成 [#o57ab562]

まず、VirtualDub上で編集作業を行い、vcfファイルを出力します。

vcfファイルの作成方法については、[[AddRangeプラグインの使用手順>選択範囲の指定方法#bc7a5b0c]]の(1)〜(3)を参考にしてください。
#br
vcfファイルの作成方法については、[[AddRangeプラグインの使用手順>AddRangeプラグイン#bc7a5b0c]]の(1)〜(3)を参考にしてください。

***2.AddRange()の抽出 [#b6d3d9d6]
** 2.AddRange()の抽出 [#b6d3d9d6]

#ref(dd_vcf.png)
1で作成したvcfファイルを、メモ帳で開きます。~
メモ帳のウィンドウ上に、vcfファイルのアイコンをドラッグ&ドロップするなどして開いてください。

#ref(vdubmod_vcf.png)
1で作成したvcfファイルを、メモ帳で開きます。メモ帳のウィンドウ上に、vcfファイルのアイコンをドラッグ&ドロップするなどして開いてください。

vcfファイルには

 VirtualDub.subset.AddRange ( *** , *** )
のように記された部分が含まれていると思います(([[VirtualDub1.5.8/VirtualDubMod1.5.10.1以降におけるvcf保存時の注意>#e5078fdf]]を参照。))。

のように記された部分が含まれていると思います。もし含まれていない場合は、[[オリジナルFAQ]]の「[[AddRangeプラグインが使えません>オリジナルFAQ#vc737b3a]]」を参照。

#ref(vdubmod_vcf.png)

このうち、AddRange()の部分(図の赤丸で囲んでいる部分)((最後の;(セミコロン)は必要ありません。))をコピーして、AVSファイル内の選択範囲を指定したい行に貼り付けてください。

選択範囲が複数ある場合は、次のように++(または+)で連結する形で、記述します。
 AddRange(0,6) ++ AddRange(13,3) ++ AddRange(20,4)
#br
選択範囲が複数ある場合は、次のように + または ++で連結する形で記述します。+ と ++ の違いについては、[[オリジナルFAQ]]の「[[+と++の違いは何ですか?>オリジナルFAQ#g2436d0e]]」を参照。

***3.スクリプトの変更 [#v6b9693c]
 AddRange(0,6) + AddRange(13,3) + AddRange(20,4)

vcfファイル内のAddRange()をすべてコピー&ペーストすることができたら、今度は、AddRange関数をスクリプト内に貼り付けます((あらかじめ記述しておいてもかまいません))。~
関数を貼り付ける位置は、どこでもかまいません。
** 3.スクリプトの更新 [#v6b9693c]

#ref(addrange_f_avs.png)
AddRange関数の使用例。
AddRange関数をスクリプト内の任意の位置に貼り付けるか、別途、関数定義ファイルにして[[Import]]します。

AVSファイルを上書き保存すれば、VirtualDub上での編集作業が適用された状態になります。
-使用例1: 1スクリプト内に記述する場合
#pre{{
AddRange(0,6) + AddRange(13,3) + AddRange(20,4)

function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( default(startframe,0), ((default(offset,0)==0) ? 0 : startframe+offset-1) )
}
}}

-使用例2: 外部ファイル化して[[インポート>Import]]する場合
#pre{{
Import("AddRange.avs")
AddRange(0,6) + AddRange(13,3) + AddRange(20,4)
}}

あとは、AVSファイルを上書き保存して、VirtualDubで開きなおしてください。VirtualDubModを使用している場合は、スクリプトエディタ上で[F5]キー(または[F7]キー)を押すことで、選択範囲が適用されます(([F5]キーで正常に選択範囲が反映されない場合は、AVSファイルを開き直してみてください。))。