便利な使い方

AviSynth を使用して読み込む

AviSynth を導入する

携帯動画変換君で変換エンジンとして使っている ffmpeg は、Windows の再生システム (DirectShow) を一切使っていません。 各種動画形式への対応は全て変換エンジン (ffmpeg) 側で独自に作りこまれています。 そのため、Windows に対応するコーデックがインストールされていなくても ffmpeg が対応している形式のファイルは変換できますし、 逆に対応するコーデックがインストールされていても ffmpeg 側で対応していない形式のファイルは変換できません。(←重要!)

Version 0.23 から ffmpeg に「Windows から」動画を供給するために AviSynth エンジンを連動させるコードを組み込みましたので、 どうしても WMV などを変換したい場合は、 http://sourceforge.net/project/showfiles.php?group_id=57023 こちらのページから Avisynth 2.5 以上をダウンロード・インストールすれば、自動的に AviSynth を使いファイルを読み込もうと試みます。 また、変換がうまく行かない場合以外でも、AviSynth を通すことでソースファイルに様々な前処理 (ノイズ除去、シャープ等) を 施して変換することも可能になります。詳しくは AviSynth Wiki などで学びましょう。

※ (2007/12/23 追加) ffmpeg の新しいビルドでは対応形式が増えているので、変換君に同梱されている ffmpeg と差し替えることで変換できるようになる場合もあります。 ただし、オプションの記述ががらりと変わっているので 自分で ini ファイルの編集ができる方のみ利用するようにしてください 変換君に同梱されている ffmpeg は、作者さんによって 独自の機能追加等 がされており 携帯機器向けの変換 & 変換君との連携に使いやすいように修正されているので、新しい ffmpeg に必ず変えたほうがいいとは限りません。

しかし、これでもまだ読み込めない場合は多々あります(主に動画のフレームレートが読み込めない場合に止まります)。 その際は AVS_Skelton を編集してフレームレート設定を手動で加えるか、もしくは直接読み込ませることはあきらめて、 一旦他のツールなどで変換君が直接読み込める形式に変換 (再圧縮 等) してください。 AviSynth についてはこちらの AviSynth Wiki (にーやん様) に非常に詳細かつ豊富な情報があります。 AviSynth のことで何か困ったら、まずは上記の AviSynth Wiki.を端から端まで読んでください。

なお、AviSynth を使用したくない場合は 3GP_Converter.iniを開き、[INI] セクションにある DisableAVS のところを、

DisableAVS=0
 ↓
DisableAVS=1

と書き換えてください (書き換え時は変換君は終了した状態で行います。3GP_Converter.iniカスタマイズ も参照のこと)。

また、AviSynth 経由で読みこませるファイルを増やしたい場合は、同様に 3GP_CONVERTER.ini 内の [AviSynth] セクションで

[Avisynth]
Ext0=WMV:\cores\AVS_Skelton.avs
Ext1=WMA:\cores\AVS_Skelton.avs
Ext2=ASF:\cores\AVS_Skelton.avs

に追加する形で編集してください。

AviSynth を使用して読み込む(基本)

AviSynth は、独自のスクリプトファイル (以下 AVS ファイル) に従って動画ファイルを各種アプリケーションへ橋渡しします。

特定の拡張子のファイルを常に AviSynth 経由で読みこみたい場合

この方法は、主に ffmpeg が直接読み込めない形式のファイルを、常に AviSynth 経由で渡すようにするための設定です。 少数 (数個) の特定ファイルについてのみ AviSynth を経由させたい場合は一つ下の変換君に直接 AVS ファイルを D&D する方法を使ってください。

変換君のフォルダ (3GP_Converter.exeがあるフォルダ) にある 3GP_Converter.ini ファイル内の [Avisynth] に記述された拡張子のファイルが D&D されると、 自動的に対応した AVS ファイルを用いて AviSynth 経由で読み込まれます。 また、デフォルトの AVS_Skelton.avs では正常に読み込めないファイルも、AVS ファイルを編集することで変換出来ることがあります。

\3GP_Converter\cores\AVS_Skelton.avs

# 3GP_Converter AVS-Mode skelton
DirectShowSource("<%InputFile%>")
return last

これが通常使用される AVS ファイルで、DirectShowFilter を使用して動画を読み込み、変換君(ひいては ffmpeg)へ渡す記述です。 利用できる DirectShowFilter は PC 環境に左右されますが、Windows Media Player で再生可能なファイルの多くがこれで変換出来るようになります。 しかしある種の WMV ファイルなどでは正常に変換が出来ない場合があります。 問題の多くはフレームレートが読みとれない場合に発生しますので、

例. 入力ファイルを 29.97fps で読み込む

DirectShowSource("<%InputFile%>", fps=29.970, convertfps=true)

のように AVS_Skelton を書き換えて、フレームレートを明示 & 強制的に変換すると解決することがあります (詳しくは AviSynth Wiki - DirectShowSource を参照のこと)。 デフォルトの AVS_Skelton.avs は変更せずに残しておきたい場合は、カスタマイズした AVS ファイルを AVS_Skelton2.avs のように名前を変更して保存し、ini ファイルを

Ext0=WMV:\cores\AVS_Skelton2.avs

のように書き換えることで対応できます。

一つの動画ファイルのみに対応した AVS ファイルを作成する場合

この場合は上記 AVS ファイルの <%InputFile%> 部分に読み込みたい動画のフルパスを指定します。

例. C:\video フォルダにある test.wmv をフレームレート 23.976fps で読み込む

# (←コメント。書く必要は特にありません)
DirectShowSource("C:\video\test.wmv", fps=23.976, convertfps=true)
return last

AVS ファイルの作成はメモ帳などで行えます。テキストファイルの拡張子を .avs に変更するだけで構いません。 AVS ファイルを作成したら、直接変換君へ D&D すれば変換が始まります。


とはいえ、それでも正常な変換が出来ないファイルというのもやはりあります。 特に WMV ファイルでうまくいかない場合、下で挙げる AviUtl の Direct Show File Reader プラグインを 使う方法も試してみるといいと思います。

Avisynthを使用して読み込む(応用)

可変フレームレートの動画ファイルや NULL フレームを含む 120fps の AVI ファイルを読み込む

アニメーションなどには本編 24fps / テロップ部分 30fps のようにフレームレートが混在しているものがあり、 これを PC での再生に適した動画ファイルにするために NULL フレームを挿入して 24/30 の最小公倍数である 120fps の AVI ファイルにする場合があります。 また、Windows Media Encoder は標準で可変フレームレート(VFR)の WMV ファイルを出力できますし、 Matroska や MP4 のように可変フレームレートをサポートしているコンテナもあります。

しかしこのようなファイルは通常では変換君で変換することができません。 NULL フレーム入り 120fps の AVI ファイルや VFR の WMV ファイルは、AviSynth にそのまま通しても 正常に fps が読みとれず映像が早回しになってしまったり、盛大な音ズレの原因となってしまいます。 このような場合ソースの読み込みに他のプラグインを使用することで解決出来るかもしれません。

  • DirectShow File Reader プラグイン for AviUtl を使用して読み込む AviUtl 実験室 ぽむ様作成 このプラグインを使用することで映像と音の同期を取ったまま、問題のある WMV その他のファイルを正常に読み込むことが出来る可能性があります。 上記からダウンロードしたファイルを任意の場所に解凍し、ds_input.aui を保存します。 ただし AviUtl 用のプラグインであるため、そのままでは AviSynth で使用できません。 AviUtl 用プラグインを Load するための WarpSharp パッケージ (warpsharp.dll) が必要になります。 こちらは warpsharp パッケージ置き場からダウンロード出来ますので warpsharp_2003_1103.cab を DL し解凍してください。 解凍した中には様々なプラグインがありますが、とりあえずは warpsharp.dll だけを使用します。 なお、使用するプラグインは \AviSynth 2.5\plugins\ に保存すると分かりやすいです。 プラグインが入手出来たら、以下のような AVS ファイルを作成してください。
    # 3GP_Converter AVS-Mode skelton for120fps
    LoadPlugin("[PATH]\warpsharp.dll")
    LoadAviUtlInputPlugin("[PATH]\ds_input.aui", "DSInput")
    DSInput("<%InputFile%>")
    return last
    [PATH] には各プラグインへのパスを入れてください。 変換君標準の AVS ファイルとする場合は AVS_Skelton.avs を置き換えます。*1 それ以外については こちら と同様です。あとは特にスクリプトを弄らずとも、変換君へ D&D することで変換出来る筈です。*2 この場合、動画のフレームレートはプラグイン側で制御するため、フレームレートの指定は必要ありません。 とはいえ、あくまで混在するフレームレートを統一しての変換であり、出力後に可変・混在フレームレートのままという訳ではないことに注意してください。 選択されなかったフレームレートの範囲ではある程度のカタつきが生じるでしょう。 また、この方法で動画ファイルを読み込むときに -async オプションを使用すると、同じ音が連続して聞こえる場合があります。 そのような場合は -async オプションを外せば正常に変換できます。
    ※ AviSynth は msvcr70.dll, msvcp70.dllだけでも動きますが、 WarpSharp.dll を動作させるためには、msvcr71.dll, msvcp71.dllが別途必要です。 さもなくば、unable to load warpsharp.dll と怒られます。
    ちなみに上記の方法で動画ファイルを開くと、AVS ファイルと同じ場所に以下のような内容の ds_input.ini ファイルが作成されます。
    [ds_input]
    ForceFrameRate=
    SourceFrameRate=23.975fps ;← この値はソースによる
    SourceFrameRate のところが、DS_Input プラグインが認識したソースのフレームレートで、入力された動画全体が このフレームレート値の固定フレームレートになるようにフレームレートの変換が行われます。 なお、予め ds_input.ini ファイルを AVS と同じ場所に作成しておいて、ForceFrameRate=29.970 のように記述しておくと DS_Input プラグインがそのフレームレートでファイルを読み込んでくれます。 プラグインの認識したフレームレートがおかしい場合や基準のフレームレートを指定したい場合にやってみてください。
    ※ AVS ファイルを直接変換君 D&D した場合は AVS ファイルと同じフォルダに、変換君が自動で AviSynth 経由で 動画を読み込んだ場合は変換君の一時フォルダに上記ファイルが作成されます。

MPEG-2 ファイルを読み込む

RealPlayer などの MPEG2 再生コーデックの入ったソフトがインストールされていれば、AviSynth 経由で変換できるようです ,

AviUtl などのプロジェクトファイルを読み込む

.aup や .d2v といった vfapi 互換のプロジェクトファイルは、AviSynth の LoadVFAPIPlugin フィルタ を用いることで直接読み込むことが出来るようです。 これによって DVD-Video を二次変換せずに、直接プロジェクトファイルから変換することなどが出来ます。 ただし、DVD-Video などを扱う場合は著作権に細心の注意を払ってください。

メモ帳などで下記のスクリプトを記述し、任意の名前に拡張子 .avs で保存したのち携帯動画変換君の cores フォルダあたりに入れておきます。 そして 拡張子ごとにスクリプトファイルにパスを通してください(読ませるファイルを増やす)

  • AviSynth スクリプト(.avs ファイル)の記述 例. .aupファイル (AviUtl プロジェクトファイル) を読み込む場合
    LoadVFAPIPlugin("<aviutl.vfpのパス>", "AUPSource")
    AUPSource("<%InputFile%>")
    FlipVertical()
    return last
    応用したい方のためにかみ砕いて解説しておくと、以下のような流れになります。
  • 1行目: "AUPSource" は VFAPI プラグインを利用してファイルを開くという関数であることを定義づけている
  • 2行目: 1行目で定義づけた関数 (この場合 "AUPsource") を用いて、携帯動画変換君から渡されたファイル <%Inputfile%> を開いている
  • 3行目: 渡されたファイル中のクリップの天地を反転 (VFAPI プラグインで渡されたファイルは天地が反転しているため)
  • 4行目: AviSynth から携帯動画変換君へファイルの受け渡しを行う.

.d2vファイルに応用したいときは aviutl.vfp のパスを dvd2avi.vfp のパスに変えることで対応できます。 しかし、DVD2AVI のプロジェクトファイルは音声の指定がされていないため音声は入りません (AviSynth には DVD2AVI で分離した音声ファイルを別に読み込ませるフィルタ などもあるようです)。

各 VFAPI プラグインにまとめてパスを通すスクリプト という物もあるようなので、応用できる方は参考にしてみてください。 DVD2AVI や AviUtl については 詳しい解説サイト がいくつもあるのでここでは質問しないでください。

RealMedia ファイルを読み込む

rm (RealMedia) に関しては RealMedia Splitter を導入すれば DirectShowSource (AviSynth 経由) で 開けるとの報告もありますので、そういう環境を用意されている方は 3GP_Converter.ini の [Avisynth] セクションに

Ext3=RM:\cores\AVS_Skelton.avs

と追加すると開けるようになるかもしれません。

試したこと無いんでどなたか宜しくお願いします…orz
↑RealMediaSplitter.ax をレジストリに登録してから変換できた。
ありがとう。
でもやはりフレームレートが取得できないような。
真空波動研 SuperLite 050308 で確認した FPS を AVS ファイルに書いても、なんかうまく画像と音が合わない……
他にも AVS ファイルに FPS を色々設定してみたけどもなかなか上手く行かず。
拡張子は ram, ra, rm を考慮したほうがいいかもね。
↑レジストリ登録:コマンドプロンプトで「regsvr32 RealMediaSplitter.ax」

*1 DirectShowSourceよりも読み込みが遅くなることあるので、標準にはしない方がいいかもしれません
*2 ひょっとしたらWMP9以上のインストールが必要かも

添付ファイル: filehenkankun.lzh 2154件 [詳細] fileindex.htm 1587件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-11 (木) 21:13:59 (5156d)