PLAY DEVELOPERS BLOG

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

映像と音響の魅力を高める Dolby Vision・Dolby Atmos の基礎と動画配信での活用

こんにちは、プラットフォーム技術部第1グループの川端です。

突然ですが、みなさん、高画質な映像と迫力のある立体音響に魅了されますよね?これらを実現する技術に、ドルビー・ラボラトリーズ(以降Dolby社)が開発したDolby Vision・Dolby Atmosがあります。昨今Netflixといった大手ストリーミングサイトのオリジナルコンテンツにおいてデファクトに近い形で採用されております。*1 配信を支える当社から、今回はDolby Vision・Dolby Atmosについてご紹介したいと思います。Dolby VisionはHDR技術に準拠した技術になりますので、HDRについてもご紹介します。

HDR

HDRとは?

Dolby VisionはHDRの種類の一つなので先にHDRという技術についてざっくり説明します。
HDRはHigh Dynamic Rangeの略称です。輝度(明るさを表す指標)の最大値と最小値の比率を数値化したものを「ダイナミックレンジ」と呼び、一般的にはSDR(Standard Dynamic Range)が使用されております。一方でHDRはビット深度(明暗差の階調)を増やすことでSDRよりも、より鮮やかな映像表現を可能にします。 SDRに対して拡張されたダイナミックレンジをHDRと呼びます。 HDRにはPQ方式とHLG方式の2つの出力方式がありますので、以下でご説明します。

PQ方式 (Perceptual Quantizer方式)

PQ方式は、Dolby社によって提案された出力方式です。人間の視覚特性に合わせた方式となっており、主に映画やWeb配信コンテンツといった再現性が重視される用途で利用されます。代表的なHDR規格に以下のものがあります。

  • HDR10
  • HDR10+
  • Dolby Vision

それぞれの特徴を表にまとめました。

規格名 最大ビット深度 メタデータ種別 ライセンス
HDR10 10bit(1024階調) 静的メタデータ なし
HDR10+ 10bit(1024階調) 動的メタデータ なし
Dolby Vision 12bit(4096階調) 動的メタデータ Dolby社

ビット深度については、Dolby Visionが最も高い数値となっており、より幅広い階調の色彩を表現できることがわかりますね。
参考までにSDRは1670万色、HDR10とHDR10+は10億7000万色、Dolby Visionは687億色を表示できるようです。

メタデータについては、静的メタデータと動的メタデータの二種類があります。メタデータはコンテンツを表示するディスプレイ側で、コンテンツ独自の明るさを調整するために使用されるデータで、ビデオ全体で同一のメタデータを提供する静的メタデータと、シーン毎やフレーム毎のメタデータを提供する動的メタデータがあります。動的メタデータはより製作者の意図を表現できる点で優れており、HDR10+やDolby Visionがサポートしていることがわかります。

映像の表現という点では、Dolby Visionが優れておりますが、Dolby Visionを使用するためにDolby社にライセンス料を支払う必要があります。一方でHDR10やHDR10+はライセンスがフリーとなっており、気軽に導入しやすいという点では、HDR10やHDR10+が優れていることがわかります。

HLG方式 (Hybrid Log-Gamma方式)

HLG方式はNHKとイギリスのBBCによって共同で提案された出力方式です。放送などで採用する目的で開発された規格のため、全体のデータ量が少なく、衛星放送の4K放送で使用されています。ライセンスフリーであることや、他のHDRとは異なりメタデータを使用しない点が特徴です。また、SDRへの後方互換性があるため、TVがSDRのみ対応のものでも違和感なく表示することが可能です。

規格名 最大ビット深度 メタデータ種別 ライセンス
HLG 10bit(1024階調) なし なし

Dolby Vision

Dolby Visionとは?

HDRの説明が長くなりましたが、ここからDolby Visionについてお話ししていきます。Dolby VisionとはDolby社が開発したHDRのための映像技術です。動的メタデータを活用して、ディスプレイに合わせて最大限の輝度、色の表現を可能にします。ビット深度は、単一の色のさまざまな色合いを生成する能力を表していますが、Dolby Visionは非常に高いビット深度のため暗い映像はより暗く、明るい映像はより明るく表現できます。

先の表に記載があった通り、Dolby Visionの主な特徴は以下になります。

  • PQ方式
  • ビット深度12bit
  • 動的メタデータ
  • 有償ライセンス

Dolby Visionを楽しむためには、Dolby Visionに対応したディスプレイが必要になります。お使いの機器にDolby Visionのロゴの記載があるか、取扱説明書から対応しているか確認ができます。例えば、PCであればMac(一部のモデルは非対応)は内蔵ディスプレイで視聴が可能*2です。また、視聴するコンテンツもDolby Visionに対応しているコンテンツである必要があります。Netflixなどの配信サービスでコンテンツが公開されています。

Dolby Vision Profile

Dolby Vision Profile*3はDolby Visionアセットのエンコードに使用されるビデオコーデックや一連のコーディング技術に関して記述したものです。表にまとめてみました。

Profile ID Profile String コーデック 後方互換
4 dvh1.04 または dvhe.04 10-bit HEVC SDR
5 dvh1.05 または dvhe.05 10-bit HEVC なし
7 dvh1.07 または dvhe.07 10-bit HEVC Ultra HD
8.1 dvh1.08 または dvhe.08 10-bit HEVC HDR10
8.2 dvh1.08 または dvhe.08 10-bit HEVC SDR
8.4 dvh1.08 または dvhe.08 10-bit HEVC HLG
9 dva1.09 または dvav.09 8-bit AVC SDR

Profile Stringに記載の内容はDolby Visionのコーデックであることを表します。例えばProfile IDが5のものはdvh1.05またはdvhe.05になります。Dolby VisionでDolby Vision Profileが5という意味です 。
後方互換の欄に記載があるものについては、Dolby Visionの再生ができない環境でも、後方互換した規格の再生環境があれば、後方互換して再生を可能にします。
コンテンツを後方互換させずに配信したいのであれば、Dolby Vision Profileの5でエンコードするなど、配信する要件に合わせてプロファイルを選択すると良いでしょう。

Dolby Atmos

Dolby Atmosとは?

ここからはDolby Atmosについてお話ししていきます。Dolby Atmosは従来のサラウンドシステムにハイトチャネルを加えることで、立体的な音響体験を実現するDolby社の音声システムです。この立体的な音響体験は、見る人を本当に映像の中に入り込んだと思わせるような没入感を実現します。
Dolby Atmosのスピーカー構成には次のようなものがあります。

  • 5.1.2ch
  • 7.1.4ch
  • 9.1.6ch

5.1.2chなどのように表記されておりますが、2に当たる数字は天井のハイトチャネルを表しています。Dolby Atmosを楽しむためにはDolby Atmosのコンテンツと従来のサラウンドのスピーカー配置に加えて、ハイトスピーカーを用意する必要があります。天井スピーカーの設定が困難な場合は「ドルビーイネーブルドスピーカー」を使用することで、Dolby Atmosを体感できます。こちらは天井を向いたスピーカーで、天井での音の反射を利用して、ハイトスピーカーの役割をします。本格的なオーディオ環境を用意するのが難しい方でもDolby Atmosを体感できるのは嬉しいですね。

オブジェクトオーディオ

Dolby Atmosの大きな特徴の一つにオブジェクトオーディオがあります。一般的な音声はチャンネルベースです。

  • チャンネルベース: 出力する音声チャンネルの数に合わせた形で音声を作成する方式です。音声を再生する際には、それぞれのチャンネルを対応する各スピーカーから音声を出力します。音楽のように聴かせる音声に利用されます。
  • オブジェクトベース: 音声トラックと位置情報をオブジェクトとして扱う方式です。このオブジェクトが持つ位置情報を元に、再生機器がスピーカーにそれぞれの音を振り分けます。ヘリコプターの音など動きのある効果音などの場合に特に有用です。

再生するスピーカーの設置数も異なる場合があるため、チャンネルベースでは制作者の意図した表現があいまいになるケースがあります。一方でオブジェクトベースは再生機器側が出力するスピーカーを制御するため、音声を作成する側が出力するスピーカーの数などを考慮する必要が少なくなります。こちらは音声を制作する上でもとても嬉しい点ですね。

HLSとMPEG-DASHにおける記載内容について

最後にDolby VisionとDolby Atmosのマニフェストファイルにおける記述について見ておきます。HLSとMPEG-DASHでそれぞれサンプルを見てどのような内容が記述されるか見ていきます。こちらで提示しているマニフェストについては、以下に記載があるのでそちらからもご覧いただけます。今回はHLSやMPEG-DASHに関する説明を中心としませんがご了承ください。

HLS

HLSサンプルマニフェスト(クリックで展開)

p14

#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English",CHANNELS="2",DEFAULT=YES,AUDTOSELECT=YES,LANGUAGE="en",URI="main/english-aac.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="atmos",NAME="English",CHANNELS="16/JOC",DEFAULT=YES,AUDTOSELECT=YES,LANGUAGE="en",URI="main/english-atmos.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=5120000,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,mp4a.40.29",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="aac"
low/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=7680000,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,mp4a.40.29",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="aac"
mid/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=14156144,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,mp4a.40.29",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="aac"
hi/video.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=5120000,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,ec-3",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="atmos"
low/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=7680000,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,ec-3",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="atmos" 
mid/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=14156144,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,ec-3",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="atmos"
hi/video.m3u8

こちらは 映像がDolby Vision(Dolby Vision Profile 8.4)と音声がAACとDolby Atmosのマスターマニフェストです。 一部抜粋して見ましょう。

Dolby Vision

まず、Dolby Visionについては#EXT-X-STREAM-INFに注目して見ましょう。

#EXT-X-STREAM-INF:BANDWIDTH=5120000,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,mp4a.40.29",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="aac"

以下の記述に特徴があります。

  • VIDEO-RANGE
  • SUPPLEMENTAL-CODECS

VIDEO-RANGE属性に互換性のあるブランドを記載します。(今回はHLGです。) コーデックとしてはhvc1であることからHEVCです。ただ、SUPPLEMENTAL-CODECSという属性が記述されており、値はdvh1.08.07/db4hです。これはDolby Visionのコーデックで、Dolby Vision Profileとしては8であることを表しています。 これらの情報からこちらのマニフェストはDolby Vision(Dolby Vision Profile 8.4)であることがわかります。

互換性のないDolby Vision Profile 5であれば、直接コーデックへdvh1.05と記載して、VIDEO-RANGEとしてはPQを記載することになります。

Dolby Atmos

今度はDolby Atmosについて見ていきましょう。以下の箇所に注目してください。

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="atmos",NAME="English",CHANNELS="16/JOC",DEFAULT=YES,AUDTOSELECT=YES,LANGUAGE="en",URI="main/english-atmos.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=14156144,VIDEO-RANGE=HLG,CODECS="hvc1.2.4.L153.b0,ec-3",SUPPLEMENTAL-CODECS="dvh1.08.07/db4h",FRAME-RATE=30.000,RESOLUTION=3840x2160,AUDIO="atmos"

以下の記述に特徴があります。

  • CHANNELS

EXT-X-MEDIAタグのCHANNELS属性に16/JOCと記載があります。こちらがDolby Atmosのメディアプレイリストです。この表記は、9.1.6chであることを意味しています。他にも12/JOCと表記することができ、5.1.4chまたは7.1.4chであることを意味します。

CHANNELS 表記
5.1.4ch or 7.1.4ch 12/JOC
9.1.6ch 16/JOC

上記の情報と#EXT-X-STREAM-INFに記載のコーデックec-3からDolby Digital Plus (Enhanced AC-3、E-AC-3) で Dolby Atmos を実現するためのフォーマットのことであることがわかります。

MPEG-DASH

MPEG-DASHサンプルマニフェスト(クリックで展開)

p20

<?xml version="1.0"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dolby="http://www.dolby.com/ns/online/DASH"
    xmlns="urn:mpeg:dash:schema:mpd:2011"
    xmlns:scte214="urn:scte:dash:scte214-extensions"
    xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011"
    type="static" mediaPresentationDuration="PT0H1M2.550S" minBufferTime="PT1.2S"
    profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
    <BaseURL>./</BaseURL>
    <Period>
        <!-- Video -->
        <AdaptationSet segmentAlignment="true"
            subsegmentAlignment="true" subsegmentStartsWithSAP="1">
            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:MatrixCoefficients" value="9"/>
            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:ColourPrimaries" value="9"/>
            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:TransferCharacteristics" value="18"/>
            <Representation id="1" mimeType="video/mp4" codecs="hvc1.2.4.L153.B0"
                scte214:supplementalCodecs="dvh1.08.07"
                scte214:supplementalProfiles="db4h"
                width="3840" height="2160" frameRate="30000/1001" sar="1:1"
                startWithSAP="1" bandwidth="18667200">
                <BaseURL>Dolby_visioin_p84.mp4</BaseURL>
                <SegmentBase indexRangeExact="true" indexRange="1009-1388">
                    <Initialization range="0-1008"/>
                </SegmentBase>
            </Representation>
        </AdaptationSet>
        <!-- Audio -->
        <AdaptationSet mimeType="audio/mp4" codecs="ec-3"
            lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
            <Representation id="3" bandwidth="640000">
                <AudioChannelConfiguration
                    schemeIdUri="tag:dolby.com,2014:dash:audio_channel_configuration:2011"
                    value="F801"/>
                <SupplementalProperty
                    schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"/>
                <SupplementalProperty
                    schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionComplexityIndex:2018"
                    value="16"/>
                <BaseURL>audio.mp4</BaseURL>
                <SegmentBase indexRange="652-875">
                    <Initialization range="0-651"/>
                </SegmentBase>
            </Representation>
        </AdaptationSet>
    </Period>
</MPD>

こちらは 映像がDolby Vision(Dolby Vision Profile 8.4)と音声がDolby Atmosのマニフェストです。 一部抜粋して見ましょう。

Dolby Vision

Dolby Visionについては、以下の二箇所について注目してみましょう。

MPDタグ

<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dolby="http://www.dolby.com/ns/online/DASH"
    xmlns="urn:mpeg:dash:schema:mpd:2011"
    xmlns:scte214="urn:scte:dash:scte214-extensions"
    xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011"
    type="static" mediaPresentationDuration="PT0H1M2.550S" minBufferTime="PT1.2S"
    profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">

EssentialPropertyとmimeTypeがvideo/mp4となっているRepresentationタグ

            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:MatrixCoefficients" value="9"/>
            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:ColourPrimaries" value="9"/>
            <EssentialProperty
                schemeIdUri="urn:mpeg:mpegB:cicp:TransferCharacteristics" value="18"/>
            <Representation id="1" mimeType="video/mp4" codecs="hvc1.2.4.L153.B0"
                scte214:supplementalCodecs="dvh1.08.07"
                scte214:supplementalProfiles="db4h"
                width="3840" height="2160" frameRate="30000/1001" sar="1:1"
                startWithSAP="1" bandwidth="18667200">

以下の記述に特徴があります。

  • xmlns:scte214
  • urn:mpeg:mpegB:cicp:TransferCharacteristics
  • scte214:supplementalCodecs
  • scte214:supplementalProfiles

先に以下の記述についてお話しします。

xmlns:scte214="urn:scte:dash:scte214-extensions"

こちら記述はXMLのNameSpaceの記法になっており、scte214というNameSpaceはurn:scte:dash:scte214-extensionsであることを意味しています。後方互換性があるマニフェストの場合はurn:scte:dash:scte214-extensionsを使用するためMPDタグ内でNameSpaceが定義されています。
つまり後方互換性のあるマニフェストの場合にはこちらの記載が必須となります。

続いてコーデックについてはhvc1.2.4となっていてHEVCのコーデックと分かります。一方でsupplementalCodecs属性とsupplementalProfiles属性の記載がありこちらにもコーデックのようなものが記載されていますね。こちらの記載がDolby Vision(Dolby Vision Profile 8.4)であることを意味しています。

後方互換先の情報についてはEssentialPropertyに記載のurn:mpeg:mpegB:cicp:TransferCharacteristicsからわかります。こちらのvalueに18が与えられておりこの数字が「HLG」であることを意味しています。この数字はAVC/HEVCのSPSで伝達されるVUI (Video Usability Information) Parameter内で規定されている数字です。PQ方式は16、HLG方式は18となります。

これらの情報からこちらのマニフェストはDolby Vision(Dolby Vision Profile 8.4)であることがわかります。

HLSと同様に後方互換性がなければ直接codecsにdvh1.05.07のように記載されることになります。

Dolby Atmos

今度はDolby Atmos*4について見ていきましょう。mimeTypeがaudio/mp4となっている箇所に注目してください。

        <AdaptationSet mimeType="audio/mp4" codecs="ec-3"
            lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
            <Representation id="3" bandwidth="640000">
                <AudioChannelConfiguration
                    schemeIdUri="tag:dolby.com,2014:dash:audio_channel_configuration:2011"
                    value="F801"/>
                <SupplementalProperty
                    schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"/>
                <SupplementalProperty
                    schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionComplexityIndex:2018"
                    value="16"/>
                <BaseURL>audio.mp4</BaseURL>
                <SegmentBase indexRange="652-875">
                    <Initialization range="0-651"/>
                </SegmentBase>
            </Representation>
        </AdaptationSet>

以下の記述に特徴があります。

  • schemeIdUri="tag:dolby.com,2014:dash:audio_channel_configuration:2011" value="F801"
  • schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"
  • schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionComplexityIndex:2018" value="16"

まず、AudioChannelConfiguration*5タグにtag:dolby.com,2014:dash:audio_channel_configuration:2011の記載がありますね。こちらはドルビーオディオのチャンネル構成を表すもので、value部分にはチャンネルの割り当てを意味する16進数が与えられています。

コーデックはec-3なのでDolby Digital Plusです。これだけではDolby Digital Plusであることはわかりますが、Dolby Atmosであるかまではわかりません。そこでSupplementalPropertyというタグに注目してください。 SupplementalPropertyにEC3_ExtensionTypeEC3_ExtensionComplexityIndexを指定することで、HLSと同様、Dolby Atmos を実現するためのフォーマットであることを表すことができます。
EC3_ExtensionTypeはvalueにJOC*6を記載します。EC3_ExtensionComplexityIndexのvalueには16の数字を記載します。こちらもチャンネルが構成が5.1.4chまたは7.1.4chであれば、C3_ExtensionComplexityIndexvalue="12"となります。

最後に

ここまでDolby Vision・Dolby Atmosについてお話ししてきました。もちろん全てについてお話しできたわけではありませんが、Dolby Vision・Dolby Atmosがどのようなものかご紹介できたかと思います。高画質、リッチなサラウンド音声を楽しみたい時には、ぜひ一度検討してみてはいかがでしょうか?
Dolby Vision・Dolby Atmosを通じて、最高の視聴体験をしてみましょう!