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 が読みとれず映像が早回しになってしまったり、盛大な音ズレの原因となってしまいます。 このような場合ソースの読み込みに他のプラグインを使用することで解決出来るかもしれません。
MPEG-2 ファイルを読み込む †RealPlayer などの MPEG2 再生コーデックの入ったソフトがインストールされていれば、AviSynth 経由で変換できるようです , AviUtl などのプロジェクトファイルを読み込む †.aup や .d2v といった vfapi 互換のプロジェクトファイルは、AviSynth の LoadVFAPIPlugin フィルタ を用いることで直接読み込むことが出来るようです。 これによって DVD-Video を二次変換せずに、直接プロジェクトファイルから変換することなどが出来ます。 ただし、DVD-Video などを扱う場合は著作権に細心の注意を払ってください。 メモ帳などで下記のスクリプトを記述し、任意の名前に拡張子 .avs で保存したのち携帯動画変換君の cores フォルダあたりに入れておきます。 そして 拡張子ごとにスクリプトファイルにパスを通してください(読ませるファイルを増やす) 。
.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」 |