Slide 1

Slide 1 text

HTTP Live Streaming in iOS 2017/03/11 Battle Conference U30 Ryo Aoyama / ra1028 CyberAgent, Inc

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

FRESH!
 ϩάΠϯෆཁɾߴը࣭Ͱੜ์ૹ͕ݟ์୊

Slide 4

Slide 4 text

Contents ̋ ͬ͘͟ΓHLSʹ͍ͭͯ ̋ ΋ͬͱͬ͘͟ΓAVFoundationʹ͍ͭͯ ̋ σϞ

Slide 5

Slide 5 text

HLS

Slide 6

Slide 6 text

Appleۘ੡ͷετϦʔϛϯάಈը഑৴ϓϩτίϧ HTTP Live Streaming Live or VOD(Video On Demand) HLS ηάϝϯτϑΝΠϧ ʴ ϓϨΠϦετ

Slide 7

Slide 7 text

ಈըϑΝΠϧΛ͋ΔҰఆ࣌ؒͷࡉ͔͍MPEG2-TS ηάϝϯτϑΝΠϧʹ෼ׂͨ͠΋ͷ ηάϝϯτϑΝΠϧ .ts

Slide 8

Slide 8 text

ηάϝϯτϑΝΠϧͷҐஔɺ࠶ੜ࣌ؒɺߋ৽ස౓ͳͲͷ ৘ใ͕هࡌ͞ΕͨϝλσʔλϑΝΠϧ ϓϨΠϦετ .m3u8

Slide 9

Slide 9 text

ΦϦδφϧͷಈըϑΝΠϧ ηάϝϯτϑΝΠϧ܈ʹ෼ׂ

Slide 10

Slide 10 text

ߋ৽ස౓৘ใΛ࢖ͬͯ ఆظతʹϓϨΠϦετͷߋ৽Λ؂ࢹ

Slide 11

Slide 11 text

ߋ৽͕͋Ε͹࠷৽ͷ tsϑΝΠϧΛऔಘ͢Δ

Slide 12

Slide 12 text

ߋ৽͕ͳ͚Ε͹؂ࢹ͠ͳ͕Β ࣍ͷߋ৽·Ͱ଴ͭ ͜ͷ͕࣌ؒൃੜ͠ͳ͍Α͏ͷʹߋ৽ස౓ͱ TSϑΝΠϧ࠶ੜ࣌ؒ͸ௐ੔͢Δɻ

Slide 13

Slide 13 text

͜ͷλά͕͋Δ͜ͱͰϓϨΠϦετ ͸ऴྃ͢Δࣄ͕Ͱ͖ΔͨΊɺVODͱ Έͳ͢͜ͱ͕Ͱ͖Δɻ

Slide 14

Slide 14 text

جຊతʹ͸ɺ ಈըΛMPEG2-TSϑΝΠϧʹ෼ׂɺϓϨΠϦετΛߋ৽ ΫϥΠΞϯτଆͰϓϨΠϦετΛ؂ࢹɺߋ৽͞ΕͨΒ࠷৽ ͷ.tsϑΝΠϧΛ࠶ੜ ͜Ε͚ͩͰ׬݁͢Δγϯϓϧͳϓϩτίϧɻ HLS·ͱΊ

Slide 15

Slide 15 text

iOS୺຤ͰHLS͔ΒಈըΛ࠶ੜ͢Δʹ͸ AVFoundation

Slide 16

Slide 16 text

ࣸਅɺԻָɺಈըͷAPIΛఏڙ͢ΔɺiOS, macOS, tvOS౳ ޲͚ͷFrameworkɻ HLS͸Apple੡ͷͨΊެࣜͰڧྗʹαϙʔτ͞Ε͍ͯΔɻ ͨͩ͠ɺཧղ͠೉͍APIͱ҉໧ͷ࢓༷͕͖ͭ·ͱ͏… AVFoundation

Slide 17

Slide 17 text

AVAsset ಈըࣗମͷϝσΟΞσʔλ΍ϝλσʔλΛϩʔυ͠ɺอ࣋ ͢ΔΫϥεɻ ͜ͷΫϥεΛҾ਺ͱͯ͠ ͷΠϯελϯεΛ࡞ Δɻ AVPlayerItem

Slide 18

Slide 18 text

AVPlayerItem ಈըͷ࠶ੜεςʔλε΍λΠϜυϝλσʔλͳͲΛऔಘ͢ ΔΫϥεɻ ഔհͱͯ͠AVAssetͷ৘ใΛऔಘ͢Δ͜ͱ͕Ͱ͖Δɻ ͜ͷΫϥεΛҾ਺ͱͯ͠ ͷΠϯελϯεΛ࡞Δɻ AVPlayer

Slide 19

Slide 19 text

AVPlayer ಈըͷ࠶ੜɺఀࢭͳͲΛ؅ཧ͢ΔίϯτϩʔϥΫϥεɻ Ի੠ɺ࠶ੜϨʔτͷઃఆ΍γʔΫͳͲ΋͜ͷΫϥεΛհ͠ ͯߦ͏ɻ ͜ͷΫϥεΛ ʹઃఆ͢Δ͜ͱͰಈըΛඳը ͢Δ͜ͱ͕Ͱ͖Δɻ AVPlayerLayer

Slide 20

Slide 20 text

AVPlayerLayer AVPlayer͔Βͷ৘ใΛ࢖ͬͯಈըΛඳը͢ΔUIΛఏڙ͢Δ Ϋϥεɻ CALayerͷαϒΫϥεͳͷͰUIViewͷlayerClassΛ overrideͯ͠࢖༻͢Δ͜ͱ͕ଟ͍ɻ

Slide 21

Slide 21 text

AVPlayerItem AVAsset AVPlayer ಈը৘ใͷऔಘ׬ྃ(࠶ੜՄೳ) AVPlayerLayer UIView ΠϯελϯεΛੜ੒ (ϝΠϯεϨουʂ) දࣔ४උ׬ྃ UIʹಈը৘ใΛ༩͑ɺ ඳըͤ͞Δ

Slide 22

Slide 22 text

AVPlayerItem AVAsset AVPlayer AVPlayerLayer UIView ಈըΛมߋ͢Δ৔߹͸͜Ε Βͷάϧʔϓશͯഁغ͢Δ ಛʹͷ̎ͭ͸ಉҰεϨου Ͱಉ࣌ʹഁغ

Slide 23

Slide 23 text

ࡉ͔ͳ੍ޚΛߦΘͳ͍࠶ੜ·Ͱ͸ɺ͔ͳΓ؆қతʹHLSΛ ѻ͏ࣄ͕Ͱ͖Δɻ νϡʔχϯάͷͨΊʹϚϧνεϨουͰѻ͏ʹ͸஫ҙ͕ඞ ཁɻ AVFoundation·ͱΊ

Slide 24

Slide 24 text

Demo

Slide 25

Slide 25 text

഑৴αʔόʔͱͯ͠ΧϝϥͰࡱͬ ͨಈը͔ΒHLSΛ഑৴͢Δɻ Demo αʔόʔiPhoneʹΞΫηεͯ͠ AVFoundationͰ࠶ੜ͢Δɻ

Slide 26

Slide 26 text

Demo GitHub Repository: https://github.com/ra1028/LiveStreamingApp

Slide 27

Slide 27 text

iOSͷAVFoundationɺAndroidͷExoPlayerͳͲʹΑͬͯ ωΠςΟϒͰ΋ڧྗʹαϙʔτ͞Ε͍ͯΔɻ iPhoneαʔόʔͰ΋഑৴Ͱ͖ͯ͠·͏΄Ͳγϯϓϧͳಈ ը഑৴ϓϩτίϧɻ Adaptive bitrate streamingͰճઢ଎౓ʹΑΓө૾඼࣭ Λ੾Γସ͑ͯɺ҆ఆͨ͠࠶ੜΛ୲อͰ͖Δɻ ·ͱΊ