Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今更聞けないビデオコーデックの話
Search
yasei no otoko
February 02, 2013
How-to & DIY
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今更聞けないビデオコーデックの話
ゲーム用PV作成のための情報まとめ
yasei no otoko
February 02, 2013
More Decks by yasei no otoko
See All by yasei no otoko
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
74
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
220
一人からのゲーム開発
yasei_no_otoko
1
920
Other Decks in How-to & DIY
See All in How-to & DIY
スタックチャンはカワイイの夢を見るか?
syumme01
0
160
エッジで動くNode-REDを作る実験 #noderedjp #noderedcon
n0bisuke2
0
630
ネガティブをねじ伏せ、n=1のキャリアに変える技術
subroh0508
1
1.2k
ときメモは 運営が30年かけて “実プレイ”していた
mzryuka
0
110
2025版 鯖落ちパーツで安価に機械学習用マシンを作ってみる
bobfromjapan
0
960
チームパフォーマンスを高めるための2種類のセルフマネジメント / Two Types of Self-Management for Improving Team Performance
iwashi86
4
880
ModuleLLM、最前線!
anoken
1
380
キャリア科目では教えてくれない、就活を生き抜く法則
logica0419
2
310
いしかわ暮らしセミナー~知って安心!移住とお金講座~
matyuda
0
290
Node-REDでセンサーなどから起動させるカメラノードを作ったよ IoTLT vol123 #iotlt
n0bisuke2
0
170
[電子工作]クリップモーターをつくろう
oriontakemura
1
890
お前も同人作家にならないか? 技術系同人誌制作入門
arkw
3
120
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
840
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
How to make the Groovebox
asonas
2
2.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Being A Developer After 40
akosma
91
590k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
KATA
mclloyd
PRO
35
15k
Transcript
ࠓߋฉ͚ͳ͍ ϏσΦίʔσοΫͷ ੜͷஉ 1
ߨԋͷςʔϚ ήʔϜ։ൃʹ͓͚Δಈը࡞धཁͷߴ·Γ PVɺήʔϜϜʔϏʔͷ࡞ ಈըαΠτͷΞοϓϩʔυ ߴը࣭ͳΛ࡞͢ΔఔΛௐΔͷେม Ұͭʹ·ͱΊΑ͏ 2
ಈըͱ จࣈ௨Γʮಈ͘ʯʮըʯ ϑϨʔϜ͝ͱʹը͕ΓସΘ͍ͬͯ͘ σδλϧಈը੩ࢭըͷू·Γ gifΞχϝෳͷը૾ϑΝΠϧ͔Β࡞ΒΕΔ 3
͜͜Ͱٙ ʮgifී௨ͷը૾ϑΝΠϧΑΓ༰ྔ͕େ͖͍͚Ͳ flvͱ͔mp4ͦΜͳʹେ͖͘ͳ͍Αʁʯ !ίʔσοΫͷ͓͔͛ 4
Τϯίʔμʔ(ූ߸Խث)ͱσίʔμʔ(෮߸Խث) ͔ΒΔѹॖن֨ ը૾ίʔσοΫɺԻίʔσοΫɺಈը← ίʔσοΫ(CODEC)ѹॖ(COmp~)ͱ ৳ு(DEComp~)ΛΈ߹Θͤͨઐ༻ޠ ίʔσοΫͱ 5
.gifΑΓ͍ܰ.mp4ʁ جຊతʹ.mp4ͷಈըಉ͡ը࣭ɺ ղ૾ͷgifಈըΑΓϑΝΠϧαΠζ͕খ͍͞ !gifΑΓෳࡶͳॲཧͰѹॖ͍ͯ͠Δ͔Β ੲMotion JPEGͱ͍͏֤ϑϨʔϜΛJPEGͰ อଘ͢Δಈըܗࣜ͋ͬͨ 6
.mp4(MPEG-4)ͱ ͦΕࣗମͨͩͷϑΝΠϧίϯςφ Moving Picture Experts Group(MPEG) ͕نఆ͍ͯ͠ΔϑΝΠϧ֨ೲϑΥʔϚοτ ಈըϑΝΠϧԻϑΝΠϧ֨ೲͰ͖Δ 7
Ұൠతͳ.mp4ಈըͷத 動画コーデック:H.264 (MPEG4-‐‑‒AVC) AVC = Advanced Video Coding 先進的 動画 符号化 ⾳音声コーデック:AAC
AAC = Advanced Audio Coding 先進的 ⾳音響 符号化 8
H.264͕ͬͯΔ͜ͱ ۭؒม ϑϨʔϜؒ༧ଌ ͷըૉਫ਼ͷಈ͖ิঈ Πϯτϥ༧ଌ Τϯτϩϐʔූ߸Խ 9
Ϡό͍ 10
ಈըѹॖͷτϨʔυΦϑ ੵΈॏͳͬͨҒ͍ਓୡͷݚڀͷՌͷ͓͔͛Ͱɺ ը࣭ͱϑΝΠϧαΠζͷτϨʔυΦϑ΄΅ແ͍ ѹॖͱͰτϨʔυΦϑ͕ى͖Δ 11
ίʔσοΫͷ͍͚ ༻్ ѹॖ ѹॖ ը࣭ Ωϟϓνϟ ಈըฤू Πϯλʔωοτ ΠϯήʔϜ ࠷
ೋͷ࣍ ඇྼԽ ͍ํ͕ྑ͍ ͦΕͳΓ ΄΅ඇྼԽ ͯ͘ྑ͍ ߴ͍ํ͕ྑ͍ ͳΔ͘ ͯ͘ྑ͍ ߴ͍ํ͕ྑ͍ ߴ͍ํ͕ྑ͍ 12
ୈ1ɿΩϟϓνϟ 30ʙ60fpsͰಈ͘ήʔϜͷө૾Λ࿙Βͣ͞ ϦΞϧλΠϜͰίϐʔͯ͠ѹॖ͢Δ ͕Γͳ͍ͱϑϨʔϜυϩοϓ͕ى͖ɺ ࡱͬͨө૾͕࣮ࡍΑΓΧΫΧΫʹͳΔ ߋʹ͕Γͳ͍ͱήʔϜࣗମ͘ͳΔ ޙʑͷѹॖͰը࣭͕Լ͕ΔͷͰɺ ͜ͷஈ֊Ͱը࣭ྼԽͤͨ͘͞ͳ͍ 13
ͱը࣭͕྆ํඞཁ ͡Ό͋ѹॖͤͣʹࡱΖ͏ 14
ʁ 15
×·͕͍ͪ ແѹॖඇৗʹ༰ྔ͕૿͑Δ 1ըૉRGB24bit(3όΠτ) ຖϑϨʔϜّʹΩϟϓνϟ 640x480x3όΠτ×60fps=53MB/s ͜Ε͚ͩେ͖͍ͱHDDͷॻ͖ࠐΈ༨ܭͳෛՙʹ ͦͦ༰ྔ͕Γͳ͍ 16
ՄٯѹॖίʔσοΫΛ͏ Մٯѹॖͱʁ ʮѹॖʯͯ͠ʮٯʯʹ͢͜ͱ͕ʮՄʯೳ Τϯίʔυલͱσίʔυޙͷ༰͕Ұக ྼԽ͢ΔඇՄٯѹॖ ΄΅ແѹॖͷ1/2ະຬͷαΠζʹ 17
ίϥϜɿՄٯѹॖίʔσοΫͷྫ Huffyuv ݹ͔͘Β͋ΔՄٯѹॖίʔσοΫ ໊લ௨Γ”Huff”manූ߸ͱYUV৭ۭؒͷม ͳͲʹΑͬͯՄٯѹॖΛߦ͏ ༗໊͕ͩɺϚϧνίΞɾSIMD࠷దԽϏϧυ͕ແ͍ͨΊ ݱࡏར༻͢Δͷඇਪ ରԠͨ͠ੜϏϧυ͋Δ͕ɺ௨ৗ൛ͱޓੑ͕ແ͍ͨΊ ड͚͠ʹ͏߹ඇਪ ͘͠Ͳ͏ͤϑϦʔιϑτͳͷͰ྆ํͷPCʹೖΕΔ
18
͓͢͢ΊΩϟϓνϟιϑτ Fraps γΣΞΣΞ(37υϧ)ɾฮͷಈըΩϟϓνϟ DXtory γΣΞΣΞ(3600ԁ)ɾߋ৽͕සൟͰWin8ରԠ ྆ํͱಠࣗίʔσοΫΛར༻͓ͯ͠Γɺ ߴ͔ͭඇྼԽ͔ͭ؆୯ૢ࡞ͰΩϟϓνϟ͕Մೳ 19
ΞϚԿͱ͔ʁ ϑϦʔ͕ͩҎԼͷཧ༝ʹΑΓඇਪ Windows Vista/7/8ඇαϙʔτ !͜ͷ͍ͤͰըࣗମ্͕ڃऀ͚ʹͳ͍ͬͯΔ OpenGL/DirectX10Ҏ߱ඇରԠ ༗ྉͷಠࣗίʔσοΫ͕64bitඇରԠ !64bitͷಈըฤूιϑτͰಡΊͳ͍ 20
Ωϟϓνϟ·ͱΊ ͍ํ͕ྑ͍͚ͲແѹॖσϝϦοτͷํ͕ େ͖͍ͷͰɺՄٯѹॖίʔσοΫΛ͏ Fraps͔DXtoryΛ͑ෆࣗ༝͠ͳ͍ 21
ୈ2ɿಈըฤू PVͳͲͷಈըฤूɺ ͦͷૉࡐͱͳΔϑΝΠϧͷѻ͍ Ωϟϓνϟ΄ͲͷΤϯίʔυඞཁແ͍͕ɺ Ϟνϕʔγϣϯ͕Լ͕Βͳ͍ఔͷͱ ඇྼԽͦ͘͠Εʹ͍ۙߴը࣭͕ඞཁ 22
͓͢͢ΊίʔσοΫ Utvideo Codec ࠃ࢈ͰϑϦʔɻχίϚεP͕ฤू࡞ۀͷҝʹ։ൃ ݱࡏMac൛ग़ͯ࠷ڧʹ͍ۙ Lagarith Codec ւ֎࢈ϑϦʔɻUtvideoΑΓ%ྑ͘ॖΉ Մٯѹॖͷ%ʹඦMB୯ҐͳͷͰ݁ߏॏཁ 23
ίϥϜɿϑΝΠϧͷड͚࣌͠ ૉࡐͳΔ͘ߴը࣭Ͱ͍ͨ͠ʂ Ωϟϓνϟͨ͠··ͷϑΝΠϧੌ·͘͡େ͖͍ FrapsDXtoryಠࣗίʔσοΫͳͷͰɺ ιϑτΛ૬खͷਓʹೖΕͯΒ͏ඞཁ͕͋Δ Lagarith͘͠H.264ߴϏοτϨʔτͳͲɺ ߴը࣭Ͱ༰ྔͷখ͘͞ͳΔίʔσοΫʹม͢Δ 24
ୈ3ɿΠϯλʔωοτ YoutubeɺχίχίಈըɺVimeoͳͲ ΠϯλʔωοτͷಈըαΠτʹߘ͢Δ߹ ্ه3αΠτͲΕ.mp4(H.264/AAC)͕ඪ४ ͱͳ͍ͬͯΔͷͰ͜ΕΛରʹ 25
H.264ͷѹॖઃఆ ϓϩϑΝΠϧʹΑͬͯɺಉ͡ϏοτϨʔτͰ ѹॖॲཧ͕େ͖͘มΘΔ Baseline γϯϓϧͳϑϨʔϜ༧ଌͱΤϯτϩϐʔූ߸Խ Main BaselineʹॏΈ͚༧ଌͳͲͷॲཧΛՃ High Mainʹ8x8ըૉࢄίαΠϯมɺྔࢠԽߦྻΛՃ 26
͡Ό͋High/ߴϏοτϨʔτͰྑ͍ͷʁ ͱ͜Ζ͕Ͳ͍ͬ͜ χίχίಈըʹΤίϊϛʔϞʔυ͕ଘࡏ ݱࡏBaselineɺ29.97fps ը࣭͕ܹ͘͠མͪɺ ݩ͕60fpsͷ߹ΧΫΧΫʹͳΔ ϙʔλϒϧػثͳͲMain·ͰରԠͷͷ͕ଟ͍ 27
Τίϊϛʔճආͷεεϝ Main/HighͰϏοτϨʔτΛ٧Ίͨํ͕ ΤίϊϛʔԽ͞ΕͨಈըΑΓߴը࣭ʹͳΔ ݱࡏͷ্ݶ445kbps(445440bps)(Իؚ) 445440bpsϐολϦͱ͍͏༁Ͱແ͍ͷͰ ࠶ੜςετඞਢ 28
ɹίϥϜɿH.264ͷϨϕϧʹ͍ͭͯ H.264Ͱɺಈըͷղ૾ͱϑϨʔϜϨʔτʹΑΔ ඵؒϒϩοΫαΠζʹΑͬͯϨϕϧ͕ఆΊΒΕ͍ͯΔ ࢀߟɿMobileHackerz χίχίಈըͷਪLevel 3.1Ͱɺ͜Ε 720x480@80fpsɺ1280x720@30fps·Ͱର 60fpsͷ߹1280x720Ҏ্ͷήʔϜͰ ղ૾ʹϦαΠζ͢Δͷ͕ඞਢ 29
ԻίʔσοΫʁ ҰൠతʹAACͱݴ͑ɺ iTunesͳͲʹΘΕΔAAC-LC͕ओྲྀ͕ͩɺ ۃϏοτϨʔτͷ߹HE-AACΛͬͨํ͕ ϊΠζ͕গͳ͘៉ྷʹௌ͑͜Δ 48kbpsͰෆշͳϊΠζ΄΅ௌ͑͜ͳ͍ LCʹLow Complexity HEʹHigh Efficiency
30
ίϥϜɿͭΜͰΕΜ͜ ໊લ;͚͍ͯ͟Δ͚Ͳ༏लͳιϑτ ࣭ରܗࣜͰ.mp4ͷΤϯίʔυઃఆΛߦ͑Δ ඞཁιϑτΛࣗಈΠϯετʔϧͯ͘͠ΕΔ ΤίϊϛʔճආɺHE-AACɺYoutubeʹରԠ ࠷ऴ൛͕9ݸ(!?)ग़͓ͯΓɺࠓޙ͕ग़ͨ߹ ੜͷՆ࿇ࠜͷํΛ༻͢Δ͜ͱΛਪ 31
ίϥϜɿχίχίҎ֎ YoutubeͱVimeoϑϧHDʹରԠ͓ͯ͠Γ ϏοτϨʔτͷ੍গͳ͍͕ ͲͪΒ30fps·Ͱ͔͠ରԠ͍ͯ͠ͳ͍ͷͰ Ξοϓϩʔυ͢Δ߹ը࣭ॏࢹͰ 32
Πϯλʔωοτಈը·ͱΊ ࣮࣭.mp4(H.264/AAC)Ұ ΤίϊϛʔճආΛ͢Δ͔͠ͳ͍͔ྑ͘ݕ౼͢Δ Τϯίʔυॳ৺ऀ·ͣͭΜͰΕΜ͜Λ͏ YoutubeVimeo30fpsʹͳΔ͜ͱΛߟྀ 33
ୈ4ɿΠϯήʔϜϜʔϏʔ ήʔϜதͰ࠶ੜ͢Δಈը DirectShowͰΘΕΔίʔσοΫશʹڥґଘͰ ffdshowͳͲͰஔ͖͑ΒΕΔՄೳੑ͕͋Γɺ ͦΕʹΑΔόά͕ى͜ΓಘΔ MSήʔϜ։ൃʹ͓͍ͯDirectShowΛඇਪAPIࢦఆ Media Foundation͕ݱࡏͷਪAPIʢ͕ͩVistaҎ߱ʣ ສશΛظ͢ͳΒήʔϜϓϩάϥϜଆͰσίʔμΛࡌ 34
·ͱΊ ΩϟϓνϟFraps͔DXtoryͰ ಈըฤूૉࡐʹՄٯѹॖίʔσοΫΛ Πϯλʔωοτʹ্͛Δಈըx264Ͱ࡞ ήʔϜϜʔϏʔ࠶ੜ݁ߏमཏͷಓ 35
ձͰͷQ&A(1) σίʔυࡌͱ۩ମతʹʁ ಈըϑΝΠϧͷಡΈࠐΈ ˠσίʔυͯ͠ϑϨʔϜΛऔΓग़͢ ˠϑϨʔϜόοϑΝςΫενϟʹϨϯμϦϯά ͱ͍ͬͨॲཧΛ࣮͢Δ͜ͱ 36
ձͰͷQ&A(2) ήʔϜʹΈࠐΊΔσίʔμͷྫͱʁ MPEGܥ(H.264)ಛڐͷͨΊجຊશͯΞτ Ogg TheoraɾOn2 VP8ͳͲͷΦʔϓϯιʔε BinkͳͲͷήʔϜ༻ಈըϛυϧΣΞ͋Δ 37
ձͰͷQ&A(3) ΤίϊϛʔϞʔυͷৄࡉΛΓ͍ͨ ฏ18ʙ26࣌ɺٳ12ʙ26࣌ͷ ϐʔΫλΠϜʹ࣮ࢪ͞ΕΔҰൠձһ͚ͷଳҬ੍ݶ ϏοτϨʔτͷߴ͍ಈը͚ͩΤίϊϛʔϞʔυͷಈը͕ Ұൠձһʹ࠶ੜ͞Εͯ͠·͏ Baseline/Level3.0ɺ360kbpsɺ29.970fps AAC-LC 64kbpsɹͱແࢹͰ͖ͳ͍Ϩϕϧͷը࣭ɾԻ࣭ʹͳΔ Ұൠձһͷׂ߹ΞΫςΟϒϢʔβͷ͓Αͦ2/3
΄ͱΜͲͷࢹௌऀ͕ը࣭ͷํ͚ͩͰஅͯ͠͠·͏͜ͱΛ ະવʹ͙ͨΊʹΤίϊϛʔճආΛߦ͏ͷ͔ͳΓޮՌ͋Γ 38
ձͰͷQ&A(4) H.265(HEVC)͕ग़ͨΒͦͬͪͷํ͕ྑ͍ʁ ରԠ͍ͯ͠ΔΤϯίʔμɾσίʔμ͕·ͩແ͍ ࠓिن֨ͱͯ͠ঝೝ͞Ε͔ͨΓ H.265Λ༻͍Δ4Kɾ8K์ૹ։͕࢝ૣ·ͬͨͷͰ ͜Ε͔Βॱ࣍ग़ͯ͘ΔͱࢥΘΕΔ 39
ձͰͷQ&A(5) ίʔσοΫͷιʔείʔυެ։͞Ε͍ͯΔʁ Utvideo,Lagarith,x264,VP8ͳͲ ιʔε͕ެ։͞Ε͓ͯΓɺ ϚϧνίΞɾSIMD(SSE/AVX)ରԠΞηϯϒϦ ଐ͍ͯ͠ΔͷͰฒྻԽͷࢀߟʹ 40
͓·͚ɿΠϯλʔϨʔε ಈըΛحஈͱۮஈͰަޓʹදࣔ͢Δ PCϞχλϓϩάϨογϒ(Ұׅදࣔ)ͳͷͰ ΠϯλʔϨʔεಈըΛ࠶ੜ͢Δͱඳը͞Εͳ͍ஈ͕ ࣶϊΠζͷΑ͏ʹݟ͑ͯ͠·͏ PCήʔϜͷ߹ըૉࡐ͕ϓϩάϨογϒͳͷͰɺ ઃఆΛؒҧ͑ͳ͍ݶΓ͜ͷى͖ͳ͍ ى͖ΔͱΤίϊϛʔฒʹृ͘ͳΔͷͰ ฤूιϑτͷઃఆʹҙ 41