説明
HLS パッケージとは、複数の字幕、複数のトラック、および複数のビットストリームを Master Playlist ファイルに統合する処理を指します。 この処理は、まず HLS パッケージのワークフローを作成し、次に AddMedia インターフェイスを呼び出して処理する動画と HLS パッケージワークフローの ID を指定するものです。
- AddMediaWorkflow インターフェイスを使用してワークフローを追加します。このとき、次のオブジェクトに注意が必要です。
-
Topology
有向非巡回グラフ (DAG) によって定義される業務プロセスです。
-
Activity
トポロジーを構成する処理ノードを指します。 HLS パッケージワークフローを作成する際は、以下のアクティビティにご注意ください。
-
HLS パッケージ設定を指定し、Master Playlist ファイルの出力場所を設定します。
.
-
フロントノードで、 Start が可能です。
-
バックノードで、SubtitleGroup、AudioGroup、および Transcode (ビデオのみ) が可能です。
-
-
字幕グループ ID を指定します。
.
-
フロントノードで、PackageConfig が可能です。
-
バックノードで、Transcode (字幕のみ) が可能です。
-
-
音声グループ ID を指定します。
.
-
フロントノードで、PackageConfig が可能です。
-
バックノードで、Transcode (音声のみ) が可能です。
-
-
ビデオ、音声、字幕ストリームを抽出します。
.
-
フロントノードで、PackageConfig、SubtitleGroup、および AudioGroup が可能です。
-
バックノードで、GenerateMasterPlayList が可能です。
-
-
HLS パッケージ生成アクティビティであり、マルチレートストリーム設定、音声グループ、および字幕グループを指定します。
.
-
フロントノードで、Transcode が可能です。
-
バックードで、Report が可能です。
-
-
-
Dependencies
アクティビティ間の依存関係を示す、トポロジー内のエッジを指します。
-
- AddMedia 操作を呼び出し、MPS にメディアを追加します。
-
メディアワークフロー ID を指定します。
-
字幕抽出がある場合、Transcode アクティビティの WebVTTSubtitleURL パラメーターを字幕ファイルのアドレスで上書きし、WebVTT の字幕ファイルのみがサポートされるように設定できます。
-
ワークフロートリガーモードを NotInAuto に設定します。
-
シナリオ
mxf 形式のソースファイル (mp4、flv、m3u8 (ts) などの形式もサポートしています) から 3 つの音声トラック、2 つのビデオストリーム、2 つの WebVTT 字幕グループを抽出し、それらを結合して Master Playlist にパッケージ化します。
-
Bucket を設定します。
-
Master Playlist ファイルの Location を指定します。
-
Master Playlist ファイルの名前を指定します。
-
アクティビティの定義は以下のとおりです。
{ "Parameters" : { "Output" : "{\"Bucket\": \"processedmediafile\",\"Location\": \"oss-cn-hangzhou\",\"MasterPlayListName\": \"{MediaId}/{RunId}/hls/master.m3u8\"}" }, "Type" : "PackageConfig" }
-
Output は出力先と Master Playlist ファイルの名前を示します。 詳細は、「PackageConfig アクティビティでサポートされているパラメーター」をご参照ください。
-
Type を PackageConfig に設定します。
-
-
音声グループ ID を設定します。ここでは、2 つの音声ストリームが同じ音声グループに属しています。
-
アクティビティの定義は以下のとおりです。
{ "Parameters" : { "GroupId" : "audios" }, "Type" : "AudioGroup" }
-
GroupId: 音声グループ ID に "audios" を指定します。
-
Type: タイプには "AudioGroup" アクティビティを指定します。
-
-
mxf ソースファイルからビデオストリームを除去して、音声ストリームを抽出します。
-
出力音声のパラメーターは以下のとおりです。
-
Codec: AAC
-
SampleRate:48000 Hz
-
Format:Stereo
-
-
アクティビティの定義は以下のとおりです。
{ "Name" : "audio-extract-1", "Parameters" : { "Outputs" : "[{\"TemplateId\":\"S00000001-100020\",\"AudioStreamMap\":\"0:a:0\",\"Video\":{\"Remove\":\"true\"}}]", "ExtXMedia" : "{\"URI\": \"sd/audio-en.m3u8\",\"Name\": \"audio-en\",\"Language\": \"en-US\"}" }
-
Preset static templates ID: "S00000001-100020" は、音声出力が m3u8(ts) 形式であり、プリセットテンプレートで設定されている音声ビットレートが 80 kbps であることを示しています。
-
AudioStreamMap: 音声ストリームの連番です。 詳細は、「Output」をご参照ください。
-
出力結果から、ビデオストリームを除去します。 詳細は、「ビデオ」をご参照ください。
-
ExtXMedia は Media Playlist を定義します。URI には Media Playlist の名前を指定します。
-
Type は Transcode (トランスコードアクティビティ) に設定します。
-
-
mxf 形式のソースファイルから音声ストリームを除去して、ビデオストリームを抽出します。
-
アクティビティの定義は以下のとおりです。
{ "Name" : "video-extract", "Parameters" : { "Outputs" : "[{\"TemplateId\":\"1fe5393bdb7b2b883f0a0fc91e81344a\",\"Audio\":{\"Remove\":\"true\"}}]", "MultiBitrateVideoStream" : "{\"URI\": \"sd/video1.m3u8\"}" }, "Type" : "Transcode" }
-
カスタムトランスコードテンプレート ID: "1fe5393bdb7b2b883f0a0fc91e81344a" です。 MPS コンソールにログインし、
からビデオトランスコードパラメータを設定できます。-
Codec: H. 264
-
Resolution: 384 x 216
-
Profile: Main
-
Bitrate: 240 Kbps
-
Fps: 25
-
PixelFormat: YUV420P Max GOP size: 1 segment length (4 seconds)
-
Output format: m-3u8
-
-
出力結果から音声ストリームを除去します。 詳細は、「音声」をご参照ください。
-
MultiBitrateVideoStream には Master Playlist のマルチビットレートビデオストリームを定義します。URI には Media Playlist の名前を指定します。
-
Type を Transcode (トランスコードアクティビティ) に設定します。
-
-
字幕グループ ID を設定します。ここでは、2 つの字幕ストリームは同じ字幕グループに所属しています。
-
アクティビティの定義は以下のとおりです。
{ "Parameters" : { "GroupId" : "subtitles" }, "Type" : "SubtitleGroup" }
-
GroupId: 字幕グループ ID を "audios" に指定します。
-
Type: タイプ を "SubtitleGroup" アクティビティに指定します。
-
-
OSS に WebVTT 形式の字幕をアップロードします。
-
アクティビティの定義は以下のとおりです。
{ "Name" : "subtitle-extract-1", "Parameters" : { "WebVTTSubtitleURL" : "http://mts-video.oss-cn-hangzhou.aliyun-inc.com/ShawshankRedemption.vtt", "ExtXMedia" : "{\"URI\": \"zh/subtitle1-cn.m3u8\",\"Name\": \"subtitle-cn\",\"Language\": \"cn\"}" }, "Type" : "Transcode" }
-
WebVTTSubtitleURL には、字幕のアドレスを指定します。 字幕のアドレスは、AddMedia の呼び出し中に動的に上書きされます。 このパラメータについて詳しくは、「OverrideParams」をご参照ください。
-
ExtXMedia には Media Playlist を定義します。URI には Media Playlist の名前を指定します。
-
Type は Transcode (トランスコードアクティビティ) に設定します。
-
-
音声、ビデオ、字幕ストリームの出力結果をすべて Master Playlist ファイルにパッケージ化します。
-
アクティビティの定義は以下のとおりです。
{ "Parameters" : { "MasterPlayList" : "{\"MultiBitrateVideoStreams\": [{\"RefActivityName\": \"video-extract\",\"ExtXStreamInfo\": {\"BandWidth\": \"1110000\",\"Audio\": \"audios\",\"Subtitles\": \"subtitles\"}}]}" }, "Type" : "GenerateMasterPlayList" }
-
MasterPlayList には Master Playlist を定義します。
-
MultiBitrateVideoStreams は、マルチビットレートのビデオストリームグループを表します。
-
RefActivityName にはビデオストリームのアクティビティ名を指定します。
-
ExtXStreamInfo にはマルチビットレートビデオストリームの属性を定義します。Audio にはオーディオグループを、Subtitles には字幕グループを指定します。
-
Type は GenerateMasterPlayList (Master Playlist の生成アクティビティ) に指定します。
-

{
"Activities" : {
"package-node" : {
"Name" : "package-node",
"Parameters" : {
"Output" : "{\"Bucket\": \"processedmediafile\",\"Location\": \"oss-cn-hangzhou\",\"MasterPlayListName\": \"{MediaId}/{RunId}/hls/master.m3u8\"}"
},
"Type" : "PackageConfig"
},
"audioGroupNode" : {
"Name" : "audioGroupNode",
"Parameters" : {
"GroupId" : "audios"
},
"Type" : "AudioGroup"
},
"subtitleGroupNode" : {
"Name" : "subtitleGroupNode",
"Parameters" : {
"GroupId" : "subtitles"
},
"Type" : "SubtitleGroup"
},
"video-extract-1" : {
"Name" : "video-extract-1",
"Parameters" : {
"Outputs" : "[{\"TemplateId\":\"1fe5393bdb7b2b883f0a0fc91e81344a\",\"Audio\":{\"Remove\":\"true\"}}]",
"MultiBitrateVideoStream" : "{\"URI\": \"sd/video1.m3u8\"}"
},
"Type" : "Transcode"
},
"video-extract-2" : {
"Name" : "video-extract-1",
"Parameters" : {
"Outputs" : "[{\"TemplateId\":\"1fe5393bdb7b2b883f0a0fc91e81344b\",\"Audio\":{\"Remove\":\"true\"}}]",
"MultiBitrateVideoStream" : "{\"URI\": \"sd/video2.m3u8\"}"
},
"Type" : "Transcode"
},
"audio-extract-1" : {
"Name" : "audio-extract-1",
"Parameters" : {
"Outputs" : "[{\"TemplateId\":\"S00000001-100020\",\"AudioStreamMap\":\"0:a:0\"}]",
"ExtXMedia" : "{\"URI\": \"sd/audio-en-1.m3u8\",\"Name\": \"audio-en\",\"Language\": \"en-US\"}"
},
"Type" : "Transcode"
},
"audio-extract-2" : {
"Name" : "audio-extract-2",
"Parameters" : {
"Outputs" : "[{\"TemplateId\":\"S00000001-100020\",\"AudioStreamMap\":\"0:a:1\"}]",
"ExtXMedia" : "{\"URI\": \"sd/audio-cn.m3u8\",\"Name\": \"audio-cn\",\"Language\": \"cn\"}"
},
"Type" : "Transcode"
},
"audio-extract-3" : {
"Name" : "audio-extract-3",
"Parameters" : {
"Outputs" : "[{\"TemplateId\":\"S00000001-100020\",\"AudioStreamMap\":\"0:a:2\"}]",
"ExtXMedia" : "{\"URI\": \"sd/audio-de.m3u8\",\"Name\": \"audio-de\",\"Language\": \"de\"}"
},
"Type" : "Transcode"
},
"subtitle-extract-1" : {
"Name" : "subtitle-extract-1",
"Parameters" : {
"WebVTTSubtitleURL" : "http://mts-video-daily-bucket.oss-test.aliyun-inc.com/1.vtt",
"ExtXMedia" : "{\"URI\": \"zh/subtitle1-cn.m3u8\",\"Name\": \"subtitle-cn\",\"Language\": \"cn\"}"
},
"Type" : "Transcode"
},
"subtitle-extract-2" : {
"Name" : "subtitle-extract-2",
"Parameters" : {
"WebVTTSubtitleURL" : "http://mts-video.oss-cn-hangzhou.aliyun-inc.com/ShawshankRedemption.vtt",
"ExtXMedia" : "{\"URI\": \"zh/subtitle1-en.m3u8\",\"Name\": \"subtitle-en\",\"Language\": \"en-US\"}"
},
"Type" : "Transcode"
},
"masterPlayListGenerate" : {
"Name" : "masterPlayListGenerate",
"Parameters" : {
"MasterPlayList" : "{\"MultiBitrateVideoStreams\": [{\"RefActivityName\": \"video-extract-1\",\"ExtXStreamInfo\": {\"BandWidth\": \"1110000\",\"Audio\": \"audios\",\"Subtitles\": \"subtitles\"}}, {\"RefActivityName\": \"video-extract-2\",\"ExtXStreamInfo\": {\"BandWidth\": \"5000000\",\"Audio\": \"audios\",\"Subtitles\":\"subtitles\"}}]}"
},
"Type" : "GenerateMasterPlayList"
},
"activityEnd" : {
"Name" : "activityEnd",
"Parameters" : {
"PublishType" : "Manual"
},
"Type" : "Report"
},
"activityStart" : {
"Name" : "activityStart",
"Parameters" : {
"PipelineId" : "900ededca77641ecbecd4f44cc3a2965",
"Role" : "AliyunMTSDefaultRole",
"InputFile" : "{\"Bucket\":\"videouploaded\",\"Location\":\"oss-cn-hangzhou\",\"ObjectPrefix\":\"uploaded/\"}"
},
"Type" : "Start"
}
},
"Dependencies" : {
"video-extract-1" : [ "masterPlayListGenerate" ],
"video-extract-2" : [ "masterPlayListGenerate" ],
"audio-extract-1" : [ "masterPlayListGenerate" ],
"audio-extract-2" : [ "masterPlayListGenerate" ],
"audio-extract-3" : [ "masterPlayListGenerate" ],
"subtitle-extract-1" : [ "masterPlayListGenerate" ],
"subtitle-extract-2" : [ "masterPlayListGenerate" ],
"package-node" : [ "video-extract-1", "video-extract-2","subtitleGroupNode", "audioGroupNode" ],
"audioGroupNode" : [ "audio-extract-1", "audio-extract-2","audio-extract-3"],
"subtitleGroupNode" : [ "subtitle-extract-1", "subtitle-extract-2" ],
"masterPlayListGenerate" : [ "activityEnd" ],
"activityEnd" : [ ],
"activityStart" : [ "package-node" ]
}
}
コード例
- HLS パッケージワークフローの作成
- メディアの追加