DMM.comの、一番深くておもしろいトコロ。

LOD 24時公開を支える技術

LOD 24時公開を支える技術

  • このエントリーをはてなブックマークに追加

はじめに

こんにちは、動画配信事業部・配信基盤チームの池田です。この記事は「進化する動画配信基盤」についての連載第9回目の記事です。

私は主に動画のエンコードに関する開発を担当しており、特にライブ動画配信サービス (以下 「ライブ配信」)のアーカイブ配信に長く関わっています。

今回は、高画質アーカイブ配信を安定させるために私たちがこれまで取り組んできた内容についてご紹介します。

目次記事はこちらです。

inside.dmm.com

「ライブのアーカイブ配信」について

DMM.comではライブ配信とアーカイブ配信のサービスを2009年から行っており、2020年3月現在、ライブ配信を行った公演は、当日の24時(翌日の0時)からアーカイブ配信しています。

また2016年9月には、アーカイブ配信をHD画質化しての高画質アーカイブ配信を開始しました。
HD画質は解像度1920×1080のビットレート6Mbpsで配信しています。

「アーカイブ配信」における重要ポイント

ライブ配信の公演は全国各地で行われており、演目によっては21時まで公演が行われています。そのため、公演終了直後から24時までの3時間の間に、編集やマルチビットレート配信のための複数パターンのファイルへのエンコードを行う必要があります。

※現在は7種類の解像度とビットレートのファイルを作成しています。

簡単なことのように見えますが、これまでのJIROに関する記事を見ていただいても分かるように、エンコードというのはとても時間がかかり、2時間程度の長さの動画をサービスとして使える画質で短時間に処理するのは大変です。
劇場での編集作業は内容によって作業時間が変動するため、なるべく余裕のある作業時間を確保して、残された時間でエンコードを行う必要があります。

進化してきたアーカイブ配信

高画質アーカイブ配信のタイミングを巡っては、これまでに2度の大きな進化がありました。

  • 公演から1週間後を3日後に短縮
  • 3日後を当日24時に短縮

この進化は作業の自動化と関わってきたもので、それぞれ第1世代、第2世代と呼ばれています。
では、各世代でどのようなことが行われたかを説明します。

配信初期の問題点

f:id:yanoshi:20200323131301p:plain
初期世代

高画質配信の開始当初は録画した映像素材を劇場に設置した機材を使って手動でエンコード作業を行い、データセンターのサーバに設置して配信という作業が行われていました。劇場に設置できる機材は一般的なPCのためエンコードに時間がかかり、公演日から1週間後の配信というスケジュールで公開していました。また、インターレースからプログレッシブに変換する処理でエンコード負荷軽減のために簡素なものが使用されていたため、 動きが速いシーンで二重ブレを起こすという問題もありました。

そしてあくまで人が操作をして編集、エンコード、転送の作業を行うためエンコードが深夜に終わっても転送は翌日になったり、公演のない日に作業する必要が生まれて人的コストが多くなったりと、そんなマイナス面もありました。
また、1日に2公演ある場合は劇場の機材だけでは対応できないため、編集済みの素材を社内のPCに転送してエンコード作業を行う必要もありました。

さらに、サイトの他のコンテンツとエンコーダーが異なることで、他には適用されている画質改善の仕組みなどが使えず、HD画質の利点を最大限に活かすことができていませんでした。

1.第1世代自動化

2017年に私が前任者から高画質アーカイブの配信作業を引き継ぎ、人力で時間がかかっていた作業の自動化に向けて開発を開始しました。
第1世代の目標設定は以下の3つでした。

  • 公開までを最短3日にすること
  • 劇場作業の削減
  • 画質の向上

(ユーザの皆さんが不満を感じていたクオリティの問題を解消し、なおかつ素早く配信したいという気持ちと共に、よりサービスの向上を目指すためにも人力作業による負荷を下げたいという気持ちで、約2ヶ月という短期間で開発しました)

1-1.公開時間短縮と作業負担軽減

当時、劇場に設置されている機材はCore i7 の第4世代のものが使われていました。これをデータセンターに設置したE5-2680 v4搭載のマシン3台に変更し、毎日の公演を3台の間で平均的に割り振りを行い、素材の準備ができた公演から順次エンコードする仕組みを構築しました。
この時改善の1つとして、劇場スタッフの方の作業負担軽減も必要でした。素材ファイルがAVIだった当時は1ファイル当たり約200GBあり、現地スタッフが手動でアップロードを行う方法では転送作業に手を取られることになるうえ、ファイルがいつ送られて来るのかも不確定でした。そこで、素材ファイルを劇場スタッフが所定のディレクトリに置くと自動的にサーバ側から取得する仕組みにすることで、劇場での作業負担の軽減と時間的制約をなくす仕組みを導入しました。

こうして、効率の良いマシン割当とCPU性能の向上、さらに人の操作時間の考慮が必要なくなったことから、24時間いつでもエンコードが可能となり、公演1週間後から3日後への短縮を実現しました。

このエンコーダーシステムは3台が相互監視している様子からMAGIシステムと呼ばれてます。

f:id:yanoshi:20200323135834p:plain
第1世代

1-2.画質の向上

画質の向上を目指すにあたってユーザの声を集めた結果、要望として一番多かったのがライブと比べてアーカイブでは二重ブレが起きているというものでした。二重ブレとは、例えば手の動きが激しい時に、手の輪郭が映像のフレーム内に2つ描画されることで、動きがブレているように見えてしまう現象です。

確認した結果、アーカイブのエンコードで使用しているデインターレースフィルタが、処理効率重視でblendを行うものになっていたため二重化が発生していました。

マシン性能が高くなったことで、高品質にインタレ解除が行えるbwdifを使うように変更し、二重化が起きず人の動きがスムーズに見えるようになりました(気がついた人いました?)
同時にエンコードパラメーターの見直しを行い速度重視から画質重視の設定に変更しました。
具体的な例を示すとx264のpresetをveryfastからslowerに変更しています。

2.第2世代自動化

2019年になり、DMMでは2021年のSilverlightサポート終了に備えて、PC用のダウンロードファイルをWMVから別の形式に変更することになりました。アーカイブ配信ではそれまで公演当日23時にSD画質のWMV形式でダウンロードを公開、24時には同じ画質のストリーミング配信を行っていました。このWMVファイルは劇場でリアルタイムエンコードを行ったもので、それをそのまま配信していたため、SD画質のみライブ直後の23時には公開が可能となっていました。

新しい配信形式のDCVはベースがH.264/AVCとなり、劇場で録画・編集した素材を元に、複数の配信ビットレート用のファイルを用意する必要があります。第1世代のエンコード性能ではどう頑張っても公開時間が翌日以降になり深夜公開を楽しみにしているユーザの方々を悲しませる結果になるので、「24時からのダウンロード、ストリーミング同時の高画質配信」を目標に第2世代の開発が決定されました。

2-2.24時公開対応

第2世代は24時の公開を可能な限り守るために2種類のエンコーダーを併用しています。

f:id:yanoshi:20200323135904p:plain
第2世代

  • JIROエンコーダー
    連載の第6回~第8回で紹介したもので、弊チームが現在メイン運用している分散型エンコーダーをメインで使用しています。ただ、このエンコーダーでは他のコンテンツなども同時並行で作業が行われているため、リソースとして準備されているサーバ全てをアーカイブ配信のエンコードに使用することはできません。そのため素材が到着したタイミング次第では、24時公開が100%保証されません(ただし、運用実績ではエンコードの99パーセントをJIRO側で先に完了できており、2時間のコンテンツを1時間以内で複数のビットレートファイルにエンコードしています)。

  • ハードウェアエンコーダー
    前述のJIROエンコーダーのサーバリソースの使用状況によって24時までにエンコードできない時のために、単一素材の入力から複数ビットレートファイルへの同時出力が2倍速で可能なハードウェアエンコーダーを用意しています。 ソフトウェアエンコードと違ってハードウェアエンコードは出力速度が安定しているので、決められた時間までにエンコードを開始すれば確実に24時に公開が行われるという利点があります。 ただ、ソフトウェアエンコードと比較すると、同一ビットレートでの画質は多少劣るという弱点もあります。 そのためハードウェアエンコーダーが先にエンコードを終えた場合には、JIROエンコーダーが終わった段階で画質が優れるファイルへの差し替えが行われるようになっています。

第2世代の成果

第2世代が導入されてからすでに750回以上の公演を処理しています。この間にシステムを起因として遅延が発生したことは0回と非常に安定しています。システム担当者の対応が必要な問題も導入初期に3回ほど発生しただけで、それ以降は運用監視チームのメンバーだけで運用できています。

今後の展望

JIROを使うようになったことで、社内のエンコードの共通化が完了しました。引き続き2020年度も、配信基盤チームではより高画質で効率的なエンコードを目指していく予定です。