Slide 1

Slide 1 text

明日から使える画質の話 合同会社DMM.com EC&デジタルコンテンツ本部 動画配信事業部 配信基盤グループ グループリーダー (@yanoshi)

Slide 2

Slide 2 text

NOW LOADING 2

Slide 3

Slide 3 text

3 回目の登壇です 02 お久しぶりです 会津大 リモートLTの時代が来るとは これが 新しい生活様式なのね

Slide 4

Slide 4 text

4 回目の登壇です 02 スライド遅くなって すみません :pray: (マヤミトくん、お取り計らい頂きありがとうございます!) リモートLTの時代が来るとは これが 新しい生活様式なのね

Slide 5

Slide 5 text

5 回目の登壇です 02 DMMから やってきました 会津に行けないの残念 会津のおしゃけ美味しかった(。>﹏<。)

Slide 6

Slide 6 text

6 回目の登壇です 02 いぇーい みんな元気? ひきこもってますー? リモートワーク最高!!

Slide 7

Slide 7 text

7 回目の登壇です 02 ひきこもってますー? リモートワーク最高!! 3月

Slide 8

Slide 8 text

8 回目の登壇です 02 ひきこもってますー? リモートワーク最高!! 4月

Slide 9

Slide 9 text

9 回目の登壇です 02 ひきこもってますー? リモートワーク最高!! 5月

Slide 10

Slide 10 text

10 回目の登壇です 02 ということで リモートのできる 良い会社です

Slide 11

Slide 11 text

11 閑話休題 自己紹介します

Slide 12

Slide 12 text

12 PRESENTER PROFILE Masahito YANO 矢野 完人 所属: 動画配信事業部 配信基盤グループ GL 出身 奈良高専 / 奈良先端大 ID: yanoshi Twitter/HatenaBlog/Facebook/etc... 生息地 六本木、目黒 入社年度 2016年入社 仕事内容 動画等の配信基盤開発 最近やってくる事 DIY 新しい生活様式 強い車でドライブ

Slide 13

Slide 13 text

13 PRESENTER PROFILE Masahito YANO 矢野 完人 所属: 動画配信事業部 配信基盤グループ GL 出身 奈良高専 / 奈良先端大 ID: yanoshi Twitter/HatenaBlog/Facebook/etc... 生息地 六本木、目黒 入社年度 2016年入社 仕事内容 動画等の配信基盤開発 最近やってくる事 DIY 新しい生活様式 強い車でドライブ

Slide 14

Slide 14 text

DIY 14

Slide 15

Slide 15 text

15 DIY

Slide 16

Slide 16 text

16 55V OLED TV (BRAVIA A8F) 自作PC(Ryzen 3950X, RAM64GB, NVMe 1TBx2 RAID0) EIZO WQHD EIZO WUXGA EIZO WUXGA

Slide 17

Slide 17 text

新しい生活様式 17

Slide 18

Slide 18 text

18 新しい生活様式

Slide 19

Slide 19 text

ドライブ 19

Slide 20

Slide 20 text

20 ドライブ

Slide 21

Slide 21 text

21 ドライブ

Slide 22

Slide 22 text

22 ドライブ

Slide 23

Slide 23 text

23 ドライブ

Slide 24

Slide 24 text

24 楽しい!!!

Slide 25

Slide 25 text

25 PRESENTER PROFILE Masahito YANO 矢野 完人 所属: 動画配信事業部 配信基盤グループ GL 出身 奈良高専 / 奈良先端大 ID: yanoshi Twitter/HatenaBlog/Facebook/etc... 生息地 六本木、目黒 入社年度 2016年入社 仕事内容 動画等の配信基盤開発 最近やってくる事 DIY 新しい生活様式 強い車でドライブ

Slide 26

Slide 26 text

動画の配信基盤を 作っています 26

Slide 27

Slide 27 text

動画の配信基盤を 作っています 27 っと、その前にー

Slide 28

Slide 28 text

WARNING 注意事項 28

Slide 29

Slide 29 text

29 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して 提供することで合意しております。

Slide 30

Slide 30 text

30 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して 提供することで合意しております。

Slide 31

Slide 31 text

31 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して 提供することで合意しております。 みんな覚えて帰ってね!

Slide 32

Slide 32 text

弊社動画サービスはでかい 32

Slide 33

Slide 33 text

圧倒的コンテンツ量 35万 件以上 弊社動画サービスの規模感 33

Slide 34

Slide 34 text

大規模なストレージ容量! 増加 現状 10PB 1.2PB/年 弊社動画サービスの規模感 34

Slide 35

Slide 35 text

大量のトラフィック! 弊社動画サービスの規模感 35 103.1Gbps 121.65Gbps 151.3Gbps 197.35Gbps 259.18Gbps 280Gbps 340Gbps 390Gbps 0 50 100 150 200 250 300 350 400 450 2013 2014 2015 2016 2017 2018 2019 2020 対外トラフィック 2013 2014 2015 2016 2017 2018 2019 2020

Slide 36

Slide 36 text

売上: いっぱい 弊社動画サービスの規模感 36 これくらい 全社売上

Slide 37

Slide 37 text

売上: いっぱい 弊社動画サービスの規模感 37 これくらい 全社売上 これを支えてます!

Slide 38

Slide 38 text

売上: いっぱい 弊社動画サービスの規模感 38 これくらい 全社売上 これを支えてます! (ちなみに計算上は1日落とすと億円が消し飛びます)

Slide 39

Slide 39 text

売上: いっぱい 弊社動画サービスの規模感 39 これくらい 全社売上 『具体的には?』

Slide 40

Slide 40 text

40 ここを実現するためのシステムを開発 動画再生時

Slide 41

Slide 41 text

41 ここを実現するためのシステムを開発 動画再生時 更に具体的には?

Slide 42

Slide 42 text

42 42 42 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム

Slide 43

Slide 43 text

43 43 43 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム 動画を「再生」するには 結構苦労がある

Slide 44

Slide 44 text

44 44 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム 商品情報が 必要

Slide 45

Slide 45 text

45 45 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム エンコードが 必要

Slide 46

Slide 46 text

46 46 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム コンテンツの保護も 当然必要

Slide 47

Slide 47 text

47 47 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム この辺りのソフトウェアレイヤー を弊チームで開発

Slide 48

Slide 48 text

がんばってるよ! 48

Slide 49

Slide 49 text

49 回目の登壇時 01 「さいきょう」を紹介 さいきょうのキャッシュアーキテクチャ さいきょうのコンテンツ保護 さいきょうのエンコーダー

Slide 50

Slide 50 text

50 回目の登壇時 01 「さいきょう」を紹介 さいきょうのキャッシュアーキテクチャ さいきょうのコンテンツ保護 さいきょうのエンコーダー

Slide 51

Slide 51 text

コンテンツは増え続ける 毎日数十コンテンツが納品 51

Slide 52

Slide 52 text

動画配信を安定して行うには 適切なデータを作る必要がある 52

Slide 53

Slide 53 text

動画配信を安定して行うには 適切なデータを作る必要がある 53 いっぱいエンコード するよ

Slide 54

Slide 54 text

ストリームは複数用意するのが 普通 54 ABR: Adaptive BitRate 「画質: オート」とかそういうやつ

Slide 55

Slide 55 text

ストリームは複数用意するのが 普通 55 ABR: Adoptive BitRate 「画質: オート」とかそういうやつ

Slide 56

Slide 56 text

ストリームは複数用意するのが 普通 56 ABR: Adoptive BitRate 「画質: オート」とかそういうやつ いっぱいエンコード するよ

Slide 57

Slide 57 text

最近はVRがアツい 57 ユーザーに最高のVR体験を 届けたい! しかし…まだまだ過渡期なので デバイスが混沌

Slide 58

Slide 58 text

58 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps

Slide 59

Slide 59 text

59 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps ということで…

Slide 60

Slide 60 text

60 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps デバイスに最適なファイルを それぞれ用意します!

Slide 61

Slide 61 text

61 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps デバイスに最適なファイルを それぞれ用意します! いっぱいエンコード (ry

Slide 62

Slide 62 text

62 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps デバイスに最適なファイルを それぞれ用意します! VRに至っては普通に エンコードすると 0.0x~0.x fps程度

Slide 63

Slide 63 text

63 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps デバイスに最適なファイルを それぞれ用意します! エンコード時間 2週間/コンテンツとか あり得る

Slide 64

Slide 64 text

64 混沌とするデコーダ仕様 iPhone H.264: 4K 60fps Android H.264: Over4K 60fps (Snapdragon 8xx ) Oculus Go H.264: Over4K 60fps PC VR H.264: 4K 60fps / VP9: 8K 60fps PSVR H.264: 3.5K 60fps デバイスに最適なファイルを それぞれ用意します! そんな課題を解決

Slide 65

Slide 65 text

65 65 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム

Slide 66

Slide 66 text

66 66 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム JIRO Is Reliability-Oriented encoder

Slide 67

Slide 67 text

67 67 コンテンツ ホルダー DB 商品情報 ユーザー情報 低位のAPIレイヤー DB / REST API 上位のWeb Framework View / REST API PFが用意する共通基盤 静的キャッシュ基盤 ユーザー VR テレビ ゲーム スマホ PC ライブ配信 運用部門 エンコード システム 「JIRO」 一部のダウンロード配信 動的配信基盤 動的キャッシュ「VODST」 マルチDRMサーバー「mlic」 配信情報管理API/DB「st-api」 ストレージ CDN オフロード サービス API CMS 商品情報管理 システム JIRO Is Reliability-Oriented encoder JIRO 導入前

Slide 68

Slide 68 text

Before 温もり運用

Slide 69

Slide 69 text

Before 温もり運用

Slide 70

Slide 70 text

Before 温もり運用 かっこいい!エモい!でも大変!

Slide 71

Slide 71 text

71 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 動画ファイル

Slide 72

Slide 72 text

72 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 分割

Slide 73

Slide 73 text

分散処理 73 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder

Slide 74

Slide 74 text

結合 74 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder

Slide 75

Slide 75 text

結合 75 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder

Slide 76

Slide 76 text

結合 76 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 昼間の間、配信サーバー は暇している

Slide 77

Slide 77 text

結合 77 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 暇している 配信サーバーを エンコーダーしちゃおう!

Slide 78

Slide 78 text

78 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 突然生まれるエンコーダー161台

Slide 79

Slide 79 text

79 コスパ最強構成のエンコーダーシステム JIRO JIRO Is Reliability-Oriented encoder 突然生まれるエンコーダー161台 コスパ最強 十数倍の高速化

Slide 80

Slide 80 text

80 JIRO Is Reliability-Oriented encoder DMMアワード2020 チーム特別賞受賞

Slide 81

Slide 81 text

81 JIRO Is Reliability-Oriented encoder 頑張って作って良かった!

Slide 82

Slide 82 text

82 JIRO Is Reliability-Oriented encoder まだ途中半ば 画質を向上せねば

Slide 83

Slide 83 text

明日から使える画質の話 合同会社DMM.com EC&デジタルコンテンツ本部 動画配信事業部 配信基盤グループ グループリーダー (@yanoshi)

Slide 84

Slide 84 text

84 前提 みんなエンコードしてるよね? してると思って話すね! ちなみに我が家はRyzen 3950X + RTX2060 SUPERなの/// エンコードし放題だよ!(。>﹏<。)

Slide 85

Slide 85 text

85 今日話すこと そもそも画質とは? 画質を評価する手法について VMAFは良いぞ!

Slide 86

Slide 86 text

86 今日話すこと そもそも画質とは? 画質を評価する手法について VMAFは良いぞ!

Slide 87

Slide 87 text

87 そもそも画質とは? インターネットにて

Slide 88

Slide 88 text

88 そもそも画質とは? 見比べました!

Slide 89

Slide 89 text

89 そもそも画質とは? 拡大してこっちの ほうがボケが少ない から画質はきれいで す!

Slide 90

Slide 90 text

90 そもそも画質とは? こちらのほうが 容量が大きいので きれいです!

Slide 91

Slide 91 text

91 そもそも画質とは? 『本当にそれで良いのか?』

Slide 92

Slide 92 text

92 そもそも画質とは? 確かに感覚での評価は大事

Slide 93

Slide 93 text

93 そもそも画質とは? でも客観評価もしたくない?

Slide 94

Slide 94 text

94 そもそも画質とは? いいもの…ありますよ?

Slide 95

Slide 95 text

95 今日話すこと そもそも画質とは? 画質を評価する手法について VMAFは良いぞ!

Slide 96

Slide 96 text

96 画質を評価する手法について 実はパラメトリックに 評価する手法は色々ある

Slide 97

Slide 97 text

97 画質を評価する手法について 代表例: SSIM, PSNR, MSE

Slide 98

Slide 98 text

98 画質を評価する手法について 代表例: SSIM, PSNR, MSE

Slide 99

Slide 99 text

99 画質を評価する手法について 代表例: SSIM, PSNR, MSE MSEは差分 PSNRはノイズ SSIMは良い感じ

Slide 100

Slide 100 text

100 画質を評価する手法について とりあえずSSIMを 使っておけば十分かも

Slide 101

Slide 101 text

101 画質を評価する手法について とりあえずSSIMを 使っておけば十分かも 局所的な違いの方が人間 は気が付きやすいらしい それを数値化してくれる (詳しくはググって)

Slide 102

Slide 102 text

102 画質を評価する手法について SSIMはとても便利

Slide 103

Slide 103 text

103 画質を評価する手法について ffmpegでサクッと出せます (メモのご準備を)

Slide 104

Slide 104 text

104 画質を評価する手法について $ ffmpeg -i input1 -i input2 -filter_complex ssim -an -f null - 解像度が同じなら $ ffmpeg -i input1 -i input2 -filter_complex scale2ref,ssim -an -f null - 解像度が別なら

Slide 105

Slide 105 text

105 画質を評価する手法について SSIMが1に近いほどきれい

Slide 106

Slide 106 text

106 画質を評価する手法について 分かりやすくて最高! SSIMは神…?

Slide 107

Slide 107 text

107 画質を評価する手法について 分かりやすくて最高! SSIMは神…? 実はそうでもない

Slide 108

Slide 108 text

108 画質を評価する手法について 分かりやすくて最高! SSIMは神…? 動画コーデックの進化は 半端ない ex: H.265, VP9, AV1, H.266

Slide 109

Slide 109 text

109 画質を評価する手法について 分かりやすくて最高! SSIMは神…? 「人間的には変化を感じられない けど、実はすごく違う」 みたいなアルゴリズムに

Slide 110

Slide 110 text

110 画質を評価する手法について 分かりやすくて最高! SSIMは神…? 一体どうすればいいんだーーーー!?

Slide 111

Slide 111 text

111 今日話すこと そもそも画質とは? 画質を評価する手法について VMAFは良いぞ!

Slide 112

Slide 112 text

112 VMAFは良いぞ! そこでVMAFです

Slide 113

Slide 113 text

113 VMAFは良いぞ! VMAFとは? Netflixが作った知覚的な要素 を捉えた画質評価手法 (回帰分析とかしているらしい) https://github.com/Netflix/vmaf

Slide 114

Slide 114 text

114 VMAFは良いぞ! VMAFとは? 雑に言うと何か良い感じに 画質評価してくれるらしいぞ

Slide 115

Slide 115 text

115 VMAFは良いぞ! コマンド例(メモのご準備を) $ ffmpeg -i input1 –i input2 -filter_complex "[0:v]crop=w=1920:h=1080:x=0:y=0,settb=1/AVTB, setpts=PTS- STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS- STARTPTS[ref];[main][ref]libvmaf" -f null - 長い…

Slide 116

Slide 116 text

116 VMAFは良いぞ! 更に ffmpegも色々と気を使う必要 があるぞ (場合によっては要ビルド) (あと処理時間も結構掛かる)

Slide 117

Slide 117 text

117 VMAFは良いぞ! 更に ffmpegも色々と気を使う必要 があるぞ (場合によっては要ビルド) (あと処理時間も結構掛かる) 一体どうすればいいんだーーーー!?

Slide 118

Slide 118 text

118 VMAFは良いぞ! いいもの…ありますよ?

Slide 119

Slide 119 text

119 VMAFは良いぞ! https://github.com/yanoshi/vagrant-aws-ffmpeg AWS上で良い感じにffmpegが動くなにかを構築してくれるやつ

Slide 120

Slide 120 text

120 VMAFは良いぞ! VMAFもサクッと動く(はず) rsyncでファイルも簡単同期

Slide 121

Slide 121 text

121 VMAFは良いぞ! なにはともあれ 自分用ffmpeg構築 スクリプトがあると便利です

Slide 122

Slide 122 text

122 VMAFは良いぞ! みんなもエンコードして VMAFで画質比較しような! https://qiita.com/yanoshi/items/544a361baf76b8114067 例: AV1の画質比較

Slide 123

Slide 123 text

123 まとめ • 客観的な画質評価もできるよ? • 色々手法があるけどVMAFは素敵 • 自分得なffmpeg構築スクリプトを持っておくと 便利だぞ! エンコードやっていこうな!

Slide 124

Slide 124 text

124 余談 北極圏に埋められてしまった

Slide 125

Slide 125 text

125 おしまい

Slide 126

Slide 126 text

126 【利用素材情報】 "Twemoji" by Twitter, Inc and other contributors is licensed under CC-BY 4.0