説明

DASH (Dynamic Adaptive Streaming Over HTTP) パッケージを使用すると、ビットレートの異なる 1 つまたは複数のビデオストリーム、複数言語の字幕、音声トラックを Master Playlist ファイルにパッケージ化することができます。 この処理は、まず DASH パッケージのワークフローを作成し、次に AddMedia 操作を呼び出して処理するメディアとワークフロー ID を指定するものです。
  1. AddMediaWorkflow 操作を呼び出して新しいワークフローを作成します。
    • Topology

      有向非巡回グラフ (DAG) によって定義される業務プロセスです。

    • Activity

      トポロジーを構成する処理ノードの型を指します。 DASH パッケージワークフローを作成する際は、以下のアクティビティにご注意ください。

      • PackageConfig

        Master Playlist ファイルの出力場所を設定します。

        トポロジーの順序

        • フロントノードは Start ノードです。

        • バックノードは、 SubtitleGroup、AudioGroup、または VideoGroup です。

      • SubtitleGroup

        各字幕グループの ID と言語を指定します。

        トポロジーの順序

        • フロントノードは PackageConfig です。

        • バックノードは Transcode ノード (字幕のみ) です。

      • AudioGroup

        各音声グループの ID と言語を指定します。

        トポロジーの順序

        • フロントノードは PackageConfig です。

        • バックノードは Transcode ノード (音声のみ) です。

      • VideoGroup

        各ビデオグループの ID を指定します。

        トポロジーの順序

        • フロントノードは PackageConfig ノードです。

        • バックノードは Transcode ノード (ビデオのみ) です。

      • Transcode

        ビデオ、音声、字幕ストリームの抽出に使用します。

        トポロジーの順序

        • フロントノードは SubtitleGroup、AudioGroup、または VideoGroup ノードです。

        • バックノードは GenerateMasterPlayList ノードです。

      • GenerateMasterPlayList

        Master Playlist ファイルの生成に使用します。

        トポロジの順序

        • フロントノードは Transcode ノードです。

        • バックノードは Report ノードです。

    • Dependencies

      アクティビティ間の依存関係を示す、トポロジー内のエッジを指します。

  2. AddMedia 操作を呼び出して MPS にメディアを追加します。

    • メディアワークフローの ID を指定する必要があります。

    • 字幕抽出がある場合、OverrideParams パラメーターを設定して Transcode アクティビティの 字幕ファイルのデフォルト URL をオーバーライドします。 例えば、{“subtitleTransNode”:{“InputConfig”:{“Format”:”stl”,”InputFile”:{“URL”:”http://subtitleBucket.oss-cn-hangzhou.aliyuncs.com/package/subtitle/CENG.stl"}}}} 。 この例では、sutitleTransNode が字幕抽出のノードです。

    • TriggerMode を NotInAuto に設定します。

  1. </section>
  2. <section class="section" id="section-bws-cjm-x2b">
  3. <h2 class="title sectiontitle" id="title-zqd-ep8-yo4">シナリオ</h2>
  4. <p class="p" id="p-1z9-ddc-5w0">mxf 形式のソースファイルから 2 つのビデオストリーム、3 つの音声ストリーム、 2 つの WebVTT 字幕ストリームを抽出し、それらを Master Playlist
  5. にパッケージ化しなければならないとします。 ソースファイルは mp4、flv、m3u8 (ts) などの形式もサポートしています。
  6. </p>
  7. <div class="p" id="p-r3y-8va-qh7">出力場所と Master Playlist ファイルの名前を設定します。
  8. <ul class="ul" id="ul-zwn-djm-x2b">
  9. <li class="li" id="li-2wm-nsq-n8c">
  10. <p class="p" id="p-c2l-310-s2w">Bucket を設定します。</p>
  11. </li>
  12. <li class="li" id="li-jwr-59r-54b">
  13. <p class="p" id="p-4wf-xvn-iuc">Master Playlist ファイルの Location を指定します。</p>
  14. </li>
  15. <li class="li" id="li-6j1-ye8-dqw">
  16. <p class="p" id="p-r0g-oto-cz2">Master Playlist ファイルの名前を指定します。 </p>
  17. </li>
  18. <li class="li" id="li-9t9-7xu-utz">
  19. <p class="p" id="p-xo5-ii2-0ux">アクティビティの定義は以下のとおりです。</p>
  20. <pre class="pre codeblock" id="codeblock-2m6-228-m8c"><code>

{“Parameters” : {“Output” : “{\”Bucket\”: \”processedmediafile\”,\”Location\”: \”oss-cn-hangzhou\”,\”MasterPlayListName\”: \”{MediaId}/{RunId}/dash/master.mpd\”}”},“Type” : “PackageConfig”}

    1. <li class="li" id="li-3xm-mbx-rsw">Output は出力先と Master Playlist ファイルの名前を示します。 詳細は、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/68494.htm">「PackageConfig アクティビティでサポートされているパラメーター」</a>をご参照ください。
    2. </li>
    3. <li class="li" id="li-qpj-dpk-o8x">Type を PackageConfig に設定します。</li>
    4. </ul>
    5. </li>
    6. </ul>
    7. </div>
    8. <div class="p" id="p-v61-4pi-aes">音声ストリームをグループ化します。
    9. <ul class="ul" id="ul-mf1-4jm-x2b">
    10. <li class="li" id="li-5qo-zp9-68p">
    11. <p class="p" id="p-4oc-7ec-net">アクティビティの定義は以下のとおりです。</p>
    12. <pre class="pre codeblock" id="codeblock-irb-en1-8ry"><code>

    “audio-cn-group” : {“Name” : “audio-cn-group”,“Parameters” : {“AdaptationSet” : “{\”Lang\”:\”chinese\”,\”Group\”:\”AudioGroupChinese\”}”},“Type” : “AudioGroup”}

      1. <li class="li" id="li-0uq-vuf-q1e">Group: 音声グループ名を "AudioGroupChinese" に設定します。</li>
      2. <li class="li" id="li-qq7-uxo-5zb">Type: タイプには "AudioGroup" アクティビティを指定します。</li>
      3. </ul>
      4. </li>
      5. </ul>
      6. </div>
      7. <div class="p" id="p-npn-b5f-a3m">音声ストリームを抽出します。
      8. <ul class="ul" id="ul-pdr-rjm-x2b">
      9. <li class="li" id="li-78e-obk-2j3">
      10. <p class="p" id="p-tpb-c3l-20e">mxf ソースファイルからビデオストリームを除去して、音声ストリームを抽出します。 </p>
      11. </li>
      12. <li class="li" id="li-dkt-bb1-lep">
      13. <p class="p" id="p-vqc-ihm-gg3">出力音声のパラメーターは以下のとおりです。</p>
      14. </li>
      15. <li class="li" id="li-im5-9gv-d2w">
      16. <p class="p" id="p-p02-e6l-f6m">アクティビティの定義は以下のとおりです。</p>
      17. <pre class="pre codeblock" id="codeblock-l7h-x4i-980"><code>

      “audioCNTransNode” : {“Name” : “audioCNTransNode”,“Parameters” : {“Outputs” : “[{\”TemplateId\”:\”S00000001-100020\”,\”AudioStreamMap\”:\”0:a:0\”,\”Video\”:{\”Remove\”:\”true\”}}]”,“Representation” : “{\”Id\”:\”chinese128k\”,\”URI\”:\”audiocn/cn-abc.mpd\”}”},“Type” : “Transcode”}

        1. <li class="li" id="li-mo9-eg8-mtt">URI: 出力結果となる音声ストリームの場所を指定します。</li>
        2. <li class="li" id="li-siw-rf8-vtc">
        3. <p class="p" id="p-o01-yp5-ilu">AudioStreamMap: 音声ストリームの連番です。 詳細は、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/29253.htm">「Output」</a>をご参照ください。
        4. </p>
        5. </li>
        6. <li class="li" id="li-xzw-mst-9yj">
        7. <p class="p" id="p-981-au9-fqw">出力結果から、ビデオストリームを除去します。 詳細は、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/29253.htm">「ビデオ」</a>をご参照ください。
        8. </p>
        9. </li>
        10. <li class="li" id="li-11m-2sr-kdc">
        11. <p class="p" id="p-3qs-1we-kc2">Type は Transcode (トランスコードアクティビティ) に設定します。</p>
        12. </li>
        13. </ul>
        14. </li>
        15. </ul>
        16. </div>
        17. <div class="p" id="p-kwu-ndw-6tk">ビデオストリームをグループ化します。
        18. <pre class="pre codeblock" id="codeblock-wfa-hhk-7h6"><code>

        “video-group” : {“Name” : “video-group”,“Parameters” : {“AdaptationSet” : “{\”Group\”:\”VideoGroup\”}”},“Type” : “VideoGroup”}

  1. <div class="p" id="p-15w-yf0-wg2">ビデオストリームを抽出します。
  2. <ul class="ul" id="ul-tkz-vjm-x2b">
  3. <li class="li" id="li-7nx-qf1-k94">
  4. <p class="p" id="p-nss-huo-nr7">mxf 形式のソースファイルから音声ストリームを除去して、ビデオストリームを抽出します。</p>
  5. </li>
  6. <li class="li" id="li-ttp-1ju-fot">
  7. <p class="p" id="p-t8t-0af-xh6">アクティビティの定義は以下のとおりです。</p>
  8. <pre class="pre codeblock" id="codeblock-ix9-gtr-10y"><code>

“videoTransSD” : {“Name” : “videoTransSD”,“Parameters” : {“Outputs” : “[{\”TemplateId\”:\”d861b90f6c0aed8f81095e5c5b857cba\”,\”Audio\”:{\”Remove\”:\”true\”}}]”,“Representation” : “{\”Id\”:\”476pSD\”,\”URI\”:\”videoSD/xx.mpd\”}”},“Type” : “Transcode”}

    1. <li class="li" id="li-dpg-g0a-yzo">
    2. <p class="p" id="p-bl1-l3t-6vg">この例では、ユーザー定義のトランスコードテンプレートの ID は "d861b90f6c0aed8f81095e5c5b857cba" です。 対応する API 操作を呼び出してトランスコードテンプレートを作成することができます。コンテナのフォーマットは
    3. mpd です。
    4. </p>
    5. </li>
    6. <li class="li" id="li-ytc-l6k-n8j">
    7. <p class="p" id="p-fp5-trq-nno">出力結果から音声ストリームを除去します。 詳細は、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/29253.htm">「音声」</a>をご参照ください。
    8. </p>
    9. </li>
    10. <li class="li" id="li-ui7-dr2-oam">
    11. <p class="p" id="p-tiy-pvp-4jz">URI: 出力結果となるビデオストリームの名前と場所を指定します。</p>
    12. </li>
    13. <li class="li" id="li-wxn-697-tfp">
    14. <p class="p" id="p-7jk-wmw-ml8">Type を Transcode (トランスコードアクティビティ) に設定します。</p>
    15. </li>
    16. </ul>
    17. </li>
    18. </ul>
    19. </div>
    20. <div class="p" id="p-u85-c5b-ec8">字幕ストリームをグループ化します。
    21. <ul class="ul" id="ul-tys-lkm-x2b">
    22. <li class="li" id="li-cmc-bac-znz">
    23. <p class="p" id="p-1o9-rsk-qr0">字幕グループの ID を指定します。</p>
    24. </li>
    25. <li class="li" id="li-z5g-u94-cg0">
    26. <p class="p" id="p-lvb-rmr-pok">アクティビティの定義は以下のとおりです。</p>
    27. <pre class="pre codeblock" id="codeblock-cqp-0c1-1aw"><code>

    “subtitle-cn-group” : {“Name” : “subtitle-cn-group”,“Parameters” : {“AdaptationSet” : “{\”Lang\”:\”Chinese\”, \”Group\”:\”SubtitleENGroup\”}”},“Type” : “SubtitleGroup”}

      1. <li class="li" id="li-ynf-zxj-dgk"> Group: 字幕グループの名前を "SubtitleENGroup" に指定します。</li>
      2. <li class="li" id="li-nti-kq1-wph"> Lang: この字幕グループの言語を指定します。</li>
      3. <li class="li" id="li-thg-efn-bar">Type: タイプ を "SubtitleGroup" に指定します。</li>
      4. </ul>
      5. </li>
      6. </ul>
      7. </div>
      8. <div class="p" id="p-1no-rrp-sbk">字幕ストリームを抽出します。
      9. <ul class="ul" id="ul-xvn-4km-x2b">
      10. <li class="li" id="li-fhe-e4w-5y1">
      11. <p class="p" id="p-20h-hyc-xvi">STL、TTML、WebVTT の字幕を OSS にアップロードします。</p>
      12. </li>
      13. <li class="li" id="li-vzp-3wx-d66">
      14. <p class="p" id="p-aja-lxp-4o9">アクティビティの定義は以下のとおりです。</p>
      15. <pre class="pre codeblock" id="codeblock-b2l-7o5-7gm"><code>

      “subtitleCNNode” : {“Name” : “subtitleCNNode”,“Parameters” : {“InputConfig” : “{\”Format\”:\”vtt\”,\”InputFile\”:{\”URL\”:\”http://bucketname.oss-cn-hangzhou.aliyuncs.com/test/Audio-SiHD.chs.vtt\"}}“,“Representation” : “{\”Id\”:\”subtitle-chinese\”, \”URI\”:\”subtitle/cn-xx.vtt\”}”},“Type” : “Transcode”}

        1. <li class="li" id="li-c97-zvk-4gt">
        2. <p class="p" id="p-mrr-1pv-nt6">InputConfig には字幕の URL を指定します。 URL は <a title="" href="https://jp.alibabacloud.com/help/doc-detail/44458.htm">AddMedia</a> 操作を呼び出す際に OverrideParams パラメーターを設定することでオーバーライドできます。
        3. </p>
        4. </li>
        5. <li class="li" id="li-33c-ays-af8">
        6. <p class="p" id="p-z4e-ygq-q95">URI: 出力結果の字幕ストリームの場所を指定します。 </p>
        7. </li>
        8. <li class="li" id="li-gx1-3bv-1ik">
        9. <p class="p" id="p-fv7-odv-qbd">Type は Transcode (トランスコードアクティビティ) に設定します。</p>
        10. </li>
        11. </ul>
        12. </li>
        13. </ul>
        14. </div>
        15. <div class="p" id="p-jha-ffs-701">Master Playlist ファイルを出力します。
        16. <ul class="ul" id="ul-mky-rkm-x2b">
        17. <li class="li" id="li-0np-mzx-lae">
        18. <p class="p" id="p-lvh-kjp-x7x">音声、ビデオ、字幕ストリームの出力結果をすべて Master Playlist ファイルにパッケージ化します。</p>
        19. </li>
        20. <li class="li" id="li-34i-92e-6mm">
        21. <p class="p" id="p-d6y-vjj-scd">アクティビティの定義は以下のとおりです。</p>
        22. <pre class="pre codeblock" id="codeblock-nwq-qrk-owv"><code>

        {“Parameters” : {},“Type” : “GenerateMasterPlayList”}

          1. <li class="li" id="li-ucv-71s-x8x">Type は GenerateMasterPlayList (Master Playlist ファイルの生成) に指定します。</li>
          2. </ul>
          3. </li>
          4. </ul>
          5. </div>
          6. <div class="p" id="p-t6t-rd8-cn3">トポロジは以下のとおりです。<br><img class="image" id="image-rls-wkm-x2b" src="images/10186_en-US.png"><br></div>
          7. <div class="p" id="p-p19-52g-gqx">トポロジーに示されているシナリオの例です。
          8. <pre class="pre codeblock" id="codeblock-jqa-wp7-kob"><code>

          {“Activities”: {“act-package”: {“Name”: “act-package”,“Parameters”: {“Output”: “{\”Bucket\”: \”outputbucketname\”,\”Location\”: \”oss-cn-hangzhou\”,\”MasterPlayListName\”: \”dashpackage/{MediaId}/{RunId}/master.mpd\”}”,“Protocol”: “dash”},“Type” : “PackageConfig”},“video-group”: {“Name”: “video-group”,“Parameters”: {“AdaptationSet”: “{\”Group\”:\”VideoGroup\”}”},“Type”: “VideoGroup”},“audio-en-group”: {“Name”: “audio-en-group”,“Parameters”: {“AdaptationSet”: “{\”Lang\”:\”english\”, \”Group\”:\”AudioGroupEnglish\”}”},“Type” : “AudioGroup”},“audio-cn-group”: {“Name”: “audio-cn-group”,“Parameters”: {“AdaptationSet”: “{\”Lang\”:\”chinese\”, \”Group\”:\”AudioGroupChinese\”}”},“Type” : “AudioGroup”},“subtitle-en-group”: {“Name”: “subtitle-en-group”,“Parameters”: {“AdaptationSet”: “{\”Lang\”:\”english\”, \”Group\”:\”SubtitleENGroup\”}”},“Type” : “SubtitleGroup”},“subtitle-cn-group”: {“Name”: “subtitle-cn-group”,“Parameters”: {“AdaptationSet”: “{\”Lang\”:\”chinese\”, \”Group\”:\”SubtitleCNGroup\”}”},“Type” : “SubtitleGroup”},“videoTransLD”: {“Name”: “videoTransLD”,“Parameters”: {“Outputs”: “[{\”TemplateId\”:\”d053297fc44f9dd6becd4a98d1c42f50\”,\”Audio\”:{\”Remove\”:\”true\”}}]”,“Representation”: “{\”Id\”:\”270pLD\”, \”URI\”:\”videoLD/xx.mpd\”}”},“Type”: “Transcode”},“videoTransSD”: {“Name”: “videoTransSD”,“Parameters”: {“Outputs”: “[{\”TemplateId\”:\”d861b90f6c0aed8f81095e5c5b857cba\”,\”Audio\”:{\”Remove\”:\”true\”}}]”,“Representation”: “{\”Id\”:\”480pSD\”, \”URI\”:\”videoSD/xx.mpd\”}”},“Type”: “Transcode”},“videoTransHD”: {“Name”: “videoTransHD”,“Parameters”: {“Outputs”: “[{\”TemplateId\”:\”117b3ae88efbc97df372cfd9a0e1ff4c\”,\”Audio\”:{\”Remove\”:\”true\”}}]”,“Representation”: “{\”Id\”:\”720pHD\”, \”URI\”:\”videoHD/xx.mpd\”}”},“Type”: “Transcode”},“audioCNTransNode”: {“Name”: “audioCNTransNode”,“Parameters”: {“Outputs”: “[{\”TemplateId\”:\”d053297fc44f9dd6becd4a98d1c42f50\”,\”AudioStreamMap\”:\”0:a:0\”,\”Video\”:{\”Remove\”:\”true\”}}]”,“Representation”: “{\”Id\”:\”chinese128k\”, \”URI\”:\”audiocn/cn-abc.mpd\”}”},“Type”: “Transcode”},“audioENTransNode”: {“Name”: “audioENTransNode”,“Parameters”: {“Outputs”: “[{\”TemplateId\”:\”d053297fc44f9dd6becd4a98d1c42f50\”,\”AudioStreamMap\”:\”0:a:1\”,\”Video\”:{\”Remove\”:\”true\”}}]”,“Representation”: “{\”Id\”:\”english128k\”, \”URI\”:\”audioen/en-abc.mpd\”}”},“Type”: “Transcode”},“subtitleENNode”: {“Name”: “subtitleENNode”,“Parameters”: {“InputConfig”: “{\”Format\”:\”vtt\”,\”InputFile\”:{\”URL\”:\”http://bucketname.oss-cn-hangzhou.aliyuncs.com/dashpackage/subtitle/Subtitle.EN.vtt\"}}“,“Representation”: “{\”Id\”:\”subtitle-english\”, \”URI\”:\”subtitle/en-xx.vtt\”}”},“Type”: “Transcode”},“subtitleCNNode”: {“Name”: “subtitleCNNode”,“Parameters”: {“InputConfig”: “{\”Format\”:\”vtt\”,\”InputFile\”:{\”URL\”:\”http://bucketname.oss-cn-hangzhou.aliyuncs.com/dashpackage/subtitle/Subtitle.CN.vtt\"}}“,“Representation”: “{\”Id\”:\”subtitle-chinese\”, \”URI\”:\”subtitle/cn-xx.vtt\”}”},“Type”: “Transcode”},“act-report”: {“Name”: “act-report”,“Parameters”: {“PublishType”: “Auto”},“Type”: “Report”},“act-start”: {“Name”: “act-start”,“Parameters”: {“PipelineId”: “cc7fcef2562e4abc9332d491f93399d2”,“InputFile”: “{\”Bucket\”:\”inputbucketname\”,\”Location\”:\”oss-cn-hangzhou\”,\”ObjectPrefix\”:\”package/dash/\”}”},“Type”: “Start”},“generateMasterPlayListAct”: {“Name”: “generateMasterPlayListAct”,“Parameters”: {},“Type”: “GenerateMasterPlayList”}},“Dependencies”: {“audio-en-group”: [“audioENTransNode”],“video-group”: [“videoTransLD”, “videoTransSD”, “videoTransHD”],“audio-cn-group”: [“audioCNTransNode”],“audioCNTransNode”: [“generateMasterPlayListAct”],“subtitleENNode”: [“generateMasterPlayListAct”],“act-package”: [“audio-en-group”, “audio-cn-group”, “subtitle-cn-group”, “subtitle-en-group”, “video-group”],“act-report”: [],“videoTransSD”: [“generateMasterPlayListAct”],“videoTransHD”: [“generateMasterPlayListAct”],“subtitle-en-group”: [“subtitleENNode”],“subtitle-cn-group”: [“subtitleCNNode”],“subtitleCNNode”: [“generateMasterPlayListAct”],“act-start”: [“act-package”],“videoTransLD”: [“generateMasterPlayListAct”],“generateMasterPlayListAct”: [“act-report”],“audioENTransNode”: [“generateMasterPlayListAct”]}}