「プロセス内の計算式・代入変数について」の編集履歴(バックアップ)一覧に戻る
プロセス内の計算式・代入変数について」を以下のとおり復元します。
プログラム実行時に入力ソースを指定した時点で、入力ソースをmediainfoで解析が実行され、それで得た様々な動画パラメータを、#名称# という記述方式の代入変数により、エンコーダーのオプションに繰り入れる事ができます。
さらにコマンド内に{{ 計算式 }}という記述を挟み込む事により、代入変数も利用した様々な計算式でオプション数値を動的に決定する事が可能です。

**具体的な記述方法
初期テキストを例にして解説します。
 <Title>CROP:黒帯オートカット</Title>
 <Pre>
 ct = if_( #V_CropTop# > 0, "-croptop " &Even( #V_CropTop# )&" ", "" )
 cb = if_( #V_CropBottom# > 0, "-cropbottom " &Even( #V_CropBottom# )&" ", "" )
 asp = round( #V_Width#/( #V_Height#-#V_CropTop#-#V_CropBottom# )*#V_PAR#,3 )
 vw = min( #V_Width#, 640 )
 vh = min( Even( #V_Height# - #V_CropTop# - #V_CropBottom# ), 480 )
 s = if_( #vw# = #V_Width#, "", "-s #vw#x#vh# " )
 ab = min( 128,int( #A_BitRate# /1024 ) )
 </Pre>
 <Command>
 ffmpeg.exe -y -i "#InputFile#" -vcodec mpeg4 -qscale 5
  #ct##cb##s#-aspect #asp# -acodec libfaac -ab #ab#k
  -threads 8 "#OutPath##FileName#.mp4"
 </Command>
  
・・・というスタイルで、タイトルから次のタイトルまでの間が1ブロックとなります。記述ルールは以下の通り。
**<Title>タグ
プロセスのタイトルのタイトルを示します。もちろん必須です。
このタグ内のみ改行は不可です。基本的にこのプログラム内ではコマンド番号という概念が無いので、このタイトル以外にプロセス指定をする手段が無く、他のプログラム等から呼び出す場合を考えると、一旦決めたらあまり変更できない部分・・・なんですが、タイトル内に「:」(半角コロン)を入れる事により、他のプログラムやバッチファイルからの起動はコロンの左側のみを記述すれば、コロンの右側は比較的自由に書き換える事が可能になります。つまりコロンの左側はをID的な意味を持つと考えれば良いと思います。
例では、「CROP」もしくは「CROP:黒帯オートカット」というタイトル指定で選ばれる事になります。

**<Choose>タグ
キーワード自動選択タグです。必須ではありません。
このタグ内に記述された文字列が入力ファイルのフルパス名内に入っていた場合、半強制的にそのタイトルプロセスが選択されます。つまり、入力ファイルのフォルダによってプロセスを自動選択させる手段として便利です。
但し、<ChooseAutoRun>タグでの指定が1か0かによって、その動作に若干の差異があります。
キーワードは「;」(セミコロン半角)もしくは改行を挟む事により複数の指定が可能です。
例では、「ダウンロード」と「レター」という文字列のどちらかが、ファイル・フォルダ名がフルパス内にあれば自動選択されます。

**<Pre>タグ
このタグは変数を扱いたい場合に指定します。必須ではありません。
以下の<Command>タグ内も含めて、計算式に繰り入れる代入変数は入力ファイルデータしか指定できず、例えば出力ビットレート「-b」を特定の計算式で求めて、「-maxrate」をその1.5倍にしたいとしても、「-b」で得られた計算結果を「-maxrate」の計算式に組み込めないので、「-maxrate」は「-b」の計算式x1.5という書き方になってしまい、<Command>タグ内に同じ計算式が何度も書かれる事態となり、非常に見難くなってしまいます。
そこでこの<Pre>タグ内に例えば<-b>の計算式を「B」という変数に計算させておき、それを<Command>内に「#B#」という代入変数で置き換えると、全体的に見通しが良くなります。
変数は上から順に処理されるので、Preタグ内でも上で入力された変数を下の変数の計算式に繰り入れる事が可能です。
例の<Pre>タグ内の解説は計算式の項で詳しく解説します。

**<Command>タグ
ここがメインのプロセスとなります。必須です。
書き方はバッチファイル同様、単純に1行ずつ上から実行されます。但し、行頭が半角スペースの場合に限り、前の行の続きとして解釈されます。つまり例えば、
 ffmpeg -y -i "hogehoge.mpg"
  -s 640x480
  -b 1024k
これは1行として処理されます。横長になりすぎないように見やすく記述できます。
また、単純な改行での行間開けも可能です。ただし改行後に文字は入れられません(改行後の文字は次のコマンドと解釈される)。

**その他
-各ブロックに順番指定番号等は特に無いので、自由にコピーペースト等でブロックとブロックの間に新しいブロックを追加ができます。
-各ブロック内のタグの順番は、タイトルが先頭という以外は特に決まりはありません。
-{{ }}内の半角スペースはよほどあっても問題になりませんが、その中に全角スペースが紛れているとエラーが起こります。文字列データとして扱う部分(""で囲まれた所)であれば問題ありませんが、計算式の途中の大量の半角スペースにまぎれてハマってしまうかもしれないのでご注意ください。

復元してよろしいですか?

目安箱バナー