AviSynth版成分解析もどき
AviSynth スクリプトによる成分解析もどきです。
1フレームにまとめて結果を出力する「成分解析もどき(seibunkaiseki_modoki)」と、高橋メソッド風のAviSynthスクリプトのような動画を作成できる「成分解析ムービー(seibunkaiseki_movie)」の 2 種類があります。
「AviSynth版」「AviSynth スクリプトによる」と書きましたが、実際には、処理のほとんどを JScript(JavaScript)に投げています。ネタ半分、AviSynth と Windows Script の連携のデモンストレーション半分といった感じで考えてください。
ダウンロード
AviSynth版成分解析もどき(seibunkaiseki_modoki_20060509.zip)(2006-05-09 更新)
含まれているもの
- 成分解析もどき(seibunkaiseki_modoki)用
- seibunkaiseki_modoki.avs: 成分解析もどきの AviSynth スクリプトファイル。1 フレームにまとめて結果を出力。結果を静止画保存可能。
- seibunkaiseki_modoki.js: seibunkaiseki_modoki.avs で使用する JScript ファイル。
- 成分解析ムービー(seibunkaiseki_movie)用
- seibunkaiseki_movie.avs: 成分解析+高橋メソッドみたいな動画を作成する AviSynth スクリプトファイル。
- seibunkaiseki_movie: seibunkaiseki_movie.avsで 使用する JScript ファイル。
- 共通
- 成分定義ファイルのサンプル。成分を定義するときは、1 行に 1 成分という形で指定。
使い方
AviSynth をよく知らない人でも、keyword(解析対象語句)さえ変更すれば、実行できるようになっています。手順は、以下のとおりです:
- メモ帳などのテキストエディタで avs ファイルを開く。
- 1 行目の keyword を解析したい単語に変更して、保存。必要があれば、他の項目も変更する。
- AviSynth に対応しているソフトウェアで avs ファイルを開く。
細かい設定については、avs ファイルの中のコメントを参考にしてください。
参考
AviSynthのダウンロード、インストールと avs ファイルを開く手順については、以下のページを参考にしてください。
サンプル
- 「成分解析もどき(seibunkaiseki_modoki)」の実行例
!「成分解析もどき(seibunkaiseki_modoki)」の実行例
- 「成分解析ムービー(seibunkaiseki_movie)」の実行例
- サンプル動画(MPEG-1, 744KB)
使用上の注意
- Windows XP(SP2), AviSynth 2.5.6a, VirtualDubMod 1.5.10.2 で動作確認しています。
- ただし、これらのスクリプトを実行したことにより何らかの不都合が生じたとしても、作者(にーやん)は責任を負わないものとします。
- 動作は、やや重いです。メディアプレイヤーでのリアルタイム再生には(たぶん)向いていません。いったん別の形式(MPEG など)に変換してから、視聴したほうがいいでしょう。
- JScript はよくわからないので、かなり適当です。見る人が見たら、無茶苦茶なはず・・・。
- ★ カ ド ル コ ア 世 代 ☆の成分解析にヒントを得て作成しました。解析の仕組みなどは異なります。あくまでも「もどき」です。
更新履歴
- 2006-04-13: 初版。
- 2006-05-09: seibunkaiseki_modoki.js の関数 seibunkaiseki_modoki において、引数 clip が内部処理で使われていなかったのを修正。seibunkaiseki_modoki.avs をいじらなければ、前の版のままでも動きます。
ShowTimeCode 関数を更新
タイムコード表示用関数の ShowTimeCode と ShowTimeCodeEx を更新しました。最新版では「オフセット指定」と「表示形式の選択」が可能になっています。
AviSynth スクリプト・ファイルは、にーやんのブログ :: ShowTimeCode - タイムコードを表示する関数からダウンロードすることができます。
オフセット指定
新たに追加された offset パラメータにより、オフセットを指定することができます。また、nowtime=true とすることで、システム時間をオフセットとして利用することも可能です。これらは、DigitalClock24 関数 の機能を移植したものです。
使用例: オフセットを指定
# offset は小数で指定可能
ShowTimeCode(font="7barP", size=20, text_color=$ffffff, offset=60*59+59+0.99)
使用例: システム時間の取得
# nowtime=true でシステム時間を取得
ShowTimeCode(font="7barP", size=20, text_color=$ffffff, nowtime=true)
表示形式の選択
mode パラメータと ms_digit パラメータを利用することによって、表示形式を選択することができます。
mode パラメータで指定可能な形式は、以下の通りです:
- "ts"
- "ts.ms" または "ts:ms"
- "ss"
- "ss.ms" または "ss:ms"
- "mm:ss.ms" または "mm:ss:ms"
- "hh:mm:ss.ms" または "hh:mm:ss:ms"
- "mm:ss"
- "hh:mm:ss"
hh は「時間」、mm は「分」、ss は「秒」、ms は「ミリ秒」を表します。また、ts を指定すると、総経過時間を秒数で表します。ミリ秒の左の記号は「.(ドット)」か「:(コロン)」のいずれか指定したほうが使用されます。
ms_digit は、ミリ秒単位を表示する場合に、その表示する桁数を指定するためのパラメータです。1 から 3 までの整数が指定可能です。
使用例: 表示モードの選択
# mode="mm:ss"(分:秒)
ShowTimeCode(font="7barP", size=20, text_color=$ffffff, mode="mm:ss")
使用例: ミリ秒単位の桁数を指定
# ms_digit=3 なら 1000 分の 1 秒まで表示
ShowTimeCode(font="7barP", size=20, text_color=$ffffff, mode="hh:mm:ss.ms", ms_digit=3)
DigitalClock24: デジタル時計風の字幕を追加する関数
DigitalClock24 は、ビデオクリップ上にデジタル時計風の字幕を追加する AviSynth 用の関数です。
再生すると、1 秒進むごとに字幕の時間も 1 秒ずつ増えていき、24 時間ごとに 0 にリセットされます。オフセット(秒単位)を指定して任意の時間からカウントを開始したり、システム時間からカウントするように設定することも可能です。

フォントを調整すれば、このように海外ドラマ「24」みたいな感じにすることもできます。
(2006-02-11 追記)ShowTimeCode 関数にも、オフセットとシステム時間の取得機能を追加しています。これにより、ShowTimeCodeでも、DigitalClock24 と同等のことが実現可能になりました。
ダウンロード
DigitalClock24.avs(ZIP 形式で圧縮)
(2007-10-23 追記)ZIP 形式で圧縮したものに差し替えました。内容に変更はありません。
使用例
基本的な使い方は Subtitle フィルタと同じです。
ここでは、Subtitle にはない offset と nowtimeという 2 つのオプションの使用例のみ紹介しておきます。
offset, nowtime 指定なし
Import("DigitalClock24.avs") # AVSのインポート
BlankClip(150,320,240,fps=29.97) # ソースクリップ
DigitalClock24(80, 130, "7barP", 48, $ffcc33)
サンプル動画 1 (MPEG-1, 5秒, 254KB)
offset のみ指定
Import("DigitalClock24.avs") # AVSのインポート
BlankClip(150,320,240,fps=29.97) # ソースクリップ
DigitalClock24(80, 130, "7barP", 48, $ffcc33, offset=60*60*23+60*59+56)
サンプル動画 2 (MPEG-1, 5秒, 254KB)
offset は秒単位で指定します。この場合、60*60*23+60*59+56 秒、つまり 23 時間 59 分 56 秒を追加した状態から、カウントが開始されます。
nowtime のみ指定
Import("DigitalClock24.avs") # AVSのインポート
BlankClip(150,320,240,fps=29.97) # ソースクリップ
DigitalClock24(80, 130, "7barP", 48, $ffcc33, nowtime=true)
サンプル動画 3 (MPEG-1, 5秒, 254KB)
nowtime=true に設定すると、システム時間が開始時間として設定されます。MediaPlayerで再生すれば、デジタル時計としても使えるかもしれません。
使用上の注意
- AviSynth がインストールされている必要があります(AviSynth 2.5.6a で動作確認)。
- 使用するときは、DigitalClock24.avs をメインの AVS ファイルにインポートしてください(上記の使用例を参照。DigitalClock24.avs と メインの AVS を同じディレクトリに置けば、パス指定の必要はありません)。
- 動作無保証。
謝辞
サンプル動画とサンプル画像用に、TRO庵の7セグメントフォント SEVENBAR を使わせていただいています。
ShowCountDown関数: ビデオクリップ上にカウントダウンを表示
すっかり放置気味のブログですが、2005年の最後に小ネタを 1 つ行っときます。
概要
ShowCountDown は、ビデオクリップ上にカウントダウンを表示する関数です。
大晦日のカウントダウンイベントにご利用ください。嘘です。
ダウンロード
関数定義ファイル(ShowCountDown.avs)(ZIP 形式で圧縮)
使用上の注意
- AviSynth がインストールされている必要があります(AviSynth 2.5.6a で動作確認)。
- ShowCountDown.avs をメインのスクリプトにインポートして使用してください。
- メインの ShowCountDown 関数と、_ShowCountDown 、SetCDStart 、SetCDEnd の3つのサブ関数から構成されています。ShowCountDown 関数単体では動作しません。
- 再帰(Recursive)関数を使用しています。直接メディアプレイヤーで再生するのではなく、別の動画形式に変換してから再生することをおすすめします。
- 例によって動作無保証。
書式
ShowCountDown(clip c, int n, int "x", int "y", int "start", int "end",
\ string "font", int "size", int "text_color", int "halo_color", bool "show_zero")
引数
- n : カウントを開始する数。(例)n=5なら、5,4,3 ... とカウントする。
- x , y : 数字を表示する位置。
- start : 表示開始フレーム(デフォルト 0)。
- end : show_zero=true のとき、0 の表示を終了するフレーム。
- font : フォント(デフォルト "Arial")。
- size : フォントの大きさ(デフォルト 18)。
- text_color : フォントの色(デフォルト $FFFF00)。
- halo_color : フォントの縁の色(デフォルト $000000)。
- show_zero : 0 を表示するかどうかの選択(デフォルト true)。
n 以外の引数は省略可能です。
使用例
Import("ShowCountDown.avs")
BlankClip(180, 320, 240, fps=29.97)
ShowCountDown(5, x=135, y=70, font="7barP", size=96, text_color=$ffffff)
return last
サンプル動画

サンプル動画のスクリプト(ZIP 形式で圧縮)
example_showcountdown.avs と ShowCountDown.avsを同じディレクトリに置いてください。mojimoji関数も必要です。
謝辞
サンプル動画では、TRO庵の7セグメントフォント SEVENBAR を使わせていただいています。
(2007-10-23 追記)AVS ファイルは、すべて ZIP 形式で圧縮したものに差し替えました。内容に変更はありません。
ShowTimeCodeEx: SubtitleExプラグインを使用したタイムコード表示関数
AviSynth Wiki - ShowTimeCode にページを設置しました。最新の情報およびダウンロードは、AviSynth Wiki - ShowTimeCode を参照してください。
ShowTimeCode.avsを更新しました。今回から、SubtitleExプラグインを使用するバージョンの ShowTimeCodeEx 関数を追加しています(そのほかの変更点は、前のエントリを参照)。
ダウンロード
にーやんのブログ :: ShowTimeCode - タイムコードを表示する関数からダウンロードしてください。
基本的な使用方法は、ShowTimeCode 関数と同じです。ダウンロードしたら、ShowTimeCode.avs にリネームして、メインのスクリプトにインポートして使用してください。
別途、SubtitleExプラグインが必要となります。SubtitleExプラグインは、AviSynth Filter Collection からダウンロードできます。
ShowTimeCode との違い
- SubtitleExプラグインを使用。
- これにより、文字をイタリック体にしたり、ぼかしやエンボス加工などの効果を与えることができます。
- align, spcは使用不可能。
- SubtitleEx プラグインには、Subtitleフィルタのalign, spcが存在しません。そのため、ShowTimeCodeEx でも、これらの引数は指定できません。
書式
ShowTimeCodeEx(clip c, int "x", int "y", string "font",
\ string "effects", int "size", int "textcolor", int "halocolor")
引数
- x, y: 文字の x, y 座標(デフォルト: x = -cの幅 * 0.11, y = -cの高さ * 0.17)。
- font: フォント(デフォルト: "Arial")。
- effects: SubtitleEx の effects(デフォルト: "b")。
- "b" - 太字
- "i" - イタリック体
- "u" - アンダーライン
- "c" - 中央寄せ
- "s" - ソフトぼかし
- "g" - ガウシアンぼかし
- "e" - エンボスフィルタ
- "l" - ラプラシアンフィルタ(エッジ検出)
- size: 文字のサイズ(デフォルト: 36)
- textcolor: 文字の色。Subtitle の text_color(デフォルト: $00FFFFFF)。
- halocolor: 文字の縁の色。Subtitle の halo_color(デフォルト: $00000000)。
ShowTimeCodeEx では、SubtitleEx の "f", "m" は利用できません。
使用例1: イタリック体
スクリプト
LoadPlugin("SubtitleEx.dll") # オートローディング時、不要
Import("ShowTimeCode.avs")
ColorBars(320,240)
ShowTimeCodeEx(effects="i") # i: イタリック体
SubtitleEx.dll を読み込む必要があります。
サンプル画像
使用例2: 太字+イタリック体
スクリプト
LoadPlugin("SubtitleEx.dll") # オートローディング時、不要
Import("ShowTimeCode.avs")
ColorBars(320,240)
ShowTimeCodeEx(effects="bi") # b: 太字, i: イタリック体
サンプル画像
ShowTimeCodeExの使用例2: 太字+イタリック体
使用例3: 太字+イタリック体+エンボス加工
スクリプト
LoadPlugin("SubtitleEx.dll") # オートローディング時、不要
Import("ShowTimeCode.avs")
ColorBars(320,240)
ShowTimeCodeEx(effects="bie") # b: 太字, i: イタリック体, e: エンボスフィルタ
サンプル画像
ShowTimeCodeExの使用例3: 太字+イタリック体+エンボス加工
備考
- AviSynth 2.5.6aで動作確認。
- 動作無保証。
(2006-02-11 追記)ShowTimeCodeEx 関数を更新しました。変更点については、にーやんのブログ :: ShowTimeCode 関数を更新を参照。
(2008-03-22 追記)
- 2008-03-22: AviSynth Wiki - ShowTimeCode にページを設置しました。これにともない、このページのダウンロードリンクを削除しました。



