概覽
SMIL文件是特殊格式的XML文檔,用於描述多媒體演示。Highwinds使用SMIL的子集來啟用自適應流。
SMIL和Zencoder
以下是Highwinds SMIL文件的示例,該文件描述了已編碼為多種比特率的視頻。給定的所有路徑(“ src”)都是相對於將服務SMIL的位置,並且所有比特率(“ system-bitrate”)均以每秒比特數(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對象的數組,每個對像都有鍵“ bandwidth”和“ path”
- “ path”應該是mp4文件的相對路徑,因為它將由您的服務器提供服務(請注意,它不包括SMIL文件中出現的前導“ mp4:”)
- “帶寬”應該是文件的比特率,以kbps為單位,在創建SMIL文件時,我們將轉換為bps
- “寬度”是可選的,應指定文件的水平分辨率
- “高度”是可選的,應指定文件的垂直分辨率
播放列表引用的視頻可以與生成播放列表的作業分開創建,也可以作為同一作業的其他輸出創建。
整個圖片
播放清單可指定並參照不同位元率的多個輸出。
{
"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"
}
]
}
]
}
注意事項
- 播放清單產生目前不會使用來自作業中其他輸出的資訊,但只是一種輕鬆產生格式正確的適應位元速率播放清單,並將其與其他檔案一起上傳。
- 解碼器 _bitrate_cap 設定為檔案的目標位元速率的 1.5 倍。解碼器 _buffer_size 設定為檔案的目標位元速率的 3.5 倍至 5 倍。這些設定有助於在整個檔案中保持一致的位元速率,因此分段區段的大小和位元速率不會太大變化。