高風 SMIL 指南

Highwinds 是一個快速 CDN,提供廣泛的解決方案,包括視頻的自適應流。為了使用 Highwinds 自適應串流集成更容易,我們添加了一個方法來生成 SMIL 文件。

概覽

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 倍。這些設定有助於在整個檔案中保持一致的位元速率,因此分段區段的大小和位元速率不會太大變化。