MMDのblogあかとんぼ(akatonbo)のMMDに関するBlogです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://akatonboaka.blog86.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ ↑ |

【可逆圧縮コーデック③】色空間&可逆圧縮コーデックの種類

   ↑  2011/12/28 (水)  カテゴリー: コーデック
【本日の内容】
・MMDerさんの可逆圧縮コーデック関連記事 まとめ
 色空間について
  1 RGB
  2 YUV
 (脱線:Avi2Gの壁・・未解決)
・MMDに適切な可逆圧縮コーデックとは?
  1 FastCodec
  2 Huffyuv
  3 Ut Video Codec Suite


本日は、可逆圧縮コーデックについての
他のMMDerさんの記事を参考にしつつ、勉強していきます。

まず、可逆圧縮コーデックの種類は何があるのでしょうか。

●goro
MMD初心者用動画 と コーデックの話(MMDでAVI出力するとき)
http://adash333.wordpress.com/2010/01/24/mmd%E5%88%9D%E5%BF%83%E8%80%85%E7%94%A8%E5%8B%95%E7%94%BB%E3%80%80%E3%81%A8%E3%80%80%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%E3%81%AE%E8%A9%B1%EF%BC%88mmd%E3%81%A7avi%E5%87%BA%E5%8A%9B%E3%81%99/

>透過情報を使いたい(RGBA)なら UtVideo
>単にRGBの可逆圧縮というなら UtVideo と FastCodecは互角で、
>FastCodec の方が少し小さくなる。
>だから、FastCodec で問題なく使えているなら、わざわざ乗り換える程のものでもないよ。

UtVideo」 と 「FastCodec」ですって。ふむふむ(・∀・)ノ
後ほど詳しく調べていきましょう。

●MMDの片隅で(masqueさん)
【メモ】可逆圧縮コーデックとか色空間とか(http://masque2525.blog97.fc2.com/blog-entry-23.html

 [よく聞く可逆圧縮コーデック]
  ①Huffyuv
  ②Ut Video Codec Suite
   64bit版OSの場合 : x86用およびx64用の両方をインストールすること
            (Read meはちゃんと読みましょう‥)

また新しいコーデックの登場です。
Huffyuv」ですって(・∀・)ノ
これも後ほど詳しくやります。


続いて、実際に圧縮コーデックを使用された結果の抜粋です。

 [実際にコーデックを出力した結果]
  無圧縮       AVIファイルサイズ:980MB
  Huffyuv(YUV422)  AVIファイルサイズ:203MB
  Ut Video      AVIファイルサイズ:156MB

ほうほう。
無圧縮とUt Videoのファイルサイズの差、なんと800MB強
なるほど!分かりやすい!
これは圧縮万歳ですね。


続いて、同blogより「色空間」に関する情報の抜粋です。

【色空間について】
 RGB: 光の三原色(Red/Green/Blue)、可逆、アルファチャンネル可
 YUV: 輝度(Y)+ 色差(輝度と青の差=U / 輝度と赤の差=V)、非可逆、アルファチャンネル不可

 ニコニコ動画におけるmp4の色空間はYUV。
 ニコニコにupする動画なら、AVIをYUVにしておいた方が、エンコード時の劣化が防げる。
 ローカルでAVIのまま楽しむ、MMDの背景として読み込む、
 あるいは、編集ソフトにかけるという使い方の場合、
 色情報が保全されているRGB形式の方がよい。
 また、透過度情報が欲しいなら、RGB出力。(アルファなしのRGBもあるのでReadmeを確認のこと)

 MMD → (無圧縮AVIで出力/RGB) → PREもしくはAviUlt等で編集 → (可逆圧縮コーデックでAVI出力/YUV) → つんでれんこ等でエンコード


アルファチャンネル可、不可とは?
意味を調べてみましょう。

アルファチャンネル - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

 e-Words「アルファチャンネル【alpha channel】」
http://e-words.jp/w/E382A2E383ABE38395E382A1E38381E383A3E383B3E3838DE383AB.html
>透過度情報はアルファ値と呼ばれ、
>完全な透明(無色)から、完全な不透明(背景の色をまったく通さない)まで設定することができる。

>コンピュータが画像を扱う場合、色情報として、
>各点についてR(赤)・G(緑)・B(青)の三原色のデータ領域(チャンネル)をもち、
>その組み合わせで色を表現する(CMYKモードの場合は4色)。
>点の透明度を表現する場合にはこれにアルファチャンネルを加え、
>4つの情報の組み合わせで一つの点を表現する。

へー(・∀・)
つまりアルファチャンネルとは、

 色のデータ+αで持っている補助データのこと。
 直接表示されない色のデータであり、
 一般的に「不透明度」のことを指す。

と、いうことでよろしいか(´∀`)
いいかな?

以上のアルファ値情報を踏まえて、
RGB・RGBA、YUVの色空間について以下まとめ。

 ↓

私たちが今見ているPCの画面の「1ピクセル」は、
複数の色情報によって、色を表現しております。

「RGB」の場合・・・3つの色情報
 ①R(赤)「赤くなれ~^^)ノ」
 ②G(緑)「緑になれ~^^)ノ」
 ③B(青)「青くなれ~^^)ノ」

「RGBA」の場合・・・4つの色?情報
 ①R(赤)「赤くなれ~^^)ノ」
 ②G(緑)「緑になれ~^^)ノ」
 ③B(青)「青くなれ~^^)ノ」
    +
 ④アルファ値「透明になれ~(・∀・)ノ」

RGB、RGBAは、以上のような①~④の組み合わせで、
コンピュータ上で色を表現しているということですね。

これに対して「YUV」は
・輝度(Y)
・輝度と青の差=(U)
・輝度と赤の差=(V)
の3つで色を表現するそうですから、

 ①輝度Y「明るくなれ~^^)ノ」
 ②輝度と青の差=U「○色になれ~^^)ノ」
 ③輝度と赤の差=V「▲色になれ~^^)ノ」

というような方法で色を表現するんですかね。(合ってるかな~?)
YUVで色を表現している動画ファイルの例は、「mp4」などです。

 ※参考HP:DTVかくし味「YUVとRGBの比較」
      (http://dtv.sakura.ne.jp/contents1/004.html

上記のように、RGB・RGBAと、YUVは、色を表す基準が違うため、もし

RGBA→YUV
YUV→RGB

など、色空間の変更がありますと、

無理に別の基準に色を当てはめるため、
画面の色が変わってしまうこともあるようです(・Д・`)

(色空間が変わってしまう例
 ・・・aviファイルをmp4ファイルへ変換するときなど)

特にRGBA→YUVへの変換では、
④アルファ値「透明になれ~(・∀・)ノ」
が消えてしまうため、YUVではアルファ値を使う作業ができなくなります。

アルファ値を使う具体的な例としては、
・MMDモデルの前髪だけ透けさせる場合(半透明)
・ステージバックのライト(半透明)
など。

かんなさんのサイトが分かりやすいんです~(・∀・)ノ
●みくだん(かんなさん)
・MMDのアルファ出力問題
http://mikudan.blog120.fc2.com/blog-entry-193.html

かんなさんのサイトを見ますと、アルファ値とは
AE・NiVEで使用する情報のようですね。

AviUtlは関係ないの?^^)ノ

AviUtlのお部屋  作者/KENくん氏
http://www28.atwiki.jp/aviutl-plugin/m/pages/69.html?guid=on拡張編集Plugin
>アルファチャンネル(透明度)に対応しており、アルファチャンネル付きPNGを読み込んだり、
>「拡張編集AVI出力(RGBA)」(exedit.auo)を利用して
>アルファチャンネル付きRGB(RGBA)AVI動画(映像のみ)として出力できる。

おお!
関係ありそうですね!

じゃあ、AviUtlで動画を加工するまでは、
透明情報があった方が良さそうですね!
AviUtl加工まではRGB出力がよいかも、と。

ということは、MMD→アップロードまでの
出力方法の流れはどうなるんでしょうか。

「MMDの片隅で(masqueさん)」のを参考に

 MMD → (無圧縮AVIで出力/RGB) → 編集ソフト(AviUtl、NiVE等) → (可逆圧縮コーデックでAVI出力/YUV) → つんでれんこ等でエンコード→(mp4出力)
 MMD → (無圧縮AVIで出力/RGB) → 編集ソフト(AviUtl、NiVE等) → (mp4出力)

この2パターンのどちらかで
出力していくことになるのかな(・∀・)
ふむふむ。

しかし、どちらのパターンで出力するにしても、
最終的に「avi(RGB)」から「mp4(YUV)」に変換が必要です。

ということは、RGB→YUV変換時の映像の劣化は
避けられないのですね。

劣化を防ぐ対策も考えておきたいですね。
いい方法ないかな?|∀・)

ぽぷの実験棟
AviutlでMP4動画を作成する際の赤色劣化についてと その対策を紹介します。
http://nikokara.web.fc2.com/encode2.html

>無圧縮aviをmp4動画にエンコードする際の色空間処理は以下の工程
>1.Aviutlに無圧縮aviを読み込む(RGB)
>2.x264エンコーダでH264/AVCにエンコード{RGB→YUY2→YV12)}

>@対策
>劣化を軽減するために色々検証してみましたが、効果があったのは以下の2つのみでした。

>1.大きなサイズにリサイズしてからエンコードする方法。
> これは最も効果があります。
> ピクセル数を多くすることにより間引きによる劣化が抑えられてます。
> 下の画像では640x480から無理やり1024x768にリサイズしているので若干輪郭にシャギーが見られます。
> またクオリティを維持するためのビットレートも必然と高い数値が要求されるため、
> 動画容量が増える欠点があります。
> 検証はしてませんが、同じ理由で字幕を大きめに作るのも効果があると思います。

なるほど^^)ノ
大きなサイズで出力して、最後に縮めると。

また、MMDで検証と言えばこの方
えむえむでえ(ダサツマP)
Aviutlで中間圧縮等をする場合にコーデックのデフォルトがYUY2である件について
http://d.hatena.ne.jp/penciler/20090330/1238417864

>最終的なmp4出力に至る前段階ではRGBソースならRGBソースのままで扱う方がいい。

>可逆圧縮コーデックを使っていても、元がRGB形式の場合
>一旦Aviutlを通して出力するだけでRGB→YUV変換されて劣化してしまう。

なるほどなるほど^^)ノ
ぎりぎりまではやはりRGBのデータのままでと。

Aviからの出力設定は、
後日AviUtlをつかって実際に編集する際に詳しく検証します。
では、引き続き圧縮プログラム関連の記事について

●VPVP wiki
・MMDでAVI出力する時の圧縮プログラムについて ※画面中段
http://www6.atwiki.jp/vpvpwiki/pages/26.html

圧縮プログラムの記事を読もうと思っていましたが
ちょっと待て待て・・

圧縮プログラムの記事の上方に注目です!

>MMDでAVI出力する時の録画サイズについて
>MMDver5.03より、DirectShowによるAVI出力に対応しました。
>これにより、2Gを超えるファイルの出力も可能となりました

avi2Gの壁がやぶられたんですか?
2G以上出力出来るの?

まず「DirectShow」ってなんですか?
DirectShow - Wikipedia
http://ja.wikipedia.org/wiki/DirectShow

難しいー(´∀`)

>特徴
>標準では一般的なメディア形式のフィルタしか導入されない。例えば、~コンテナフォーマットではAVI,~

Aviに関連がありそうな文章はこれぐらいでしょうか?
うーん・・

あ、aviの記事も
見てみましょうか? =っ・∀・)っ

Audio Video Interleave - Wikipedia
http://ja.wikipedia.org/wiki/Audio_Video_Interleave
>AVI1.0では2GBを超えるファイルを作成できない。(AVI2.0(OpenDML)で解決済み。)

>Windowsにおいては標準APIがVideo For Windowsに代わってDirectShowとなっており、
>DirectShowが出力するAVIファイルは通常AVI2.0形式となっている。
>これは従来のAVIが持つ古典的インデックスを余分に含んでおり、
>2GB未満のファイルの場合は通常のAVIとしても使用することができる。[2]



つまりどういうことじゃぃ(/∀`)

「OpenDML」・・「標準API」・・・「古典的インデックス」・・・?

 ? ヽ(´∀`)ノ


OpenDML (おーぷんでぃーえむえる)
http://vcl.vaio.sony.co.jp/glossary/files/S0312100015425/internet-jp.html
OpenDML とは、 AVI の延長にあたる規格であり、1GB を越えるファイルサイズ、
フィールドレンダリング、タイムスタンプ、Motion JPEG などのサポートする特徴をもちます。
また、ビデオソフトとドライバが OpenDML に対応している場合、
OS のファイルシステムによりファイルサイズが異なります。

API【Application Program Interface】
http://e-words.jp/w/API.html
あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に
使用できる命令や関数の集合のこと。
また、それらを利用するためのプログラム上の手続きを定めた規約の集合。

AVIファイルフォーマットAVIインデックス
http://vm104.xen.klab.org/doc/avifileformat.html#3

・・・
余計に意味が分からなくなってしまった(´∀`)

時間がかかりそうなため、とりあえず2G問題は保留します。
すっきりしませんけどとりあえず後日~


引き続き本日の本題。

MMD知識の坩堝、VPVP wiki !^^)ノ
●VPVP wiki
・MMDでAVI出力する時の圧縮プログラムについて ※画面中段
http://www6.atwiki.jp/vpvpwiki/pages/26.html

 可逆圧縮codec一覧
 →知識のある方は、こういった一覧から探されるのもよいのかも。
  (今回の記事では、MMDer界隈で人気と言われる数種のコーデックのみに
   絞って扱っています(ノ∀`))

 うろ覚えコーデックの話
 →お!(´∀`)kid(仮)@さんの記事ではないですか。
  チェックチェック。

MikuMikuDanceの表示や、お絵かきソフト・・RGB
MP4(ニコニコ動画に上げる時)    ・・YUV

 お絵かきソフトもRGBなんですね~((φ( ̄Д ̄ )ホォホォ

可逆圧縮コーデックについて
FastCodec
 RGBの色空間で出力するため、MP4にエンコードすると色化けすることがある。
 下記の Ut Video ではYUVも選べる ※アドバイス/コメントに補足説明有り

Ut Video Codec Suite
 アルファチャンネルで透過情報を持って書き出せる。
 これにより、NiVEやAfterEffects等を使って複数のミクやリンを重ねることが可能である(FAQ参照)。

 ただし、MMDから直接アルファチャンネルを使ったAVI出力はグラフィックボードに依存する
 (透過しなかったり、画面が全透過してしまう)。
 MMDのバージョンによって差異があるが、一般にATI RADEON系ではうまくいくことが多く、
 GeForceではうまくいかないことが多い。

 多くの人はキーイングによる抜きを使っている。

! なにぃー!?(゜O゜)
「MMDから直接アルファチャンネルを使ったAVI出力」
=「RGBA出力」が

 ATI RADEON系→成功
 GeForce→失敗しやすい、と。

私ですか?
GeForceです!^^)ノ

ってえーーー!

じゃぁRGBA出力しても
私のPCでは透過は機能しないんですかー
(透過しなかったり、画面が全透過してしまうと)

>多くの人はキーイングによる抜きを使っている
ははぁ(・∀・)

キーイングとは、背景を1色にして
モデルさんや、ステージだけを抜いたりする際に使う
動画の加工方法のことです(ほんまか-)。

wikiに、
アルファチャンネル~により、NiVEやAfterEffects等を使って複数のミクやリンを重ねることが可能である

とあるように、動画を重ねて使用する時等によく使います~

キーイングはAviUtlでもNiVEでもすぐできます。
そんなキーイングで代用できるんですか?

ならいっか・・(・∀・)
え、いいの?

気になるのは、MMEの海の表現などで
確かアルファチャンネルを使っていたような・・・。
これもまた調べておきます。宿題宿題。


最後に、以前私が可逆圧縮コーデックを導入する際にも
参考にさせていただいていた
かんなさんの記事をご紹介します。

●みくだん(かんなさん)
・可逆圧縮コーデック
http://mikudan.blog120.fc2.com/blog-entry-92.html

>可逆圧縮コーデック:「Huffyuvs」
>AVIUtlやNiVEやWindowsMovieMakerでも使う事が出来ます…

>が!

>残念ながら環境によってはMMDでの出力が出来ません。
>完成した動画を圧縮保存するなどの使い方は出来ます。
>私の環境でも残念ながらMMDからHuffyuvsでの出力は出来ません。


>可逆圧縮コーデック:「Ut Video Codec Suite」
>・マルチコア対応で処理スピードが可逆コーディックの中でも速い
>・HDV(家庭用ハイビジョンフォーマット)の映像をリアルタイムで取り込みながら圧縮できる
>・Huffyuvsよりも高い圧縮率
>・再生も早い(コマ落ちしない?)
>・アルファチャンネルの出力が可能

>もちろん、WindowsMovieMakerやNiVE、AfterEffectsなどでも使えましたし、AVIUtlでも使えます。
>…が、デコード(再生時)はそれなりにCPUパワーを使われますので注意を。
>(シングルコアでも再生可能だそうです)

>MMDユーザーに、これはお薦めコーデックかもしれません。

ほうほう(・∀・)
やはり「Ut Video Codec Suite」がおすすめですか。

・MMDとNiVE - MMD出力編
http://mikudan.blog120.fc2.com/blog-entry-197.html

>AVI出力時のコーデック選択
>アルファ付きで出力する場合、コーデックの選択幅は狭まります。
>可逆圧縮コーデックでもアルファに対応しているものは少ないです。

>動画データは、(中略)
>RGB32bit (R・G・Bそれぞれ8bitずつのデータ、さらにアルファ8bit)となります。

アルファつきのデータは、
RGB 32bit ですね。はーい。

あとは、実際の出力方法の説明記事のようなので
後日出力する際に。


では本日のおさらい。

・色空間について
  RGB: 可逆、アルファチャンネル可
    ※注意:MMDから直接アルファチャンネルを使ったAVI出力をする場合 
        ATI RADEON系→成功
        GeForce→失敗しやすい
  YUV: 非可逆、アルファチャンネル不可

・アルファチャンネル
 「不透明度」のこと。

・MMDでのお勧め可逆圧縮コーデック
  FastCodec(RGB)
  Huffyuv
  Ut Video Codec Suite(RGB/YUV) ←特にコレ!

・MMD→アップロードまでの流れ 
  MMD → (無圧縮AVI/RGB) → 編集ソフト → (可逆圧縮コーデックAVI/YUV) → つんでれんこ等でエンコード→(mp4)
 MMD → (無圧縮AVI/RGB) → 編集ソフト → (mp4)

こんなものかな?
次回はUt Video Codec Suiteの導入手順です^^)ノ
関連記事

(記事編集) http://akatonboaka.blog86.fc2.com/blog-entry-56.html

2011/12/28 | Comment (1) | Trackback (0) | HOME | ↑ ページ先頭へ ↑ |

Comment


承認待ちコメント

このコメントは管理者の承認待ちです

 |  2014/12/15 (月) 17:46 No.37

コメントを投稿する 記事: 【可逆圧縮コーデック③】色空間&可逆圧縮コーデックの種類

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。