自作プラグインについて †
初めて作ったWindowsネイティブなプログラムだったりする。
DOS以降はperlやらrubyやらjavaやらに逃げちゃったから。
いきなりDirectShowなんてものに突撃したので何度か挫折しそうになった…。
DirectShowは編集に向いてない。再生のことしか考えてないんじゃないだろうかと思った。
ストリームの扱いはやりやすいがフレーム単位で取り扱うのは難しい。正確な位置にシークできることも保障できない。
DirectShow自身のバグも多い。フィルタのバグも多い。特にMPEG2関連のフィルタ。
DV等は安定している。
…と愚痴を言い終わったところでds_inputの話。
現時点でわかってる問題。
- 音声が乱れる
一部の音声プラグインや出力プラグインで音声が乱れる。ds_inputでは音声キャッシュがないため余分なシークが発生して音声が乱れる。とりあえず一度WAV出力して音声読み込みすれば回避できる。直さなきゃならんだろうか…。
現時点では一度読み出されたデータは消去される。
- RV10(RealMedia) Codecが読み込みできない
放置。AviSynthなら読み込みできます。
- 豆知識
120fpsやVFRなファイルもds_inputの強制フレームレート変換で29.97fpsで読み込めば編集&再エンコード可能。ds_inputはフレーム間隔がばらばらでも固定fpsに変換できる。
やらないような気がするけどこれメモしておこう。
aut●60は便利だが配布方法がアレで誤爆も多いとのことで何とかできないかと検討してみた結果出来たもの。
thejam79氏のITと茂木氏の拡張AVI出力を組み合わせると何とかなりそうだったので作ってみた。
ITは逆テレシネの精度が高いことで定評があったので最初に調べた。
デバッグモードにびっくり。しかも24fpsと30fpsを切り分ける為の情報も持っている。
AviSynth+AviUtlでいい感じだったのでAviUtlプラグインとして移植した。
avisynth.hは複雑すぎだと思う。理解するの大変。
itvfrはAviSynthプラグインにAviUtlとAviSynth本体のインターフェースを追加して移植した。
その為、AviSynthとAviUtlの両方で動作可能である。
- 分離型プラグイン
itvfrは本体はフィルタプラグインで出力に専用の出力プラグインを使う分離型のプラグインである。
出力プラグイン単独だとソース画像が取得できないため、途中のフィルタの影響を受けてしまう。
フィルタの中には逆テレシネに必要なコピーフレーム判定を難しくするものがある。2重化フィルタなどは致命的で時間軸フィルタも良くない。分離型のほうが精度が上がる余地がある。
ばらばらに出力したAVIやWAVやらチャプターやらを一つのファイルにまとめるのが面倒だったので、自動化したくて作ったプラグイン。AviUtlのバッチ処理にコマンドラインツールによる処理を組み込むことが出来る。
プラグイン自体は「バッチ処理にコマンドラインツールを組み込む」というものなので、汎用性が高く作者の意図とは関係ない処理を色々と出来そうなプラグインである。
おまけとしてサスペンドや休止を行うコマンドも付けておいた。
mkvにチャプターを付ける為に作ったプラグイン。
見た目はVirtualDubModを参考にしてみたけどModは編集機能と全く連携してなくて使いにくい。何でだろ〜。
編集プラグインって作るの大変なのですね。ウインドウ作るのにWin32APIで直書きしないとだめぽ…。
動画サイトをよく見るようになったので作り方を調べてみると編集に使えるフリーソフトが少ないので作ってみた。
スクリプト形式なので自由度は高いですが使う人の敷居も高くなってしまう。