すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Services:複数字幕のトランスコーディングとパッケージング

最終更新日:Oct 21, 2025

このドキュメントでは、開発者が Alibaba Cloud Intelligent Media Services (IMS) を使用して、複数の字幕付きコンテンツをトランスコーディングおよびパッケージングする方法について説明します。これにより、さまざまなデバイスで再生するための複数字幕のオーディオおよびビデオファイルを迅速に生成できます。

トランスコーディングとパッケージングのフロー

  • 言語 2 の字幕ファイル(WebVTT/SRT/ASS)
  • オーディオまたはビデオ(言語 2)
  • ビデオ(デフォルト言語)
  • 開始
  • 入力パラメーター
  • 入力ファイル
  • 終了
  • 出力<br>Manifest.m3u8
  • パッケージ化されたファイル構造の例

    #EXTM3U
    
    # オーディオストリーム定義 (多言語)
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Chinese-Audio",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="zh",URI="audio/chinese/chinese.m3u8"
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English-Audio",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="audio/english/english.m3u8"
    
    # ビデオストリーム定義 (マルチビットレート)
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000,CODECS="avc1.640020",RESOLUTION=720x1280,AUDIO="audio",SUBTITLES="subtitle"
    video/720p/720p.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,CODECS="avc1.640020",RESOLUTION=360x640,AUDIO="audio",SUBTITLES="subtitle"
    video/360p/360p.m3u8
    
    # 字幕ストリーム定義 (多言語)
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="Chinese-Subtitle",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="zh",URI="subtitle/chinese/chinese.m3u8"
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="English-Subtitle",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subtitle/english/english.m3u8"

    前提条件

    Intelligent Media Services をアクティベートしていること。 詳細については、「サービスのアクティベート」をご参照ください。

    準備

    IMS の基本構成

    • ストレージ構成: OSS バケットを IMS サービスにアタッチします。 詳細については、「ストレージの場所の設定」をご参照ください。

    • コールバック構成: タスクステータス通知を受け入れるように HTTP または MNS コールバックを構成します。 コールバックメソッドとイベントの詳細については、「コールバックイベントの概要」をご参照ください。

    トランスコーディングテンプレートの構成

    構成フロー

    要件の例

    エンコードプロトコル: H264/H265

    ビデオ解像度: 360p/540p/720p/1080p

    オーディオ: HE-AAC 64 Kbps (デフォルト構成)

    字幕: M3U8 (VTT)

    構成例

    この例では、次の表に基づいて 4 つのビデオ定義用のトランスコーディングテンプレートを作成します。 テンプレートを作成するには、「トランスコーディングテンプレートの作成」をご参照ください。

    説明

    ナローバンド HD トランスコーディングを実行するには、表に基づいて対応するテンプレートを作成し、チケットを送信します。 Alibaba Cloud がバックエンドでアップグレード構成を実行します。

    H264

    トランスコーディングテンプレート

    エンコードプロトコル

    コンテナフォーマット

    その他の構成

    Video-360p

    H264

    m3u8 (.ts)

    • 解像度 (長辺固定、短辺適応): 640*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-540p

    H264

    m3u8 (.ts)

    • 解像度 (長辺固定、短辺適応): 960*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-720p

    H264

    m3u8 (.ts)

    • 解像度 (長辺固定、短辺適応): 1280*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-1080p

    H264

    m3u8 (.ts)

    • 解像度 (長辺固定、短辺適応): 1920*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    H265

    説明
    • 推奨オプション: fmp4 コンテナフォーマットを使用します。 これは Apple の標準プロトコルであり、Safari ブラウザと互換性があります。

    • 代替案: ts コンテナフォーマットも使用可能ですが、Safari とは互換性がありません。

    • コンソールの制限: コンソールでは fmp4 コンテナフォーマットを作成できません。 まず、m3u8 (.ts) コンテナフォーマットでテンプレートを作成します。 その後、Alibaba Cloud がバックエンドで構成をアップグレードします。

    トランスコーディングテンプレート

    エンコードプロトコル

    コンテナフォーマット

    その他の構成

    Video-360p

    H265

    m3u8 (.fmp4)

    • 解像度 (長辺固定、短辺適応): 640*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-540p

    H265

    m3u8 (.fmp4)

    • 解像度 (長辺固定、短辺適応): 960*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-720p

    H265

    m3u8 (.fmp4)

    • 解像度 (長辺固定、短辺適応): 1280*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    Video-1080p

    H265

    m3u8 (.fmp4)

    • 解像度 (長辺固定、短辺適応): 1920*

    • セグメント長: 5 s

    • 必要に応じて他のパラメーターを構成します。

    マルチビットレートのトランスコーディングとパッケージングジョブ

    マルチビットレートジョブの送信

    SubmitMediaConvertJob 操作を呼び出して、ビデオまたはオーディオファイルのトランスコーディングジョブを IMS に送信します。

    OverrideParams を使用して字幕ストリームを設定する

    字幕情報はトランスコーディングテンプレートではカスタマイズできません。 ジョブを送信するときに OverrideParams を使用して明示的に設定する必要があります。

    パラメーター

    タイプ

    説明

    Subtitles

    Subtitle の配列

    字幕ストリームの設定。

    Subtitle

    パラメーター

    タイプ

    説明

    Codec

    String

    字幕ストリームのエンコード形式。 HTTP Live Streaming (HLS) は VTT フォーマットのみをサポートします。

    構成の説明 (HlsGroupConfig)

    パラメーター

    タイプ

    説明

    Type

    string

    データストリームタイプを指定します。

    有効な値:

    • video: ビデオストリーム。 処理中にはビデオ関連の設定のみが保持されます。

    • audio: オーディオストリーム。 処理中にはオーディオ関連の設定のみが保持されます。

    • hybrid: ハイブリッドストリーム。 処理中にはオーディオとビデオの両方の設定が保持されます。

    Bandwidth

    string

    帯域幅を設定します。 このパラメーターはオプションです。 デフォルトでは、bps 単位のビットレートが使用されます。

    このパラメーターは、Type が video または hybrid に設定されている場合に有効になります。

    AudioGroup

    string

    このビデオ取り込みエンドポイントによって参照されるオーディオグループ。 このパラメーターは、Type が video に設定されている場合に有効になります。

    SubtitleGroup

    string

    このビデオ取り込みエンドポイントによって参照される字幕グループ。 このパラメーターは、Type が video または hybrid に設定されている場合に有効になります。

    Name

    string

    HLS マニフェスト内のこの出力ストリームの NAME プロパティ。 このパラメーターは、Type が audio または subtitle に設定されている場合に必須です。

    Group

    string

    HLS マニフェスト内のこの出力ストリームの GROUP_ID プロパティ。 このパラメーターは、Type が audio または subtitle に設定されている場合に有効になります。

    デフォルトでは、値は Type の値と同じです。

    Language

    string

    HLS マニフェスト内のこの出力ストリームの LANGUAGE プロパティ。 このパラメーターは、Type が audio または subtitle に設定されている場合に有効になります。 値は RFC 5646 に準拠する必要があります。

    Default

    boolean

    ストリームをデフォルトストリームとして設定するかどうかを指定します。 このパラメーターは、Type が audio に設定されている場合に有効になります。

    AutoSelect

    boolean

    ストリームを自動的に選択するかどうかを指定します。 このパラメーターは、Type が audio に設定されている場合に有効になります。

    Forced

    boolean

    ストリームを強制的に表示するかどうかを指定します。 このパラメーターは、Type が audio に設定されている場合に有効になります。

    シナリオ 1: マルチビットレートのパッケージ化ファイルをトランスコーディングして生成する

    {
        "Config": {
            "Inputs": [
                {
                    "Name": "video",
                    "InputFile": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<OSS Public Endpoint>/<Video1_Chinese>"
                    }
                },
                {
                    "Name": "EnglishAudio",
                    "InputFile": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<OSS Public Endpoint>/<Audio1_English>"
                    }
                },
                {
                    "Name": "ChineseSubtitle",
                    "InputFile": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<OSS Public Endpoint>/<Caption1_Chinese>"
                    }
                },
                {
                    "Name": "EnglishSubtitle",
                    "InputFile": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<OSS Public Endpoint>/<Caption1_English>"
                    }
                }
            ],
            "OutputGroups": [
                {
                    "Name": "Hls",
                    "GroupConfig": {
                        "Type": "Hls",
                        "OutputFileBase": {
                            "Type": "OSS",
                            "Url": "https://<Bucket>.<Public Endpoint>/<URI>/"
                        },
                        "ManifestName": "<m3u8filename>"
                    },
                    "Outputs": [
                        {
                            "Name": "720P",
                            "OutputFileName": "video/720p/720p",
                            "TemplateId": "Video-720p",
                            "HlsGroupConfig": {
                                "Type": "Video"
                            }
                        },
                        {
                            "Name": "360P",
                            "OutputFileName": "video/360p/360p",
                            "TemplateId": "Video-360p",
                            "HlsGroupConfig": {
                                "Type": "Video"
                            }
                        },
                        {
                            "OutputFileName": "audio/chinese/chinese",
                            "TemplateId": "Audio-64Kbps",
                            "HlsGroupConfig": {
                                "Type": "Audio",
                                "Name": "ChineseAudio",
                                "Language": "zh",
                                "Autoselect": "TRUE",
                                "Default": "TRUE"
                            }
                        },
                        {
                            "InputRef": "ChineseSubtitle",
                            "OutputFileName": "subtitle/chinese/chinese",
                            "TemplateId": "Any template ID in the packaging job",
                            "OverrideParams": {
                                "Subtitles": [
                                    {
                                        "Codec": "vtt"
                                    }
                                ]
                            },
                            "HlsGroupConfig": {
                                "Type": "Subtitle",
                                "Name": "ChineseSubtitle",
                                "Language": "zh",
                                "Autoselect": "TRUE",
                                "Default": "TRUE"
                            }
                        },
                        {
                            "InputRef": "EnglishAudio",
                            "OutputFileName": "audio/english/english",
                            "TemplateId": "Audio-64Kbps",
                            "HlsGroupConfig": {
                                "Type": "Audio",
                                "Name": "EnglishAudio",
                                "Language": "en",
                                "Autoselect": "TRUE",
                                "Default": "FALSE"
                            }
                        },
                        {
                            "InputRef": "EnglishSubtitle",
                            "OutputFileName": "subtitle/english/english",
                            "TemplateId": "Any template ID in the packaging job",
                            "OverrideParams": {
                                "Subtitles": [
                                    {
                                        "Codec": "vtt"
                                    }
                                ]
                            },
                            "HlsGroupConfig": {
                                "Type": "Subtitle",
                                "Name": "EnglishSubtitle",
                                "Language": "en",
                                "Autoselect": "TRUE",
                                "Default": "FALSE"
                            }
                        }
                    ]
                }
            ]
        }
    }

    ジョブ結果のクエリ

    GetMediaConvertJob 操作を呼び出して、トランスコーディングジョブの詳細を取得します。

    コールバックイベント通知

    イベントタイプ: MediaConvertComplete

    構成メソッド: コンソールでこのイベントを選択することはできません。 SetEventCallback 操作を呼び出して構成する必要があります。

    主要なフィールドの説明

    パラメーター名

    タイプ

    必須

    説明

    Name

    String

    はい

    メインジョブの名前。

    JobId

    String

    はい

    ジョブ ID。

    Status

    String

    はい

    ジョブの結果。 "Success" はジョブが成功したことを示します。 いずれかのサブタスクが成功した場合、全体の結果は成功と見なされます。

    TriggerSource

    String

    いいえ

    トリガーソース。 API は、ジョブが API 操作を呼び出すことによって送信されたことを示します。

    FinishTime

    String

    いいえ

    ジョブが完了した時間。 フォーマットは EventTime のフォーマットと同じである必要があります。

    UserData

    string

    いいえ

    ジョブの送信時に渡されるカスタムデータ。

    {
    	"FinishTime": "2025-05-09T08:03:21Z",
    	"JobId": "your-job-id",
    	"Status": "Success",
    	"TriggerSource": "IceWorkflow",
    	"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
    }