Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
"動画"配信のお話
Search
Yuta Imanishi
March 07, 2024
57
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
"動画"配信のお話
https://connpass.com/event/304679/
での登壇資料。
mse/emeの話に加えて、shaka-playerの設定方法についても軽く触れている。
Yuta Imanishi
March 07, 2024
More Decks by Yuta Imanishi
See All by Yuta Imanishi
動画配信の フロントエンドを支える 4年間とこれから
nisshii0313
1
660
動画配信のフロントエンドって何やってるの
nisshii0313
0
140
Electronで動画プレイヤー開発
nisshii0313
1
1.5k
Prometheusの話
nisshii0313
0
220
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
The World Runs on Bad Software
bkeepers
PRO
72
12k
Making Projects Easy
brettharned
120
6.7k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
740
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Rails Girls Zürich Keynote
gr2m
96
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
9
36k
Transcript
”動画”配信のお話 DMM.com 動画配信開発部 配信基盤G 今西勇太
2 自己紹介 名前: 今西勇太 (@nisshii0313) 所属: DMM.com 動画配信開発部 配信基盤G 最近は主にPS4/5、テレビ向けの
動画再生プレイヤーを触ってます (for DMM TV) 外部向けな勉強会の運営もやってます Think! Frontend by DMM 好き: まんがタイムきらら、内田真礼さん 近況報告: 思い立って自作PCしました。
3 自作PC組んだよ〜 構成はこんな感じです : https://jisaku.com/pc/FrLW5VHFETwsmj6gJBJSKf (もやし生活を回避するために、4070tiにしました。4080superはしんどい...) 大きなパーツに関しては白で統一してあります。 (白くて光る8pinケーブル買い足さなきゃ) (モジャモジャ配線もついでに綺麗にしたい) 4Kなホグワーツレガシーが快適に遊べてます。
その他、アニメの録画鯖を建てようとしてます。 完成すれば、各クール全アニメ履修できるね :+1: 受信用のアンテナ買わなきゃ...
本題です
None
DMMと言えば、やっぱり ”動画” ですよね!!
なので ”動画”配信の お話をします。
特に今日は、動画配信の フロントエンド の話をざっくりとします!
動画配信の フロントエンドって 何やってるの? DMM.com 動画配信開発部 配信基盤G 今西勇太
フロントエンドで動画を流すって... パッと思いつくのは video タグかと思います。 https://developer.mozilla.org/ja/docs/Web/HTML/Element/video
フロントエンドで動画を流すって... パッと思いつくのは video タグかと思います。 https://developer.mozilla.org/ja/docs/Web/HTML/Element/video ここがあんまり 嬉しくない...
なんで嬉しくないの? 大きく分けて2つ理由があります。 - ユーザーフレンドリーに再生したい - 悪い人に盗み見られるかも...
- ユーザーフレンドリーに再生したい - ユーザーの回線環境はまちまち (携帯な会社はどこも大変そうね...) - それでも安定して再生するために「ABR」って技術を使ってる (画質「AUTO」ってあるアレです) → 画角の異なる動画を複数(たくさん)用意して、適宜切り替えたい
→ videoタグにsourceで渡せるのって動画形式が異なるもの数本程度 (同じ動画形式で画角が異なるものを動的に切り替えるのは大変) → Media Source Extensions って技術が必要になる なんで嬉しくないの?
- ユーザーフレンドリーに再生したい → ABRの技術を使って、ユーザーに安定して視聴してもらうには、 Media Source Extensions (以降 MSE) の技術を使って再生する必要がある
(クロスブラウザ対応も考えると、なるべくWeb標準に乗っかっておきたい) ↑ 結局はJavaScriptからvideoタグの細かい機能を拡張するためのAPI ゴリゴリ書いても良いし、便利なライブラリも多々あります。 なんで嬉しくないの? 例: shaka-player(google製) 設定を入れると、ユーザーの帯域をとって 適切なbitrateで再生してくれる
設定できる項目の例 - enabled: これをtrueにしないとABRされない - defaultBandwidthEstimate: 帯域の初期値として置きたい値 (bit/sec) これをある程度高くしておくことで、巻き戻しができないような ライブ配信においても最初から綺麗に見てもらう、が実現できる
(その後の画質はABRされる) (補足) shaka-playerでのABR
なんで嬉しくないの? 大きく分けて2つ理由があります。 - ユーザーフレンドリーに再生したい - 悪い人に盗み見られるかも...
なんで嬉しくないの? - 悪い人に盗み見られるかも... - みんな大好き、著作権のお話です (cf. DRM) - 細かい話をするとキリがないので、とりあえず アニメやライブコンテンツ等を
「買った人だけ見れるようにする」の実現を考えます - そのためには、適宜暗号化しておいて、再生する前に 権利のあるユーザーだけ復号できる仕組みが必要 → Encrypted Media Extensions って技術が必要になる mp4だとコピーして 再生できちゃうよね...
なんで嬉しくないの? - 悪い人に盗み見られるかも... → 解決するためには、暗号化された動画を Encrypted Media Extensions (以降EME) の技術で復号して再生する
必要がある ↑これもMSEに基づいたJavaScriptなAPI MSEを扱いやすくしてくれるライブラリは大抵EME対応してくれている ので、難しく考えすぎなくてもOK shaka-playerでも もちろん対応してくれている!
(補足) shaka-playerでのEMEの設定 設定できる項目の例 - drm.servers: 各drmの技術に対応したlicense serverのURLを渡してあげる - drm.preferredKeySystems: 複数のdrmの技術を使用する場合に、どれから優先して使うかを
設定できる (PC/SP以外のデバイスによっては指定が必要) 他にも、セキュリティレベルの高いdrmを要求するコンテンツに対しては、 別途設定が必要だったり... googleやapple、ms等がデファクトスタンダードを各々作ってる デバイスごとに、対応非対応がある コンテンツの再生に必要なライセンス (鍵、有効期限等)を発行するサーバー
結論 動画配信のフロントエンドって何やってるの? - 色んな回線のユーザーが安定して動画を視聴できたり - 買った人だけがアニメを見れる 世界線を作るために、MSE/EME の技術 (に対応したライブラリを) 使って
快適に動画が見れる環境作りをしています。 (cf. https://github.com/shaka-project/shaka-player ありがとうGoogle 🙏) もちろん、再生ページ自体もサクサクじゃないとなので、 いわゆるwebフロントの最適化みたいなところもやってます 💪
最後に 新卒向けはこちら https://dmm.snar.jp/jobboard/detail.as px?id=3EUikQkb_Yg7oaaqCX9H2w 採用情報はこちら https://dmm-corp.com/recruit/engineer/ この後の懇親会でもぜひお話ししましょう! わいわい!!!