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
ピクシブの大規模ライブ配信 / ImageFlux Live
Search
ImageFlux
January 26, 2018
Technology
6
11k
ピクシブの大規模ライブ配信 / ImageFlux Live
ImageFlux meetup #1
MICHII Shunsuke, pixiv Technologies Inc.
2018-01-25
ImageFlux
January 26, 2018
Tweet
Share
More Decks by ImageFlux
See All by ImageFlux
ImageFluxについて / CAMPHOR- 2021-12-18
imageflux
0
640
画像処理サービスを作る際の落とし穴をImageFluxではいかにして超えてきたか / ImageFlux meetup #4 (5)
imageflux
1
3.5k
Webサービスにおける画像変換の実践 / ImageFlux meetup - hands-on
imageflux
2
19k
最高の購入体験を実現するための画像ダイナミックチューニング / ImageFlux meetup - Guest session #1
imageflux
3
18k
ImageFlux Live Streamingでサービス開発に集中する / ImageFlux meetup #2 - Guest Session #3
imageflux
0
5.9k
ImageFlux Live Streamingについて
imageflux
0
32k
ImageFlux Updates 2018
imageflux
2
1.4k
Other Decks in Technology
See All in Technology
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
230
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
560
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
130
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
210
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
170
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
640
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
460
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
130
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
350
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
1
750
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
64
For a Future-Friendly Web
brad_frost
182
10k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
The Spectacular Lies of Maps
axbom
PRO
1
520
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
RailsConf 2023
tenderlove
30
1.3k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
330
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
110
Transcript
େنϥΠϒ৴ MICHII Shunsuke | pixiv Technologies Inc. ImageFlux meetup #1
2018-01-25 ٕज़ηογϣϯ
MICHII Shunsuke | harukasan ImageFluxࣄۀऀ ϐΫγϒςΫϊϩδʔζגࣜձࣾࣥߦһ ImageFluxͰGoΛॻ͍ͨΓΠϯϑϥपΓΛ୲
ImageFlux Live • ϒϥβ͔ΒϓϥάΠϯෆཁͰϥΠϒ৴Λ։࢝ • HLSܗࣜͰϒϥβɺϞόΠϧΞϓϦʹ৴ • hls.jsͳͲҰൠతͳHLSΫϥΠΞϯτͰ࠶ੜՄೳ • ͖ͳղ૾/࣭ʹεέʔϦϯάͯ͠৴
ࣄྫ: pixiv Sketch Live
ࣄྫ: pixiv ONE • ϐΫγϒॳͷϥΠϒυϩʔΠϯάΠϕϯτ • ಉ࣌ࢹௌऀ: 5,000ϢʔβʔҎ্ • ϒϥβ͔Βͷେن৴ࣄྫ
ImageFluxͱϥΠϒ৴ • ImageFluxͷϛογϣϯ: ϐΫγϒͷٕज़ΛεϐϯΞτ͢Δ͜ͱͰϐΫγϒͷٕज़্Λࢦ͢ • pixiv Sketch LiveͷͨΊʹImageFluxνʔϜͰϥΠϒ৴ಈతมΛ։ൃ • ϥΠϒ৴ಈతมΛαʔϏεͱͯ͠ఏڙ༧ఆ
• ϐΫγϒͱͯ͠ImageFluxͱͯ͠ϥΠϒ৴ΛڧԽ
ImageFlux Live ৴ऀ ImageFlux Live WebRTC HLS ࢹௌऀ • WebRTCετϦʔϜͰड͚औͬͨಈըΛHLSʹมͯ͠৴
• HLSܗࣜʹม͢Δ͜ͱͰɺଓΛؾʹͤͣେن৴͕Մೳ • WebRTCͳͷͰԆɺ͔ͭHLSͳͷͰେن৴Ͱ͖Δʂ
HLS (HTTP Live Streaming) • Apple͕։ൃͨ͠ϥΠϒετϦʔϛϯά༷ • ϒϥβ/iOS/AndroidͰ࠶ੜՄೳ • iOS:
ωΠςΟϒͰରԠ • Android: ExoPlayer • ϒϥβ: hls.js
HLS (HTTP Live Streaming) .m3u8 hls0.ts hls1.ts hls2.ts ϓϨΠϦετϑΝΠϧ ಈըετϦʔϜϑΝΠϧ
#EXTM3U #EXT-X-TARGETDURATION:3 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:3.00000, hls0.ts #EXTINF:3.00000, hls1.ts #EXTINF:3.00000, hls2.ts ϑΝΠϧͷ͞
HLS (HTTP Live Streaming) .m3u8 hls0.ts hls1.ts ϓϨΠϠʔ #EXTM3U #EXT-X-TARGETDURATION:3
#EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:3.00000, hls0.ts #EXTINF:3.00000, hls1.ts ϙʔϦϯά
HLS (HTTP Live Streaming) .m3u8 hls0.ts hls1.ts ϓϨΠϠʔ ϙʔϦϯά #EXTM3U
#EXT-X-TARGETDURATION:3 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:3.00000, hls0.ts #EXTINF:3.00000, hls1.ts
HLS (HTTP Live Streaming) .m3u8 hls0.ts hls1.ts hls2.ts ϓϨΠϠʔ #EXTM3U
#EXT-X-TARGETDURATION:3 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:3.00000, hls0.ts #EXTINF:3.00000, hls1.ts #EXTINF:3.00000, hls2.ts ϙʔϦϯά
HLS (HTTP Live Streaming) .m3u8 hls0.ts hls1.ts hls2.ts ϓϨΠϠʔ #EXTM3U
#EXT-X-TARGETDURATION:3 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:3.00000, hls0.ts #EXTINF:3.00000, hls1.ts #EXTINF:3.00000, hls2.ts ϙʔϦϯά
HLSͱԆ • ηάϝϯτϑΝΠϧͷ͞ʹ࠷ͷͳ͕͞ • EXT-X-STARTλάΛ͏ͱϓϨΠϦετͷ࠶ੜΦϑηοτΛܾΊΒΕΔ • pixiv Sketch LiveͷઃఆͩͱԆ10ʙඵ͘Β͍ •
͍·ͷͱ͜ΖؤுΔͱ3ඵ͘Β͍·ͰॖΊͦ͏
γεςϜߏ Transcoder Transcoder Transcoder RTP stream Stream Manager Msgpack stream
TS TS TS ৴ऀ WebRTC SFU WebRTC API Transcoder: H.264/AVC, OpusετϦʔϜΛ τϥϯείʔυ͠ɺMPEG2-TS ʹmuxingͯ͠ग़ྗ Stream Manager: Transcoderͷϓϩηεཧ RTPετϦʔϜΛύʔε͠ɺॱং ੍ޚΛߦͬͯTranscoderʹ͓͘Δ Transcoder͕ग़ྗͨ͠TSϑΝΠϧ ΛHLSʹه API: ετϦʔϜΛ࢝ΊΔAPI ·ͩαʔϏε༷͕ܾ·͍ͬͯ·ͤΜ
WebRTC SFU • WebRTC SFU / ηογϣϯཧʹWebRTC SFU SoraΛ࠾༻ •
Sora͕ղআͨ͠RTPετϦʔϜΛStream Managerʹసૹ RTP stream WebRTC SFU WebRTC
Stream Manager Transcoder Stream Manager RTP stream UDP HTTP API
TCP • GoͰॻ͔Εͨγϯάϧϓϩηεαʔό • ඞཁͳͷTranscoderϓϩηεΛىಈ • RTPετϦʔϜΛσίʔυɺύʔεͯ͠Msgpackʹ٧Ίͯ͠τϥϯείʔμʹసૹ • RTPετϦʔϜUDPͷͨΊॱং੍ޚɺόοϑΝϦϯά͕ඞཁʹͳΔ Msgpack
RTP • ϦΞϧλΠϜੑͷͨΊʹ࠶ૹ੍ޚͳͲΛল͍ͨϓϩτίϧ • UDPͳͷͰॱং੍ޚ͞Ε͍ͯͳ͍͕ɺγʔέϯε൪߸ؚ͕·Ε͍ͯΔͷͰ γʔέϯε൪߸Λϕʔεʹฒͼସ͑Δඞཁ͕͋Δ • RFC3350(RTP)ͰϖΠϩʔυͷ༰·Ͱఆٛ͞Ε͍ͯͳ͍ • H.264:
RFC6184 • Opus: RFC7587
Transcoder • RustͰॻ͔ΕͨCLIϓϩηε • bindgenΛར༻ͯ͠C++ͷSDKΛόΠϯυ • livavformatΛར༻ͯ͠ԻͱಈըΛmuxing Tesla NVIDIA Video
Codec SDK Transcoder Libavformat
NVDEC/NVENC • NVIDIA Tesla GPUʹࡌ͞Ε͍ͯΔNVDEC/NVENCΛར༻ https://developer.nvidia.com/nvidia-video-codec-sdk
NVDEC/NVENC • ࣮ࡍʹσίʔυ/ΤϯίʔυॲཧΛΔͷCUDAίΞͰͳ͘ઐ༻νοϓ • ઐ༻νοϓͷʹΑͬͯॲཧͰ͖ΔετϦʔϜ͕ܾ·Δ • decoder/encoder/cudaͦΕͧΕͷෛՙΛϞχλϦϯά͢Δͷ͕ॏཁ • CUDAεέʔϦϯάʹ͚ͩ༻
NVDEC/NVENC Τϯίʔμෛՙ͕ߴΊ
Rust • ͍͞͠ΐʹࢼͯ͠ΒͬͨΞϧόΠτ͕Ұ൪͘ॻ͚Δͷ͕Rustͩͬͨ • ϝϞϦ·ΘΓͷॻ͖ํ͕C++ΑΓ҆͘͢͝શ/؆୯ • cgoͱҧͬͯbindgenόΠϯσΟϯάίʔυΛੜͯ͘͠ΕΔͷͰཧղ͠ ͍͢
ࠓޙͷల • αʔϏε༷ͷܾఆ • ύέοτϩε࣌ͷΤϥʔॲཧ্ • ϋʔυΣΞΤϯίʔμͷݕূ • αʔϏεͱͯ͠ϦϦʔεʂ
·ͱΊ • ImageFluxͰϥΠϒ৴ߦ͍͖ͬͯ·͢ʂ • ·ͩαʔϏε༷͕ܾ·͍ͬͯͳ͍ͨΊώΞϦϯάΛߦ͍ͬͯΔஈ֊Ͱ͢ • ڵຯ͋Δํੋඇ͓͕͚͍ͩ͘͞