概要
SMILファイルは、マルチメディアプレゼンテーションを記述するために使用される特別な形式の XML ドキュメントです。Highwinds は SMIL のサブセットを使用して、アダプティブストリーミングを有効にします。
SMILとZencoder
以下は、複数のビットレートにエンコードされたビデオを説明する Highwinds SMIL ファイルの例です。指定されたすべてのパス(「src」)は、SMILが提供される場所に関連し、すべてのビットレート(「システムビットレート」)はビット/秒(bps)です。
<smil>
<head>
</head>
<body>
<switch>
<video src="mp4:rel/path/file-440k.mp4"
system-bitrate="440000" width="720" height="406" />
<video src="mp4:rel/path/file-640k.mp4"
system-bitrate="640000" width="854" height="480" />
<video src="mp4:rel/path/file-240k.mp4"
system-bitrate="240000" width="640" height="360" />
<video src="mp4:rel/path/file-150k.mp4"
system-bitrate="150000" width="320" height="180" />
<video src="mp4:rel/path/file-64k.mp4"
system-bitrate="64000"/>
</switch>
</body>
</smil>
<video>
上記の例の各タグは、ユーザーに提供できる個別のストリームを表しています。リストされた最初のビデオは、使用可能な帯域幅が決定されるまで、ユーザーにストリーミングされます。この時点で、ユーザーは適切なストリームに切り替わります。
Zencoder で Highwinds SMIL プレイリストを作成するのは簡単です。
{
"api_key": "asdf1234",
"input": "s3://my-bucket/input/file.mov",
"outputs": [
{
"type": "playlist",
"format": "highwinds",
"url": "s3://my-bucket/output/file.smil",
"streams": [
{
"path": "rel/path/file-440k.mp4",
"bandwidth": "440",
"width": 720,
"height": 406
},
{
"path": "rel/path/file-640k.mp4",
"bandwidth": "640",
"width": 854,
"height": 480
},
{
"path": "rel/path/file-240k.mp4",
"bandwidth": "240",
"width": 640,
"height": 360
},
{
"path": "rel/path/file-150k.mp4",
"bandwidth": "150",
"width": 320,
"height": 180
},
{
"path": "rel/path/file-64k.mp4",
"bandwidth": "64"
}
]
}
]
}
これを行う場合は、プレイリスト以外の出力も含める必要があります。
- 「タイプ」は「プレイリスト」でなければなりません
- 「フォーマット」は「強風」でなければなりません
- 「url」(または「ファイル名」)は、「smil」の拡張子を持つ必要があります
- 「ストリーム」は、それぞれ「帯域幅」と「パス」キーを持つJSONオブジェクトの配列でなければなりません
- 「path」は、サーバーが提供する mp4 ファイルへの相対パスである必要があります (SMILファイルに表示される先頭の「mp4:」は含まれていないことに注意してください)
- 「bandwidth」は、SMILファイルを作成するときにbpsに変換するファイルのビットレート(kbps)にする必要があります
- 「width」はオプションで、ファイルの水平解像度を指定する必要があります
- 「height」はオプションであり、ファイルの垂直解像度を指定する必要があります
再生リストによって参照されるビデオは、再生リストを生成するジョブとは別に作成することも、同じジョブに追加の出力として作成することもできます。
全体像
プレイリストでは、異なるビットレートの複数の出力を指定し、参照することができます。
{
"api_key": "1234abcd",
"input": "http://example.com/file.mp4",
"output": [
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"filename": "file-64k.mp4",
"format": "aac",
"public": 1
},
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 165,
"decoder_buffer_size": 440,
"filename": "file-150k.mp4",
"max_frame_rate": 10,
"public": 1,
"video_bitrate": 110,
"width": 320
},
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 300,
"decoder_buffer_size": 800,
"filename": "file-240k.mp4",
"max_frame_rate": 15,
"public": 1,
"video_bitrate": 200,
"width": 640
},
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 600,
"decoder_buffer_size": 1600,
"filename": "file-440k.mp4",
"max_frame_rate": 30,
"public": 1,
"video_bitrate": 400,
"width": 720
},
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 900,
"decoder_buffer_size": 2400,
"filename": "file-640k.mp4",
"max_frame_rate": 30,
"public": 1,
"video_bitrate": 600,
"width": 854
},
{
"type": "playlist",
"format": "highwinds",
"url": "s3://my-bucket/file.smil",
"streams": [
{
"path": "file-440k.mp4",
"bandwidth": "440",
"width": 720,
"height": 406
},
{
"path": "file-640k.mp4",
"bandwidth": "640",
"width": 854,
"height": 480
},
{
"path": "file-240k.mp4",
"bandwidth": "240",
"width": 640,
"height": 360
},
{
"path": "file-150k.mp4",
"bandwidth": "150",
"width": 320,
"height": 180
},
{
"path": "file-64k.mp4",
"bandwidth": "64"
}
]
}
]
}
注意事項
- プレイリストの生成は現在、ジョブ内の他の出力からの情報を使用しませんが、正しくフォーマットされた適応ビットレートのプレイリストを簡単に生成し、他のファイルとともにアップロードできる方法です。
- decoder_bitrate_capは、ファイルのターゲットビットレートの 1.5 倍に設定されます。decoder_buffer_sizeは、ファイルのターゲットビットレートの 3.5 倍から 5 倍に設定されます。これらの設定は、ファイル全体で一貫したビットレートを維持し、セグメントセグメントのサイズとビットレートがあまり変化しないようにします。