クリップのプロパティを外部ファイルに書き出す

概要

クリッププロパティ取得用の関数Write 関数を利用することによって、クリップの情報をテキストファイルに書き出すことが可能です。

スクリプトのサンプル

Detect AVS Script Number of frames - Doom9's Forum を元に再構成。

# ソースの読み込みやその他のフィルタの設定など(省略)

# ログファイルの指定
Logfile="C:\foo\bar.log" # 保存先のログファイルのパスに変更

# ここからログファイルの書き出し(引用+コメント追加)
WriteFile(Logfile, """ "Width : " """, "Width()") # クリップの幅
WriteFile(Logfile, """ "Height : " """, "Height()") # クリップの高さ
WriteFile(Logfile, """ "FrameCount : " """, "Framecount()") # フレーム数
WriteFile(Logfile, """ "FrameRate : " """, "Framerate()") # フレームレート
WriteFile(Logfile, """ "FramerateNumerator : " """, "FramerateNumerator()") # フレームレートの分子
WriteFile(Logfile, """ "FramerateDenominator : " """, "FramerateDenominator()") # フレームレートの分母
WriteFile(Logfile, """ "Audiorate : " """, "Audiorate()") # 音声のレート
WriteFile(Logfile, """ "Audiolength : " """, "Audiolength()") # 音声の長さ
WriteFile(Logfile, """ "AudiolengthF : " """, "AudiolengthF()") # 音声の長さ(浮動小数点数)
WriteFile(Logfile, """ "Audiochannels : " """, "Audiochannels()") # 音声のチャンネル数
WriteFile(Logfile, """ "Audiobits : " """, "Audiobits()") # 音声のビット数
WriteFile(Logfile, """ "IsAudioFloat : " """, "IsAudioFloat()") # 音声のビット深度が浮動小数点数なら true
WriteFile(Logfile, """ "IsAudioInt : " """, "IsAudioInt()") # 音声のビット深度が整数なら true
WriteFile(Logfile, """ "IsRGB : " """, "IsRGB()") # RGB なら true
WriteFile(Logfile, """ "IsRGB24 : " """, "IsRGB24()") # RGB24 なら true
WriteFile(Logfile, """ "IsRGB32 : " """, "IsRGB32()") # RGB32 なら true
WriteFile(Logfile, """ "IsYUY2 : " """, "IsYUY2()") # YUY2 なら true
WriteFile(Logfile, """ "IsYV12 : " """, "IsYV12()") # YV12 なら true
WriteFile(Logfile, """ "IsYUV : " """, "IsYUV()") # YUV なら true
WriteFile(Logfile, """ "IsPlanar : " """, "IsPlanar()") # Planar なら true
WriteFile(Logfile, """ "IsInterleaved : " """, "IsInterleaved()") # Interleaved なら true
WriteFile(Logfile, """ "IsFieldBased : " """, "IsFieldBased()") # フィールドベースなら true
WriteFile(Logfile, """ "IsFrameBased : " """, "IsFrameBased()") # フレームベースなら true
WriteFile(Logfile, """ "GetParity : " """, "GetParity()") # トップフィールド(フィールドベース)かトップフィールドファースト(フレームベース)なら true

# 追加
WriteFile(Logfile, """ "HasAudio : " """, "HasAudio()") # 音声があれば true(v2.56 以降)
WriteFile(Logfile, """ "HasVideo : " """, "HasVideo()") # 映像があれば true(v2.56 以降)

# フレーム 0 のみを選択
Trim(0,-1) # シークするごとに出力されるため。

使用上の注意

  • WriteFile 入力用のクリップは、last であるものとします。
  • 上記のサンプルは、ログファイルのパスを変更してから利用してください。
  • 最後の「Trim(0,-1)」を省略すると、プレビュー中にフレーム移動するごとにログが追記されることになります。WriteFile の代わりに WriteFileStart または WriteFileEnd を使用すれば、この行は不要になります(スクリプトのオープン/クローズ時にのみ出力されるため)。
  • クリッププロパティ取得関数の詳細は、ClipProperties を参照。

関数版(InfoToFile)

How to print contents from "info()" to text file - Doom9's Forum より。

ユーザー定義関数化されているため、たびたび使用するような場合はこちらの方が便利でしょう。上記のサンプルより書き出される数は少ないですが、カスタマイズすれば他の情報も書き出すことが可能になります。

function InfoToFile(clip c, string filename)
{
    endl = Chr(10)
    colorspaceStr = "Colorspace: "
    \               + (c.IsYUY2()
    \                  ? "YUY2"
    \                  : (c.IsYV12()
    \                     ? "YV12"
    \                     : (c.isRGB32()
    \                        ? "RGB32"
    \                        : (c.IsRGB24()
    \                           ? "RGB24"
    \                           : "Unknown"))))
    \               + endl
    frameSizeStr = "Frame size: "
    \              + String(c.Width()) + "x" + String(c.Height())
    \              + endl
    fpsStr = "FPS: " + String(c.FrameRate()) + endl
    fieldBasedStr = (c.IsFieldBased()
    \                ? "field-based (separated)"
    \                : "frame-based")
    \               + endl
    audioStr = "Audio: "
    \          + ((c.AudioRate() == 0)
    \             ? "none"
    \             : (String(c.AudioRate()) + " Hz, "
    \                + String(c.AudioBits()) + "-bit, "
    \                + String(c.AudioChannels()) + " channels"))
    \          + endl

    return c.WriteFileStart(filename, "colorspaceStr",
    \                       "frameSizeStr", "fpsStr",
    \                       "fieldBasedStr", "audioStr")
}

関連ページ

外部

サイト内

最終更新日時: 2014-03-11 (火) 03:50:49 (3692d)