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

Object Storage Service:ライブトランスコーディングプレイリストの生成

最終更新日:Dec 21, 2025

この機能は、ビデオの標準的な HTTP Live Steaming (HLS) m3u8 プレイリストを生成します。これにより、Transport Stream (TS) ファイルを事前に生成することなく、ビデオをすぐに再生できます。ビデオは再生中に動的にトランスコーディングされます。従来のオフラインのトランスコーディングと比較して、この方法はオンデマンドでコンテンツを処理することにより、トランスコーディングの待機時間を大幅に短縮し、トランスコーディングとストレージのコストを削減します。

概要

ビデオトランスコーディングでは、ビデオ全体のトランスコーディングが完了するまで再生を待つ必要がありますが、ライブトランスコーディングはリアルタイム機能です。必要なビデオセグメントのみをその場でトランスコーディングすることで、ソースビデオファイルがアップロードされた直後に再生を開始できます。ライブトランスコーディングには、次の利点があります。

  • 再生中にトランスコーディングするため、待機時間がありません。

  • 最適化されたトランスコーディングにより、高速な起動とシークが可能になり、ローカル再生と同様の再生体験を提供します。

  • ビデオが再生されない場合、トランスコーディングは行われません。トランスコーディングされたファイルは削除し、オンデマンドで再生成できます。これにより、トランスコーディングとストレージのコストを大幅に節約できます。

  • 高度なカスタマイズのために、数十のトランスコーディングパラメーターをサポートします。

  • 300 以上のオーディオおよびビデオフォーマットをサポートし、高い互換性を提供します。

利用シーン

  • ネットワークドライブ:ユーザーがビデオをアップロードした後、クライアントはネットワーク条件に基づいて最適な解像度を選択して再生できます。これにより、リアルタイム再生とデバイスの互換性が確保されます。頻繁にアクセスされないビデオは、再生されない場合はトランスコーディングされず、ストレージコストを削減します。

  • チャットアプリケーションでのビデオプレビュー:インスタントメッセージ (IM) やソーシャルメディアアプリケーションでは、ビデオは送信直後に再生可能です。これにより、リアルタイムパフォーマンスが向上します。チャット履歴内のビデオは定期的に削除でき、オンデマンドで再生可能な状態を維持できます。

  • オンラインフォーラムとブログ:フォーラムやブログでビデオを共有する際、ライブトランスコーディングを使用すると、ユーザーはトランスコーディングを待つことなくビデオを視聴できます。これにより、スムーズな再生と高解像度が保証されます。

特徴

次の表に、ライブトランスコーディングの特徴を説明します。

特徴

説明

標準化

  • 標準の HLS プロトコルをサポートします。

  • メディアプレイリストとマスタープレイリストの生成をサポートします。

  • 複数のビデオ、オーディオ、字幕ストリームの再生をサポートします。

  • 主流の HLS プレーヤーをサポートします。

  • 300 以上の主流のオーディオおよびビデオフォーマットをサポートします。

低コスト

  • 再生されないビデオやセグメントはトランスコーディングされません。これにより、トランスコーディングコストが削減されます。

  • トランスコーディングされたビデオセグメントは削除して、ストレージコストを節約できます。ビデオが再度再生されると、システムは自動的に新しいトランスコーディングタスクをトリガーし、シームレスなオンライン再生体験を保証します。

高効率

  • 大規模クラスターがリアルタイムのトランスコーディングをサポートします。

  • 複数の解像度とビットレートのビデオストリームを提供し、さまざまなネットワーク環境に適応してスムーズな再生を保証します。

  • トランスコーディングプロセス全体が完了するのを待つことなく、プレイリストが生成されるとすぐに再生を開始できます。

  • ビデオヘッダーセグメントのサイズは、より効率的な読み込みのために適応的に調整されます。

  • インテリジェントな事前トランスコーディングをサポートします。

サポートされているオーディオおよびビデオフォーマット

ライブトランスコーディングは、ほぼすべての一般的なフォーマットを含む 300 以上のオーディオおよびビデオフォーマットをサポートしています。次の表に、サポートされている一般的なフォーマットの一部を示します。

入力ビデオフォーマット

AVI、MOV、FLV、MKV、WebM、MPEG、WMV、RM、VOB、TS などのすべての主流フォーマット。

入力オーディオフォーマット

MP3、WAV、AAC、FLAC、WMA などのすべての主流フォーマット。

出力コンテナフォーマット

TS

前提条件

  • Intelligent Media Management (IMM) サービスが有効化されていること。詳細については、「プロダクトのアクティベーション」をご参照ください。

  • IMM プロジェクトがアタッチされていること。Object Storage Service (OSS) コンソールでプロジェクトをアタッチする方法の詳細については、「クイックスタート」をご参照ください。API を使用してプロジェクトをアタッチする方法の詳細については、「AttachOSSBucket - Object Storage Service バケットのアタッチ」をご参照ください。

  • IMM が処理を実行するために必要な権限を持っていること。詳細については、「権限」をご参照ください。

注意事項

パラメーターの説明

操作:hls/m3u8

次の表にパラメーターを説明します。

パラメーター

タイプ

必須

説明

ss

int

いいえ

プレイリストを生成する開始時刻。単位:ミリ秒 (ms)。有効値:

  • 0 (デフォルト) または空:ソースビデオの先頭から開始します。

  • 0 より大きい値:ソースビデオの指定した時刻から開始します。

説明

このパラメーターを t パラメーターと併用して、ソースビデオの特定の部分のプレイリストを生成します。

t

int

いいえ

プレイリストのトランスコーディング期間。単位:ms。有効値:

  • 0 (デフォルト) または空:ソースビデオの最後まで続行します。

  • 0 より大きい値:プレイリスト生成の開始時刻から指定された期間続行します。

説明

指定した時刻がソースビデオの最後を超える場合、デフォルト値が使用されます。

ta

int

いいえ

ライブトランスコーディングがトリガーされたときに事前トランスコーディングする TS ファイルの数。デフォルトでは、2 分間のビデオセグメントが事前トランスコーディングされます。

例:st が 10000 の場合、ta のデフォルト値は 12 です。このパラメーターを指定して、非同期で事前トランスコーディングされるセグメントの数を制御できます。有効値:[10,30]。

st

int

いいえ

単一の TS ファイルセグメントの期間。単位:ms。デフォルト:10000。有効値:[5000,15000]。

initd

int

いいえ

プレイリスト生成時の初期トランスコーディング期間。単位:ms。デフォルト:30000。

  • 期間が 0 の場合、事前トランスコーディングは実行されません。

  • 値が負であるか、ソースビデオの期間を超える場合、ビデオ全体が初期トランスコーディングされます。

  • 指定した期間が TS ファイルの途中で終わる場合、トランスコーディングはその TS ファイルの最後まで続行されます。

説明

このパラメーターは主に、最初の再生の待機時間を短縮し、ユーザーエクスペリエンスを向上させるために使用されます。従来の VOD サービスを置き換えるには、ビデオ全体を初期トランスコーディングすることを試みることができます。

vcodec

string

いいえ

ビデオコーデック (エンコード形式)。有効値:

  • h264 (デフォルト):H.264 エンコード形式。

  • h265:h265 エンコード形式。

fps

float

いいえ

ビデオフレームレート。デフォルト:ソースビデオと同じ。

fpsopt

int

いいえ

ビデオフレームレートのオプション。有効値:

  • 0:常にターゲットのフレームレートを使用します。

  • 1 (デフォルト):ソースのフレームレートが fps の値より低い場合、ソースのフレームレートを使用します。

  • 2:ソースのフレームレートが fps の値より低い場合、エラーを返します。

説明

このパラメーターは fps パラメーターと一緒に設定する必要があります。

pixfmt

string

いいえ

ピクセルフォーマット。デフォルト:ソースビデオと同じ。有効値:

  • yuv420p

  • yuv422p

  • yuv444p

  • yuv420p10le

  • yuv422p10le

  • yuv444p10le

s

string

いいえ

出力ビデオの解像度。幅 × 高さ 形式。デフォルト:ソースビデオの解像度と同じ。

  • フォーマットは w × h で、幅 × 高さを意味します。

  • 幅と高さは 2 の倍数で、64 から 4096 の範囲である必要があります。例:4096 × 4096、64 × 64。

sopt

string

いいえ

解像度オプション。有効値:

  • 0:常に指定されたターゲットビデオ解像度を使用します。

  • 1 (デフォルト):ソースビデオの面積が指定されたターゲットビデオ解像度の面積より小さい場合、ソースビデオの解像度を使用します。

  • 2:ソースビデオの解像度面積が指定されたターゲットビデオ解像度面積より小さい場合、エラーを返します。

scaletype

string

いいえ

スケーリングモード。有効値:

  • stretch (デフォルト):幅と高さ、または長辺と短辺を固定し、ビデオを強制的に拡大・縮小して空白スペースを埋めます。

  • crop:指定された矩形を超える最小解像度までビデオを比例的に拡大し、中央から余分な部分をトリミングします。

  • fill:指定された矩形内の最大解像度までビデオを比例的に拡大し、中央から空白スペースを黒で埋めます。

  • fit:指定された矩形内の最大解像度までビデオを比例的に拡大します。

説明

このパラメーターは s パラメーターと一緒に設定する必要があります。

arotate

int

いいえ

解像度の自動回転。有効値:

  • 0 (デフォルト):無効。

  • 1:有効。

vb

int

いいえ

ビデオストリームのビットレート。単位:bit/s。

crf または vb を指定しない場合、crf のデフォルト値は 23 です。vbopt を設定する場合、vb パラメーターは必須です。

vbopt

int

いいえ

ビデオビットレートのオプション。有効値:

  • 0:常に指定されたターゲットビデオビットレートを使用します。

  • 1 (デフォルト):ソースビデオのビットレートが指定されたターゲットビデオビットレートより低い場合、ソースビデオのビットレートを使用します。

  • 2:ソースビデオのビットレートが指定されたターゲットビデオビットレートより低い場合、エラーを返します。

crf

float

いいえ

固定品質モードを指定します。このパラメーターは vb パラメーターと相互排他です。有効値:[0,51]。値が大きいほど品質は低くなります。値は [18,38] の範囲で指定することを推奨します。crf または vb を指定しない場合、デフォルト値は 23 です。

maxrate

int

いいえ

動的ビットレートモードの最大ビットレート。このパラメーターを使用する場合は、bufsize パラメーターも指定する必要があります。

説明

このパラメーターは crf パラメーターと併用する場合にのみ有効です。

bufsize

int

いいえ

動的ビットレートモードのデコーダーバッファーサイズ。単位:bit/s。

説明

このパラメーターは crf パラメーターと併用する場合にのみ有効です。

an

int

いいえ

オーディオストリームを無効にするかどうかを指定します。有効値:

  • 0 (デフォルト):無効にしない。

  • 1:無効にする。

acodec

string

いいえ

音声エンコード方式。値は `aac` です。

ar

int

いいえ

音声サンプリングレート。単位:ヘルツ (Hz)。デフォルト:ソースオーディオと同じ。有効値:

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 88200

  • 96000

ac

int

いいえ

サウンドチャンネルの数。デフォルト:ソースオーディオと同じ。有効値:[1,8]。

aq

int

いいえ

音声品質。このパラメーターは ab パラメーターと相互排他です。有効値:0 から 100。値が大きいほど高品質になります。

ab

int

いいえ

音声ビットレート。このパラメーターは aq パラメーターと相互排他です。単位:bit/s。有効値:1000 から 10000000。

abopt

int

いいえ

音声ビットレートのオプション。有効値:

  • 0:常にターゲットの音声ビットレートを使用します。

  • 1 (デフォルト):ソースビデオのビットレートが ab の値より低い場合、ソースビデオのビットレートを使用します。

  • 2:ソースビデオのビットレートが ab の値より低い場合、エラーを返します。

説明

sys/saveas パラメーターは、ライブトランスコーディングプレイリストを生成する際にも使用されます。詳細については、「名前を付けて保存」をご参照ください。

操作手順

ライブトランスコーディングには、次の 2 つのステップが含まれます。

説明

プレイリストを生成した後、IMM ドキュメントのライブトランスコーディングのトピックで再生手順を確認することもできます。

1. ビデオのライブトランスコーディングプレイリストの生成

トランスコーディング情報

  • トランスコーディング前

    • ビデオフォーマット:AVI

    • ビデオ名:oss://video-demo/example.avi

    • 開始位置:ビデオの先頭から 15 秒

    • トランスコーディング期間:1800 秒

  • 処理方法:プレイリストの生成

  • トランスコーディング後

    • セグメントサイズ:10 秒

    • 事前トランスコーディング期間:30 秒

    • ビデオ情報

      • ビデオストリームフォーマット:H.264

      • ビデオ解像度:1280 × 720

      • ビデオフレームレート:25 fps

      • ビデオビットレート:2 Mbps

    • オーディオ情報

      • オーディオストリームフォーマット:AAC

      • 音声ビットレート:128 Kbps

    • ファイルストレージパスのプレフィックス:oss://outbucket/outobjprefix/media

リクエスト例

POST /example.avi?x-oss-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

x-oss-process=hls/m3u8,ss_15000,t_1800000,vcodec_h264,fps_25,fpsopt_1,s_1280x720,sopt_1,scaletype_fit,arotate_1,vb_2000000,vbopt_1,acodec_aac,ar_44100,ac_2,ab_128000,abopt_1,st_10000,initd_30000|sys/saveas,o_b3V0b2JqcHJlZml4L21lZGlh,b_b3V0YnVja2V0

レスポンス例

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Wed, 25 May 2022 12:43:57 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 161
Connection: keep-alive
x-oss-request-id: 628E2481184E20F26C000009
x-oss-transfer-acc-type: acc-none
x-oss-data-location: oss-cn-hangzhou-a
ETag: "D0F162350DA037F4DC2A142B2E116BD0"
Last-Modified: Wed, 25 May 2022 12:20:34 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 2040549661341440100
x-oss-storage-class: Standard
x-oss-server-time: 12437

{"Duration":1800,"RequestId":"********-37E6-5996-8425-********","VideoPlaylist":[{"FrameRate":"25","Resolution":"1280x720","Token":"f93c43079**********1269608ebc86e","URI":"oss://outbucket/outobjprefix/media.m3u8"}]}

2. hls/sign を使用したライブトランスコーディングストリームへの署名

Object Storage Service (OSS) は、オーディオおよびビデオデータにアクセスするための動的署名メカニズムを提供します。m3u8 ファイルに初めてアクセスするときは、URL に x-oss-process=hls/sign,live_1 を追加します。すると、OSS は、m3u8 ファイルに使用されたのと同じ署名メソッドを使用して、返されたプレイリスト内のすべての TS アドレスに自動的に署名します。

  • hls/sign 署名メソッド:

# -*- coding: utf-8 -*-
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# バケットが配置されているリージョンのエンドポイントを指定します。実際の値に置き換えてください。
endpoint = 'yourEndpoint'

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 宛先バケットの名前。
bucket_name = 'your-oss-bucket-name'
# key を生成されたプレイリストの名前に設定します (例:output/media.m3u8)。
key = 'output/media.m3u8'

# バケットインスタンスを指定します。すべてのファイル関連のメソッドは、バケットインスタンスを介して呼び出す必要があります。
# oss2.AuthV2 署名メソッドを使用する必要があります。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', bucket_name)

# x-oss-process の処理メソッドは hls/sign,live_1 です。
params = {}
params.update({oss2.Bucket.PROCESS: 'hls/sign,live_1'})

# 署名付き URL。
# 署名付き URL が生成される際、OSS はデフォルトでオブジェクトの完全なパスに含まれるスラッシュ (/) をエスケープします。これにより、署名付き URL が使用できなくなります。
# slash_safe を True に設定します。OSS はオブジェクトの完全なパスに含まれるスラッシュ (/) をエスケープしません。生成された署名付き URL は直接使用できます。
url = bucket.sign_url('GET', key, 7200, params=params, slash_safe=True)

# 生成された URL は HLS プレーヤーで直接再生できます。
print(url)
  • 元の m3u8 コンテンツ

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-0.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-1.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-2.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-3.ts
#EXT-X-ENDLIST
  • hls/sign で署名した後に返されるコンテンツ:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-0.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-1.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-2.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-3.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXT-X-ENDLIST

SDK の使用

ライブトランスコーディングプレイリストの生成は同期プロセスです。SDK の使用方法については、「SDK の使用」をご参照ください。

よくある質問

どのような出力ファイルが含まれますか?

指定された出力パスのプレフィックスに基づいて、m3u8 ファイルと TS ファイルが生成されます。m3u8 ファイルはすぐに生成されます。事前トランスコーディング期間を指定した場合、その期間の TS ファイルが非同期で生成されます。たとえば、事前トランスコーディング期間が 30 秒でセグメントの長さが 10 秒の場合、3 つの TS ファイルが生成されます。事前トランスコーディングされていないビデオの部分は、再生中にオンデマンドでトランスコーディングされます。たとえば、ビデオが一度も再生されない場合、追加の TS ファイルは生成されません。ビデオを 15 分の時点から再生を開始すると、その時点からトランスコーディングが開始されます。生成されたファイルのディレクトリツリーは次のようになります。

.
├── outobjprefix.m3u8
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-0.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-1.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-2.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-3.ts

生成された TS ファイルを手動で削除した後も、ビデオは正常に再生できますか?

はい、できます。ソースビデオファイルと m3u8 プレイリストが削除されない限り、ビデオは再生可能です。m3u8 プレイリストが再度リクエストされると、TS ファイルは再生成されます。この方法により、ビデオ再生に影響を与えることなくストレージコストを削減できます。

ライブトランスコーディングで生成されていない m3u8 ファイルをライブトランスコーディングに使用できますか?

いいえ、できません。ライブトランスコーディング機能で生成された m3u8 ファイルのみがライブトランスコーディングに使用できます。