Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今更聞けないビデオコーデックの話
Search
yasei no otoko
February 02, 2013
How-to & DIY
0
94
今更聞けないビデオコーデックの話
ゲーム用PV作成のための情報まとめ
yasei no otoko
February 02, 2013
Tweet
Share
More Decks by yasei no otoko
See All by yasei no otoko
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
190
一人からのゲーム開発
yasei_no_otoko
1
910
Other Decks in How-to & DIY
See All in How-to & DIY
JAWS-UG と AWS - JAWS-UG 沖縄 Cloud on the Beach 2025
awsjcpm
0
120
スマートハウスの蓄電性能の効率化を実現してみた~電気自動車編~
runrunsan
0
330
251011「ひとりより、みんなで!」 九州の支部で始めた、新しい連携のかたち
east_takumi
2
110
2025年03月02日 メイカーズながおかまつり での講演 「コミュニティベースでの製品開発ものづくりフェアの役割」
takasumasakazu
0
280
HCIのデモに役立つ映像活用アイデア集 #WISS2024 ナイトセッション #HCIVideoCulture
bonsaistudiojp
2
1.1k
グローバルAWSユーザー コミュニティとJAWS-UG - JAWS FESTA 2024 in Hiroshima
awsjcpm
0
5k
人はなぜコミュニティとつながると幸せを感じるのか
448jp
3
340
How to create better speaker proposals
logico_jp
2
1.2k
自分がご機嫌になれる 素敵な場所を守るために
kenichirokimura
3
500
Node-REDでセンサーなどから起動させるカメラノードを作ったよ IoTLT vol123 #iotlt
n0bisuke2
0
110
AIお菓子ロッカー
keicafeblack
0
230
AWSコミュニティプログラムとJAWS-UGアップデート / JAWS-UG函館 勉強会 vol.14
awsjcpm
2
170
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Faster Mobile Websites
deanohume
310
31k
Visualization
eitanlees
150
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Thoughts on Productivity
jonyablonski
73
5k
The Language of Interfaces
destraynor
162
25k
Become a Pro
speakerdeck
PRO
31
5.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Invisible Side of Design
smashingmag
302
51k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Balancing Empowerment & Direction
lara
5
790
Building Adaptive Systems
keathley
44
2.9k
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