ネットで動画を配信していて、パフォーマンスの問題にぶつかっていませんか?
この記事では、ネット配信動画を快適に再生できるようにするために必要な下準備の一つである、「エンコード」について簡単に解説いたします。

動画ファイルをそのままアップロードして配信してませんか?

MOV、MP4・・・、コーデック、ビットレート、fps・・・?
動画ファイルって、仕様がいろいろあって複雑ですよね。
面倒だから、とりあえず そのままアップロードして配信してしまう気持ち、よくわかります。
ただ、どうしても一手間かけなければ、動画再生時に「ロードが遅い」、「再生がしょっちゅう止まる」、などパフォーマンスの問題にぶつかってしまいます。

NowLoading...

動画再生中に、よく見かけるイラっとする光景。こういった状態のことを「バッファリング」中と呼びます。

動画を配信するにあたって重要な下準備が2つあります。
それは、「エンコード」(動画の圧縮・変換)と「トランスコード」(配信形式への変換)です。1)エンコードやトランスコードという言葉の定義はマチマチですが、このサイトでは本文のカッコ書きにある意味で定義しています。
トランスコードについてはまた別の機会で解説するとして、この記事では一番大事なエンコードについて解説いたします。

エンコードってなに?

エンコードとは「動画を圧縮・変換」することです。
特に「圧縮」は重要で、動画のダウンロード時間を短くし、スムーズに再生できるようにするためには かかせない下準備です。
世の中にある有名な動画配信サービスでも、エンコードされていない動画はありません。

エンコードを理解するためには、「コンテナ」と「コーデック」という言葉について知っておかなければなりません。

  • コンテナフォーマット(以下、単にコンテナ)とは
    動画ファイルの拡張子で、MP4・MOV・AVIといったものをよく見かけると思いますが、
    これらは「動画形式」(コンテナ)と呼ばれるもので、簡単に説明しますと、
    映像や音声をどうファイルにまとめておくかを定義するフォーマットです。
    イメージ的には、映像と音声を詰めておく容器(コンテナ)のようなものです。
  • コーデックとは
    動画ファイルを圧縮する方法(アルゴリズム)を指します。
    英語で「codec」と記述しますが、これは
    「encode」(符号化≒圧縮)+「decode」(復号化)
    を合わせた造語です。
    代表的なものには、映像だと、H.264/AVCMPEG-4・MPEG-2などがあり、
    音声には、AAC・MP3などがあります。
    コーデックには様々な種類があり、使用するコンテナの種類によって、
    どのコーデックを使えるかが決まっています。

動画ファイルをエンコードするといった時は、コンテナの変換(AVI⇒MP4)や、コーデック(H.264/AVC)を指定して圧縮するということになります。
ただ、コンテナやコーデックには様々な種類があり、どれを選べばよいか迷うところだと思いますが、世の中に出回っているクライアント(ブラウザ、スマホなど)になるべく多く対応したいということであれば、
コンテナは MP4、コーデックは 映像:H.264/AVC & 音声:AAC
を採用されるとよいと思います。この方式ならば世の中の大抵のクライアント2)ブラウザ:Chrome、Safari、Edge、FireFoxなど、スマホ:iOS、Androidなどで再生が可能で、また、最も普及している方式となります。
次世代のコーデックとして、H.265/HEVCやAV1といったものが登場し始めていますが、まだまだこれからといった状況です。

コーデックだけじゃない。エンコードの その他のパラメータ

上では主にコーデック指定でのエンコードについて説明しましたが、エンコードにはコーデック指定以外にも、まだまだあります。
動画ファイルのサイズの大部分を占めているのが映像の部分のため、エンコードでは主に映像部分に注目して圧縮処理していくこととなります。
特に重要なものが解像度フレームレート・ビットレートとなるので、ここではそれらについて説明していきますが、まずはその前に、動画ファイルがどういった構造になっているのかを簡単に見ていきましょう。

動画ファイルはパラパラ漫画のように画像が何枚も連なっており、それらを順番に表示していくことで映像が再生され、合わせて音声を再生しています。

動画ファイルは何枚もの画像が連なっている。ちなみに映像はオープンソース動画として、様々なところで使われている「Big Buck Bunny」。

 

この時の1枚1枚の画像の緻密さは「解像度」(1280×720などで)で表現し3)「画素数」、または、「ピクセル数」で表したりもします。、1秒間に何枚の画像(フレーム)を詰めるかを「フレームレート」(fps)で表現します。
また、1秒あたりのデータ量を「ビットレート」(bps)で表現します。
一般的に「高画質な動画」と言われるものは これらの値が高いものを指しますが、高ければ高いほど動画ファイルのデータ量は大きくなり、動画再生時にバッファリング状態になりやすくなります。

エンコード時のコーデック指定で ある程度の圧縮は可能ですが、状況に合わせて、上記値を削ることでデータ量をさらに節約することが可能となります。

まずは解像度の観点で考えてみましょう。
最近よく耳にする「4K」という言葉、これは「大きな画面で観ても きれいに見える解像度」(4000×2000など)ですが、このような高解像度だと、当然データ量は大きくなります。
ですが、この動画を例えばスマホで再生することを考えた場合、果たしてこんなに解像度は必要なのでしょうか?
不要ですよね。ですので、エンコード時には解像度を指定してエンコードすることで大分データ量を節約することができます。
例えば、ちょっと大きめのスマートフォンで「フルHD」(1920×1080)のものがありますが、4Kと比べて約4分の1となり、100MBの動画でしたら、25MBにまでサイズを小さくすることができます。

次にフレームレートを見ていきましょう。
フレームレートは高ければ高いほど、映像はなめらかになります。
ですが、例えばYouTubeなどで「60fps」で検索して出てくる動画を観ると、物によっては なめらかすぎて違和感を覚えたりするものもあります。
動画は約30fpsで十分なものも多く、その値を一つの基準として考えてもよいかもしれません。
また、ほとんど動きのない映像、例えばひたすら美術館の絵を撮っているものなどは、フレームレートをもっと下げてしまっても差支えがない場合もあります。
ちなみに、60fpsの動画を30fpsにすれば単純計算でデータ量は半分となり、100MBの動画なら50MBとなり、かなりの節約になりますよね。

最後にビットレートについて見ていきましょう。
ビットレートは1秒あたりのデータ量と説明しましたが、ではビットレートを指定して4)ビットレートについては、さらに可変ビットレート固定ビットレートがありますエンコードするとどうなるのでしょうか?
それは指定された1秒あたりのデータ量になるべく納まるように画質を調整することです。
例えば、8Mbpsの動画はスマホなどの小さい画面で見るには不必要なほど高画質なので、これを1Mbpsなどでエンコードをしてデータ量を削減することができます。

エンコーダーはどう選べばいいの?

「エンコーダー」5)製品によってはトランコーダーと呼称するものもありますには様々な製品やサービスがあり、何を基準に選んだらよいのか いろいろと迷われると思います。
以下で簡単にポイントを述べますので参考にしていただければと思います。

ツールは無償?有償?のどちらを選べばよいか

巷にある無料ツールというと、「AviUtil」や「VLCメディアプレイヤー」などがあり、もう少し本格的なものですと「ffmpeg」などがあります。
とにかく、お金をかけたくない、という方は無償ツールをご利用されるとよいでしょう。
ただし、無償ツールの場合、基本的には自分自身でやり方を調べなければならないため、様々なサポートを受けたい場合は有償製品を購入、あるいは、有償サービスを契約するのが無難です。

エンコード環境は自分のパソコン?ハイスペックサーバー?クラウド?のどれを選べばよいか

頻繁にエンコードせず、動画ファイルのサイズもそんなに大きくないならばご自身のパソコンでエンコードしてしまうというのが、最も安上がりな方法です。
ただし、「エンコード」という処理は非常にパソコンへの負荷が高く、時間もかかるものですので、動画を頻繁にエンコードする必要がある場合は、この手段は現実的ではありません。
一つの手段として、エンコード用にハイスペックサーバーを購入することですが、導入費用が高く、並列でエンコードできる量に限りがあるため、大量投入には向いていません。
また、年に数回だけ大量に投入しなければならない時期があるといった時のために、わざわざ高価なサーバーを購入するのも割に合いません。

もう一つの手段としては、クラウド型のエンコーディングサービスを利用するというものです。
クラウドならば高価なサーバー等を導入する必要はなく、従量課金での請求のため、スポットで利用したいといった場合には最適なソリューションとなります。
また、クラウド上でならば大量に動画が投入されたとしても、サーバーのスケールアウトにより並列で処理できるため、処理時間の短縮も望めます。
ただし、会社のポリシーによってクラウドの利用が禁止されている場合はこの手段は取れません。

最後に

いかがでしたでしょうか?何となくエンコードについて、イメージは湧きましたでしょうか?
動画配信をする場合、エンコードというのはユーザの快適な視聴のために必要不可欠な処理です。
今までエンコードしていなかったという方は、この記事を足掛かりに試してみてはいかがでしょうか。

References   [ + ]

1. エンコードやトランスコードという言葉の定義はマチマチですが、このサイトでは本文のカッコ書きにある意味で定義しています。
2. ブラウザ:Chrome、Safari、Edge、FireFoxなど、スマホ:iOS、Androidなど
3. 「画素数」、または、「ピクセル数」で表したりもします。
4. ビットレートについては、さらに可変ビットレート固定ビットレートがあります
5. 製品によってはトランコーダーと呼称するものもあります