アドバイス: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タグ: モーション