この記事は NewsPicks Advent Calendar 2025 の8日目の記事です。
前回はプリンシパルエンジニアのむとうさんによる最も妥当な実装を選択せよでした。
はじめに
こんにちは、ソーシャル経済メディア「NewsPicks」のエンジニアの上村です。
NewsPicksではオリジナル動画コンテンツを配信しておりほぼ毎日新しいコンテンツが出ています。
ユーザーからの「動画が重くて再生できない」「ダウンロードサイズが大きすぎる」といった声を受けて、動画配信サイズの最適化に取り組みました。
ユーザーレビューでは以下のような指摘が継続的に寄せられていました。
- ストリーミング再生しようとすると途切れ途切れになる、まともに再生できない。
- ダウンロードサイズが大きい
- 1時間の動画でも数百MBも通信を消費してしまった
モバイル通信環境でもストレスなく再生できることは、動画配信サービスの体験として必須です。そこで配信コンテンツのサイズの見直しを行いました。
方針
Wifi接続時の安定した環境では問題になりにくいですが、モバイル通信、特に通勤中の電車の中などで視聴したときにうまく再生できないことが問題でした。 高画質で配信していても、再生中に途切れてしまったり再生できなければ体験として良くないです。
そこで今回はどんな環境でも再生できることを優先して低回線環境下の再生にフォーカスし見直しを行いました。
動画サイズを決める要素
動画サイズはさまざまなポイントで決まります。
再生時間
再生時間が長ければ長いほどファイルサイズも大きくなります
ビットレート
1秒あたりのデータ量(単位:bps(bit per second))。データ量が多いほどファイルサイズも大きくなります
解像度
動画1フレームを構成する点(ピクセル)の密度(= 画面の大きさ)。解像度が大きいほどファイルサイズも大きくなります
フレームレート
1秒間あたりの画像の枚数(単位:fps( frame per second))。フレーム数が多いほどファイルサイズも大きくなります
圧縮方式(コーデック)
上記に書いた条件が同じでも、圧縮効率の高いコーデックを使うとファイルサイズが小さくすることが可能です。コーデックは、「H.264(AVC)」「H.265(HAVC)」「VP9」「AV1」などがあります。現在使っているコーデックはH.264ですがH.265やAV1の方が圧縮効率が良いです。
今回コーデックの改善も検討しましたが、プレイヤーの対応・後方互換などやることが多いため対応を見送りました。主に、ビットレート・解像度・フレームレートを中心に設定の見直しを行いました。
改善① シークバーのプレビュー映像
シークバーを動かして再生位置を調整するときに小さくプレビュー映像が表示されますが、小さい表示領域に対して画質が高品質すぎる問題がありました。
具体的には本体映像と同じものを流用しており、プレビュー映像には不要な音声も付加されていました。
プレビュー用に最適化した音声なしの映像を用意しこれを配信するようにしました。 これによりプレビュー映像の合計サイズが90%近く削減できました。
約1時間の動画の場合の合計サイズ
- 改善前:108MB
- 改善後:11MB(90%程度削減)
改善② 低回線ストリーミング再生時の動画サイズ
HLS形式のストリーミング配信はクライアント端末の回線状況に応じて最適な解像度を選択しますが、最低帯域の解像度でも比較的高めの設定になっていました。
そもそもコンテンツを再生するためには、「映像ビットレート+音声ビットレート」の帯域が必要です。アプリ視聴時はコンテンツだけではなく他の情報を取得する必要があるのでそれ以上の帯域が必要です。
改善前の最低帯域の映像はコンテンツだけで250kbps程度必要でした。
解像度やビットレートを見直し、80kbps程度まで削減しました。
これにより200kbpsのような環境でもスムーズに再生できるように改善しました。
コンテンツ転送サイズ
- 改善前:約250kbps
- 改善後:約80kbps (70%程度削減)
改善③ ダウンロード動画
プレミアム会員限定の機能として動画のダウンロードがありますが、従来の画質はストリーミングの最高品質と同等でした。
結果として1時間程度の動画をダウンロードすると800MBも消費してしまうものもある状況でした。
ダウンロード向けのエンコード設定を見直し画質を落とした設定に変更し、サイズの削減を行いました。
ダウンロードサイズ
- 改善前:540MB
- 改善後:108MB(80%程度削減)
これで通信容量を消費したりダウンロードに失敗することはなくなりましたが、「今度は画質が良くない」というユーザーの声が届くようになりました。
従来のダウンロード動画は単一品質のみの提供でしたが、モバイルアプリ側でも処理を改善いただき、ストリーミングと同様に画質を選択できるようになりました。(現在androidのみの対応ですが、iOSでも対応予定です)
まとめ
動画配信の最適化はネットワーク・クライアント端末・エンコード設定・再生プレイヤーなどに依存するため、今回の改善で終わるものではなく継続的な改善が必要です。
今回見送ったコーデックも含めて今後も継続的に見直しを行い、高品質化と軽量化の両立を目指してより快適な動画視聴体験を提供していきます。