Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AbemaTVの動画配信を支えるサーバーサイドシステム

17,538 views

Published on

AbemaTV Developer Conference 2016
http://developer.abema.io/

Published in: Engineering
  • Be the first to comment

AbemaTVの動画配信を支えるサーバーサイドシステム

  1. 1. AbemaTVの動画配信を支える サーバーサイドシステム
  2. 2. 自己紹介 中澤 優一郎 プロジェクト経歴 - 2012/06~ AmebaスマートフォンPF - 2014/01~ 『タップル誕生』 - 2015/12~ 『AbemaTV』 担当領域 - サーバーサイド全般 好きな言語 - golang @hase_xpw
  3. 3. 株式会社 AbemaTV 2015 年 4 月 : 設立 「インターネットTV局」 2016 年 4 月 11 日 本開局 約 30 チャンネル 24 時間放送
  4. 4. 対応デバイス
  5. 5. A. TV のような体験 B. Internet コンテンツとしての体験 AbemaTV の特性 ザッピング 受動型視聴 シェア コメント
  6. 6. 特徴その1 受動型視聴 「リニア型放送」 番組表通りの 時間にだけ配信。 「TV」を再現!!
  7. 7. 特徴その2 ザッピング テレビのチャンネルを 次々変えていく動作… 「ザッピング」 フリックで 「ザッピング」 を再現!!
  8. 8. 特徴その3 コメント インターネットで おなじみの コメント機能を TV に融合!!
  9. 9. 切り抜き 10 秒程度 シェア
  10. 10. インターネットTV局
  11. 11. アジェンダ - 動画配信の基礎 - AbemaTVの動画配信システム - AbemaTVのシステム構成 - 全体アーキテクチャ - AbemaTV の開発スピード
  12. 12. 動画配信の基礎
  13. 13. 動画配信の歴史 2000 現在 【 1998 年頃〜】 主に UDP 上の Server Push型 Streaming 【 2006 年頃〜】 HTTP による 動画サービスへ 【 2008 年〜】 各社独自の HTTP Adaptive Streaming 【 2010 年】 MPEG-DASH (ISO/IEC 23009) 2010 【 1998 年】 Akamai 創業 CDN を活用したい 通信環境に あわせて 配信したい
  14. 14. プログレッシブダウンロード メディアファイルのうち、 ダウンロードできたところから再生 メディアファイル
  15. 15. プログレッシブダウンロード メディアファイルのうち、 ダウンロードできたところから再生 メディアファイル HTTP サーバに ファイルを置くだけ。 簡単!!!
  16. 16. ストリーミング 時間分割したデータを クライアントに順次転送・再生 元データ 時間分割
  17. 17. ストリーミング 撮影機材 時間分割したデータを クライアントに順次転送・再生 オンラインで 映像が生成される 生配信形態も可能!!
  18. 18. Adaptive Bitrate Streaming 元データ 時間分割 帯域心配…。 最初は画質低め。
  19. 19. Adaptive Bitrate Streaming 元データ 時間分割 まだ余裕があるぞ!
  20. 20. Adaptive Bitrate Streaming 元データ 時間分割 高画質へ シームレスに 切り替え!!
  21. 21. 初期のストリーミング 元データ 時間分割 TCP or UDP の専用プロトコル 専用サーバ・専用クライアントが必要。 大規模サービスのリソース用意するの大変。
  22. 22. HTTP Adaptive Streaming 元データ 時間分割 ファイルの集まりとして HTTP で転送 HTTP 関連のソリューションが使える! ライブラリ、CDN、リバースプロキシ など
  23. 23. HTTP Adaptive Streaming の 具体的な規格は…?
  24. 24. HLS (HTTP Live Streaming) TS TS TS #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100 #EXTINF:5.005, 100.ts #EXTINF:5.005, 101.ts #EXTINF:5.005, 102.ts M3U8 (M3U + utf8) 動画ファイル (MPEG2-TS) 過去 未来
  25. 25. HLS (HTTP Live Streaming) TS TS TS #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100 #EXTINF:5.005, 100.ts #EXTINF:5.005, 101.ts #EXTINF:5.005, 102.ts 過去 未来 M3U8 (M3U + utf8) 動画ファイル (MPEG2-TS)
  26. 26. HLS (HTTP Live Streaming) TS TS TS #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100 #EXTINF:5.005, 100.ts #EXTINF:5.005, 101.ts #EXTINF:5.005, 102.ts 過去 未来 M3U8 (M3U + utf8) 動画ファイル (MPEG2-TS)
  27. 27. HLS (HTTP Live Streaming) TS TS TS #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100 #EXTINF:5.005, 100.ts #EXTINF:5.005, 101.ts #EXTINF:5.005, 102.ts 過去 未来 M3U8 (M3U + utf8) 動画ファイル (MPEG2-TS)
  28. 28. ストリーミングサーバより 後ろでは何をしているの?
  29. 29. 映像が配信されるまで 映像処理 パッケージン グ 配信入力
  30. 30. 映像が配信されるまで 映像処理 パッケージン グ 配信入力
  31. 31. 映像が配信されるまで エンコード - 入力映像の変換 映像の合成 - テロップ挿入 映像処理 パッケージン グ 配信入力
  32. 32. 映像が配信されるまで パッケージング - 映像配信可能なAssetを生成する - m3u8+ts (HLS), mpd+fmp4 (MPEG-DASH) etc... - 映像ファイルの暗号化 (DRM) - 広告挿入 映像処理 パッケージン グ 配信入力
  33. 33. 映像が配信されるまで 配信 - クライアントに映像を配信する - HTTPだとCDNがよく使われる 映像処理 パッケージン グ 配信入力
  34. 34. AbemaTV の動画配信システム
  35. 35. 録画済み番組 広告 生放送 Streaming-Server 管理システム live encoder collector collector live encoder パッケージング入力 映像処理 配信 encoder CDN
  36. 36. AbemaTVにおける配信システム
  37. 37. AbemaTVにおける配信システム 録画済み番組 広告 生放送A Streaming-Server encoder CDN collector 生放送B encoder collector 管理システム encoder 配信の切り替え 自前開発
  38. 38. AbemaTVにおける配信システム 録画済み番組 広告 生放送A Streaming-Server encoder collector Schedule 録画済み番組 生放送A 生放送B 10:00 10:30 11:00 生放送B encoder collector 管理システム encoder 放送中 CDN
  39. 39. AbemaTVにおける配信システム 録画済み番組 広告 生放送A Streaming-Server encoder collector 生放送B encoder collector 管理システム encoder Schedule 録画済み番組 生放送A 生放送B 10:00 10:30 11:00 放送終了 放送開始 CDN
  40. 40. AbemaTVにおける配信システム 録画済み番組 広告 生放送A Streaming-Server encoder collector 生放送B encoder collector 管理システム encoder Schedule 録画済み番組 生放送A 生放送B 10:00 10:30 11:00 放送中 CDN
  41. 41. AbemaTVにおける配信システム 録画済み番組 広告 生放送A Streaming-Server encoder collector 生放送B encoder collector 管理システム encoder Schedule 録画済み番組 生放送A 生放送B 10:00 10:30 11:00 広告挿入 広告 CDN
  42. 42. Playlist はどうなっているのか #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100 #EXTINF:5.005, program_a_1000.ts #EXTINF:5.005, program_a_1001.ts #EXTINF:5.005, program_a_1002.ts #EXTINF:5.005, program_a_1003.ts
  43. 43. Playlist はどうなっているのか #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100000 #EXTINF:5.005, program_a_1000.ts #EXTINF:5.005, program_a_1001.ts #EXTINF:5.005, program_a_1002.ts #EXTINF:5.005, program_a_1003.ts Schedule 番組A 番組B 10:00 10:30 11:00
  44. 44. Playlist はどうなっているのか #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100838 #EXTINF:5.005, program_a_1838.ts #EXTINF:5.005, program_a_1839.ts #EXT-X-DISCONTINUITY #EXTINF:5.005, program_b_0001.ts #EXTINF:5.005, program_b_0002.ts Schedule 番組A 番組B 10:00 10:30 11:00
  45. 45. Playlist はどうなっているのか #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100840 #EXTINF:5.005, program_b_0001.ts #EXTINF:5.005, program_b_0002.ts #EXTINF:5.005, program_b_0003.ts #EXTINF:5.005, program_b_0004.ts Schedule 番組A 番組B 10:00 10:30 11:00
  46. 46. SEQUENCE #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100840 #EXTINF:5.005, program_b_0001.ts #EXTINF:5.005, program_b_0002.ts #EXTINF:5.005, program_b_0003.ts #EXTINF:5.005, program_b_0004.ts
  47. 47. SEQUENCE #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:100840 #EXTINF:5.005, program_b_0001.ts #EXTINF:5.005, program_b_0002.ts #EXTINF:5.005, program_b_0003.ts #EXTINF:5.005, program_b_0004.ts
  48. 48. SEQUENCE セグメント103 セグメント102 セグメント101 セグメント100 SEQUENCE 100 セグメント104 セグメント103 セグメント102 セグメント101 SEQUENCE 101 セグメント105 セグメント104 セグメント103 セグメント102 SEQUENCE 102 セグメント104 セグメント103 セグメント102 セグメント101 セグメント100 セグメント105 プレイリスト プレイヤのメモリ上 時間 時間
  49. 49. SEQUENCE の計算 LB
  50. 50. SEQUENCE の計算 LB DB
  51. 51. AbemaTV の全体アーキテクチャ
  52. 52. 配信を取り巻く機能たち
  53. 53. リニア型 配信 シェア コメント 通知 On-Demand (課金) 検索 ランキング
  54. 54. AbemaTVの全体アーキテクチャ
  55. 55. AbemaTVの全体アーキテクチャ
  56. 56. AbemaTVの全体アーキテクチャ
  57. 57. AbemaTVの全体アーキテクチャ
  58. 58. AbemaTVの全体アーキテクチャ
  59. 59. AbemaTVの全体アーキテクチャ
  60. 60. AbemaTVの全体アーキテクチャ
  61. 61. AbemaTVの全体アーキテクチャ
  62. 62. AbemaTVの全体アーキテクチャ
  63. 63. AbemaTV の開発スピード
  64. 64. AbemaTV 開局まで 1月 4月2月 3月 3 月 1 日 先行配信 4 月 11 日 本開局 サーバ開発 本格始動
  65. 65. AbemaTV 開局まで 1月 4月2月 3月 3 月 1 日 先行配信 4 月 11 日 本開局 サーバ開発 本格始動 配信サーバ 開発開始
  66. 66. AbemaTV 開局まで 1月 4月2月 3月 3 月 1 日 先行配信 4 月 11 日 本開局 サーバ開発 本格始動 生配信コンテンツ 配信の開発 録画コンテンツ 配信の開発
  67. 67. AbemaTV 開局まで 1月 4月2月 3月 3 月 1 日 先行配信 4 月 11 日 本開局 サーバ開発 本格始動 Abema News FRESH! 経由 生配信 録画コンテンツ 配信の開発
  68. 68. AbemaTV 開局まで 1月 4月2月 3月 3 月 1 日 先行配信 4 月 11 日 本開局 サーバ開発 本格始動 Abema News FRESH! 経由 生配信 録画コンテンツ 配信の開発 シェア コメント ランキン グ On Demand 課金 管理システム
  69. 69. 短期間で仕上げられた背景 GCPに助けられたこと - 各種機能の充実 - logging - monitoring - alert - クライアントライブラリの充実 - ドキュメント GKEに助けられたこと - インテグレーション - スケールアウト
  70. 70. 今日の内容 - 動画配信の基礎 - AbemaTVの動画配信システム - AbemaTVのシステム構成 - 全体アーキテクチャ - AbemaTV の開発スピード
  71. 71. ご静聴ありがとうございました

×