(1)(2)講演のテーマ
ゲーム開発における動画作成需要の高まり
PV、ゲーム内ムービーの作成
動画サイトへのアップロード
高画質な物を作成する工程を調べるのは大変
一つにまとめよう
2
(3)動画とは
文字通り「動く」「画」
フレームごとに画が切り替わっていく
デジタル動画は静止画の集まり
gifアニメは複数の画像ファイルから作られる
3
(4)ここで疑問
「gifは普通の画像ファイルより容量が大きいけど
flvとかmp4はそんなに大きくないよ?」
!コーデックのおかげ
(5)エンコーダー(符号化器)とデコーダー(復号化器)
から成る圧縮規格
画像コーデック、音声コーデック、動画←
コーデック(CODEC)は圧縮(COmp~)と
伸張(DEComp~)を組み合わせた専門用語
コーデックとは
5
(6).gifより軽い.mp4?
基本的に.mp4の動画は同じ画質、
解像度のgif動画よりもファイルサイズが小さい
!gifよりも複雑な処理で圧縮しているから
昔はMotion JPEGという各フレームをJPEGで
保存する動画形式もあった
6
(7).mp4(MPEG-4)とは
それ自体はただのファイルコンテナ
Moving Picture Experts Group(MPEG)
が規定しているファイル格納フォーマット
動画ファイルも音声ファイルも格納できる
(8)一般的な
.mp4動画の中身は
動画コーデック:H.264 (MPEG4-‐‑‒AVC)
AVC = Advanced Video Coding
先進的 動画 符号化
⾳音声コーデック:AAC
AAC = Advanced Audio Coding
先進的 ⾳音響 符号化
(9)H.264がやってること
空間変換
フレーム間予測
4分の1画素精度の動き補償
イントラ予測
エントロピー符号化
9
(10)(11)動画圧縮のトレードオフ
積み重なった偉い人達の研究の成果のおかげで、
画質とファイルサイズのトレードオフはほぼ無い
圧縮率と速度でトレードオフが起きる
(12)コーデックの使い分け
用途 圧縮速度 圧縮率 画質
キャプチャ
動画編集
インターネット
インゲーム
最速 二の次 非劣化
速い方が良い それなり ほぼ非劣化
遅くても良い 高い方が良い なるべく
遅くても良い 高い方が良い 高い方が良い
12
(13)第
1弾:キャプチャ
30∼60fpsで動くゲームの映像を漏らさず
リアルタイムでコピーして圧縮する
速度が足りないとフレームドロップが起き、
撮った映像が実際よりカクカクになる
更に速度が足りないとゲーム自体も遅くなる
後々の圧縮で画質が下がるので、
この段階では画質も劣化させたくない
13
(14)(15)(16)×まちがい
無圧縮は非常に容量が増える
1画素RGB24bit(3バイト)
毎フレーム律儀にキャプチャ
640x480x3バイト×60fps=53MB/s
これだけ大きいとHDDへの書き込みも余計な負荷に
そもそも容量が足りない
16
(17)可逆圧縮コーデックを使う
可逆圧縮とは?
「圧縮」しても「逆」に戻すことが「可」能
エンコード前とデコード後の内容が一致
劣化する物は非可逆圧縮
ほぼ無圧縮の1/2未満のサイズに
17
(18)コラム:可逆圧縮コーデックの例
Huffyuv
古くからある可逆圧縮コーデック
名前通り”Huff”man符号とYUV色空間への変換
などによって可逆圧縮を行う
有名だが、マルチコア・SIMD最適化ビルドが無いため
現在利用するのは非推奨
対応した派生ビルドもあるが、通常版と互換性が無いため
受け渡しに使う場合は非推奨
もしくはどうせフリーソフトなので両方のPCに入れる
18
(19)おすすめキャプチャソフト
Fraps
シェアウェア(37ドル)・老舗の動画キャプチャ
DXtory
シェアウェア(3600円)・更新が頻繁でWin8対応
両方とも独自コーデックを利用しており、
高速かつ非劣化かつ簡単操作でキャプチャが可能
19
(20)アマ何とかは?
フリーだが以下の理由により非推奨
Windows Vista/7/8非サポート
!このせいで録画自体が上級者向けになっている
OpenGL/DirectX10以降非対応
有料の独自コーデックが64bit非対応
!64bitの動画編集ソフトで直接読めない
20
(21)キャプチャまとめ
速い方が良いけど無圧縮はデメリットの方が
大きいので、可逆圧縮コーデックを使う
FrapsかDXtoryを使えば不自由しない
(22)第
2弾:動画編集
PVなどの動画編集や、
その素材となるファイルの扱い
キャプチャほどのエンコード速度は必要無いが、
モチベーションが下がらない程度の速度と
非劣化もしくはそれに近い高画質が必要
22
(23)おすすめコーデック
Utvideo Codec
国産でフリー。ニコマスPが編集作業の為に開発
現在はMac版も出て最強に近い
Lagarith Codec
海外産フリー。Utvideoより数%良く縮む
可逆圧縮の数%=数百MB単位なので結構重要
23
(24)コラム:ファイルの受け渡し時
素材はなるべく高画質で渡したい!
キャプチャしたままのファイルは凄まじく大きい
FrapsやDXtoryは独自コーデックなので、
ソフトを相手の人にも入れてもらう必要がある
LagarithもしくはH.264高ビットレートなど、
高画質で容量の小さくなるコーデックに変換する
24
(25)第
3弾:インターネット
Youtube、ニコニコ動画、Vimeoなど
インターネットの動画サイトに投稿する場合
上記3サイトはどれも.mp4(H.264/AAC)が標準
となっているのでこれを対象に
25
(26)H.264の圧縮設定
プロファイルによって、同じビットレートでも
圧縮処理が大きく変わる
Baseline
シンプルなフレーム予測とエントロピー符号化
Main
Baselineに重み付け予測などの処理を追加
High
Mainに8x8画素離散コサイン変換、量子化行列等を追加
26
(27)じゃあ
High/高ビットレートで良いの?
ところがどっこい
ニコニコ動画にはエコノミーモードが存在
現在はBaseline、29.97fps
画質が激しく落ち、
元が60fpsの場合カクカクにもなる
ポータブル機器などはMainまで対応のものが多い
27
(28)エコノミー回避のススメ
Main/Highでビットレートを詰めた方が
エコノミー化された動画よりも高画質になる
現在の上限は445kbps(445440bps)(音声含)
445440bpsピッタリという訳では無いので
再生テスト必須
28
(29) コラム:
H.264のレベルについて
H.264では、動画の解像度とフレームレートによる
秒間ブロックサイズによってレベルが定められている
参考:MobileHackerz
ニコニコ動画の推奨はLevel 3.1で、これは
720x480@80fps、1280x720@30fpsまで対象
60fpsの場合は1280x720以上のゲームでも
低解像度にリサイズするのが必須
29
(30)音声コーデックは?
一般的にAACと言えば、
iTunesなどにも使われるAAC-LCが主流だが、
極低ビットレートの場合はHE-AACを使った方が
ノイズが少なく綺麗に聴こえる
48kbpsでも不快なノイズはほぼ聴こえない
LC=Low Complexity
HE=High Efficiency
30
(31)コラム:
つんでれんこ
名前はふざけているけど優秀なソフト
質問対話形式で.mp4のエンコード設定を行える
必要ソフトを自動インストールしてくれる
エコノミー回避、HE-AAC、Youtubeにも対応
最終版が9個(!?)出ており、今後問題が出た場合は
派生の夏蓮根の方を使用することを推奨
31
(32)コラム:ニコニコ以外
YoutubeとVimeoはフルHDにも対応しており
ビットレートの制約も少ないが
どちらも30fpsまでしか対応していないので
アップロードする場合は画質重視で
32
(33)インターネット動画まとめ
実質.mp4(H.264/AAC)一択
エコノミー回避をするかしないかは良く検討する
エンコード初心者はまずつんでれんこを使う
YoutubeやVimeoは30fpsになることを考慮
33
(34)第
4弾:インゲームムービー
ゲーム中で再生する動画
DirectShowで使われるコーデックは完全に環境依存で
ffdshowなどで置き換えられる可能性があり、
それによるバグが起こり得る
MSはゲーム開発においてDirectShowを非推奨API指定
Media Foundationが現在の推奨API(だがVista以降)
万全を期すならゲームプログラム側でデコーダを搭載
34
(35)まとめ
キャプチャはFrapsかDXtoryで
動画編集素材には可逆圧縮コーデックを
インターネットに上げる動画はx264で作成
ゲーム内ムービー再生は結構修羅の道
35
(36)会場での
Q&A(1)
デコード搭載とは具体的には?
動画ファイルの読み込み
→デコードしてフレームを取り出す
→フレームバッファやテクスチャにレンダリング
といった処理を実装すること
36
(37)会場での
Q&A(2)
ゲームに直接組み込めるデコーダの例とは?
MPEG系(H.264)は特許のため基本全てアウト
Ogg Theora・On2 VP8などのオープンソース
Binkなどのゲーム用動画ミドルウェアもある
37
(38)会場での
Q&A(3)
エコノミーモードの詳細を知りたい
平日18∼26時、休日12∼26時の
ピークタイムに実施される一般会員向けの帯域制限
ビットレートの高い動画だけエコノミーモードの動画が
一般会員に再生されてしまう
Baseline/Level3.0、360kbps、29.970fps
AAC-LC 約64kbps と無視できないレベルの低画質・低音質になる
一般会員の割合はアクティブユーザのおよそ2/3
ほとんどの視聴者が低画質の方だけで判断してしまうことを
未然に防ぐためにエコノミー回避を行うのはかなり効果あり
38
(39)会場での
Q&A(4)
H.265(HEVC)が出たらそっちの方が良い?
対応しているエンコーダ・デコーダがまだ無い
今週規格として承認されたばかり
H.265を用いる4K・8K放送開始が早まったので
これから順次出てくると思われる
39
(40)会場での
Q&A(5)
コーデックのソースコードは公開されている?
Utvideo,Lagarith,x264,VP8などは
ソースが公開されており、
マルチコア・SIMD(SSE/AVX)対応アセンブリ
も付属しているので並列化の参考にも
40
(41)おまけ:インターレース
動画を奇数段目と偶数段目で交互に表示する
PCモニタはプログレッシブ(一括表示)なので
インターレース動画を再生すると描画されない段が
縞ノイズのように見えてしまう
PCゲームの場合は録画素材がプログレッシブなので、
設定を間違えない限りこの問題は起きない
起きるとエコノミー並に醜くなるので
編集ソフトの設定に注意
41