アドバイス:AVIファイルの入出力




背景用AVIの読み込み

2chMMDスレッドにまとめた記事があったので、以下、引用します。
※ MMD ver.5世代に書かれた記事です。


【MMD】MikuMikuDance動画制作/鑑賞スレ【初音ミク】 part40
URL:http://pc12.2ch.net/test/read.cgi/streaming/1253810270/203-271

203 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/27(日) 20:26:22 ID:KrT5y9t00
長くなりますけど、MMDの背景AVIの読み込みの件について。
元々NiVE用にまとめようと思ってたんで丁度よかった。
既出かもしれませんけど>>167-170あたりが困ってるので気にしない。
文字ばかりでわかりにくいのは勘弁。きっと誰かが綺麗にまとめてくれるはずさ。

 ●よく
     「Craving Explorerの"AVIで保存"で落としたAVIが背景AVIとして読み込めない」
   といったトラブルを聞きますが、おそらくMMDの背景AVI読み込みの仕様として、
    「 VFW(Video For Windows)でデコードできること
     (つまり対応するVFWコーデック(VCMコーデック)が有効になっていること)」
   という条件があるのではないかと思います。(たぶんVFW APIを使って読み込んでる?)

 ●CravingExplorerで"AVIで保存"を行なった場合、保存されるAVIは
   映像コーデックとして「MS-MPEG4 v2」というコーデックを利用しています。
   これはMicrosoftの純正コーデックなのですが、少なくとも最近のPC(というかWMP)では
   デコーダはVFWコーデックとしてではなく、DirectShowフィルタとしてのみ提供されています。
   そのためVFWでのデコードができず、背景AVIとして利用できないものと思われます。
   (WMPとかで再生できるのは、DirectShowでデコードして再生しているからですね。
    WMP11を入れてるならMpeg4 Decoder DMOってのがDirectShowデコードに使われます)

 ●つまり背景AVIとして使うためには、 対応するVFWコーデックをインストール すればいいのですが、
   コーデックを個別に入れるのはかなり面倒ですし、入手方法がややこしいものもあります。
   そのため、簡単な解決策として、ffdshowのVFW機能を利用するのがよいと思います。
   ffdshowは、「K-Lite Codec Pack」「CCCP(Combined Community Codec Pack)」
   「WECP(Windows Essentials Codec Pack)」などのコーデックパックにも含まれていますが、
   もしかするとコーデックパックによってはVFW機能が利用できないかも。特に>>171のWECPとかが怪しい。
   正直、個人的にはコーデックパックのインストールはオススメできないので、
   まだ何も入れてない方は「ffdshow tryouts」を単品で入れておくとよいでしょう。

~続く~


204 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/27(日) 20:28:05 ID:KrT5y9t00
~続き~

 ●例えばCraving Explorerの"AVIで保存"で落としたAVIを読み込みたい場合。
   まずは「すべてのプログラム」のところから、 ffdshowの「VFWの設定」 を開きましょう。
   (「ビデオデコーダーの設定」ではなく「VFWの設定」です。これら2つは設定画面が似ているので要注意。
   「ビデオデコーダーの設定」はDirectShowの設定なので、背景AVIの読み込みでは意味がありません。)
   コーデックパックを使っている人はコーデックパックのサブメニューになってるかも。
   設定画面が開いたら、「Decoder」のタブを開きましょう。
   右側に形式やデコーダーの一覧が出てくるはずです。ここで、「MS-MPEG4 v2」を有効にしてやります。
   ぱっと見どれがそうなのかわかりにくいですが、
   「MS-MPEG4 v2」コーデックを表すFOURCCは"MP42"になります。
   "形式"がMP42になっている部分の"デコーダー"欄が「無効」になっていると思うので、
   「無効」の部分をクリックし、「libavcodec」に変更しましょう。これでMP42のVFWデコードが有効になります。
   この状態で「背景AVIの読み込み」を行なえば、問題なく読み込めるようになっているはずです。

 ●背景"AVI"ということで、使える映像の種類がAVIに限られてますし、
   やっぱりVFW APIで読み込んでるのかな?
   だとすると基本的に2GB制限のあるAVI 1.0コンテナしか読み込めないかもしれません。
   AVI 2.0も一見普通に読めるように見えますが、内部で独自処理をいれてAVI 2.0に対応していない限り、
   途中でおかしくなる可能性もあると思われます。そのへんの詳しい仕様はよくわかりません。
   うまくいかない場合は、後述するAvisynthのDirectShowSource()を利用するとよいかも。

 ●別の方法としては、 Avisynthを利用する という手があります。
   CravingExplorerで落としたAVIを、avsスクリプト内でDirectShowSource()で読み込み、
   そのavsスクリプトを背景AVIとして読み込めば、ffdshow無しでもCravingExplorerのAVIを読み込めます。
   デコードはDirectShowがやるけど、Avisynthを介在させることでVFWで読み込みができるようになるという感じ。
   AVI2.0コンテナのAVIも、この方法で背景AVIとして読ませることができるはず。
   もちろん対応するデコーダ(この場合はVFWコーデックでもDirectShowフィルタでもよい)は必要ですが。
   このへんは以前スレでも話が出ていたような気がします。

~更に続く~

205 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/27(日) 20:29:27 ID:KrT5y9t00
~更に続き~

 ●背景AVIとして使いたいAVIファイルの、
     「映像コーデックのFOURCCは何なのか」
     「コンテナはAVI 1.0なのかAVI 2.0なのか」
   を調べるには、 コーデックチェッカー と呼ばれるソフトを利用します。
   個人的なオススメは、
     「MMName2」
     「真空波動研SuperLite」
   の2つを連携させて使うことです。
   MMName2のメニューで真空波動研との連携設定ができ、その後はAVIファイルを
   MMName2にD&Dするだけで、両方のソフトでの解析結果を一度に見ることができます。
   真空波動研だけだとFOURCCまでわからないこともありますので便利です。

 ●ちなみに、
     「NiVEでVFWInputやDSVideoInputを使う場合」
     「AviutlでAVI File ReaderやDirectShow File Readerを使う場合」
   にも同じような概念が適用されます。
   VFWコーデックがあるならVFWで読み込めますし、
   DirectShowフィルタしかないならDirectShowで読み込むことになります。
   (Aviutlの場合はプラグイン優先度の設定なども影響しますが。)

関連リンク
MMName2 harry氏 ツール置き場
真空波動研SuperLite 黒羽製作所氏 [[黒羽製作所>>http://kurohane.net/」]


206 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/27(日) 20:31:25 ID:KrT5y9t00
そんなわけでまとめ。

■MMDの背景AVI読み込みについてのまとめ

  • まずは「MMName2」「真空波動研SuperLite」などを使って、
    背景AVIとして使いたいAVIファイルのコンテナや映像コーデックを調べましょう。
  • コンテナがAVI 2.0の場合は、AviutlやVirtualDubModなどでAVI 1.0に変換するか、
    AvisynthのDirectShowSource()を使って読みこんだほうがいいかも。
    (ただ、もしかすると背景AVI読み込みはAVI 2.0にも対応しているかも?
    もし対応しているならそのまま読み込んでOK。)
  • AVIファイルを背景AVIとして読み込むためには、
    VFW(Video For Windows)レベルでデコードできるようにする必要があります。
    そのため、以下のいずれかの方法で対処する必要があります。
    • 方法1.対応するVFWコーデック(VCMコーデック)を入れる
    • 方法2.ffdshowをインストールし、「VFWの設定」で対応するVFWコーデックを有効にする
    • 方法3.AvisynthのDirectShowSource()を使い、そのavsを背景AVIとして読み込む
   ※ただし、これで問題なく読み込めるかどうかは各自の再生環境にも依存するので、
     場合によってはうまく読み込めないこともあるかもしれません。


208 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/27(日) 20:56:25 ID:KrT5y9t00
>>206で1つ忘れてました。

  • 方法4.AviutlやVirtualDubModなどを使い、読めないAVIを別のコーデックで再エンコードして使う。
    (自分のPCに入っているVFWコーデックを使う。)


あと、間違ってるとことかあったら指摘お願いします。
背景AVI読み込みが AVI 2.0 に対応してるかどうかはよくわからないんですよね。
2GBを超えるAVI 2.0を読み込ませてみて、最後まで正しく見れるなら大丈夫だと思うんですが、
今ちょっと自分の環境では試せないのでなんとも。


271 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/28(月) 18:20:04 ID:WADHdaDT0
>>203-208で書いた、背景AVI読み込みの件ですが、
自分の環境で試せるようになったので2GBを超えるAVI 2.0なAVIを読み込ませてみました。
一応読み込めはするものの、フレームを先に進めていくと
  「AVIファイルを読み込めません」
というエラーが発生。
やはりVFWで読み込んでいるため、2GBを超えた位置に移動しようとするとエラーになるものと思われます。

そんなわけで、やはり使用できる背景AVIは、
  「VFWでデコードできるAVI 1.0(サイズ上限2GB)」
ということになるようです。




MMDからの出力とNIVE


2chのMikuMikuDanceスレッドより引用
※ MMD ver.5世代に書かれた記事です。

【MMD】MikuMikuDance動画制作/鑑賞スレ【初音ミク】 part40
http://pc12.2ch.net/test/read.cgi/streaming/1253810270/362

362 名前: 自治スレにてLRおよび名無し名変更改正論議中 投稿日: 2009/09/30(水) 17:36:13 ID:Js/ImyEX0
NiVEスレの者ですが、MMD v5.03以降で出力した、
  「コンテナ形式がAVI 2.0(OpenDML)のAVIファイル」
をNiVEに読み込ませる際の注意などをまとめてみました。
詳細な説明は以下のリンク先を参照して下さい。

  ttp://nicoae.if.land.to/index.php?%BC%C1%CC%E4%C8%A2#c0cbed29

以下は簡単なまとめです、
v5.03以前のAVI 1.0形式の頃と同じ扱いをしていると、色々な罠があるようですのでご注意下さい。

 ●MMDから出力したAVI 2.0をそのままNiVEに読み込む場合は、
   基本的に「DirectShow入力プラグイン」で読み込む必要があります。
   VFWInputで読み込めるように見えますが、1GB以上のデータが
   読めないという罠があるのでやめましょう。
   (「DirectShow入力プラグイン」がうまく動かないような場合は、
    「Aviutl入力/出力プラグイン利用」というプラグインを
    使うという方法もあります。)
   (64bit版WindowsでDirectShow入力プラグインを使えるようにする方法については
       ttp://pc12.2ch.net/test/read.cgi/streaming/1241795466/659
    を参照して下さい。)

 ●アルファチャンネル付きのAVIをNiVEに読み込ませたい場合、
   以前のようにMMDから出力したAVIファイルをそのまま
      「VFWInput(32bit ARGB Video Only)」
   で読ませようとすると、1GB以上のデータが読めません。
   というか、その1GBのデータも割りと無理やり読み込んでる感じです。
   アルファチャンネル付きのAVIを読ませたい場合は、
      1.無圧縮で出力してDSVideoInputで読み込む。
      2.ファイルサイズが2GB未満なら、VirtualDubModや
        Avi-Mux GUIなどでAVI 1.0コンテナにつめかえた上で
        VFWInput(32bit ARGB)で読み込む
      3.Avisynthを使ってavsでOpenDMLSource()などで
        AVI 2.0ファイルをRGB32で読み込み、
        そのavsファイルをVFWInput(32bit ARGB)で読み込む
   といった方法をとる必要がありますのでご注意下さい。

色々調べたり試したりした結果ですが、付け焼刃的な知識なので、
間違いや抜けてる点などがあれば指摘をお願いします。 m(_ _)m


名前:
コメント:


関連記事
wikiタグ: モーション