分段文件
我們將從製作幾個分段文件開始,每個分段文件都針對給定的帶寬。Zencoder使用這些輸出創建清單文件和分段的視頻文件,這允許播放器在播放視頻時分別下載每個文件。
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 900,
"decoder_buffer_size": 2400,
"filename": "file-640k.m3u8",
"max_frame_rate": 30,
"public": 1,
"type": "segmented",
"video_bitrate": 600,
"width": 400,
"format": "ts"
}
的m3u8
以上輸出創建的文件是分段文件。請求此輸出以及下面描述的其他輸出,將創建針對不同帶寬的多個分段文件。
此輸出的類型為“分段”,格式為“ ts”,默認為視頻編解碼器“ h264”。每個分段的輸出將創建一個M3U8格式的清單文件作為其主要輸出,這些分段的名稱將類似於輸出的文件名。分割的文件將與清單一起上傳,並在擴展名之前以“ -00001”後綴命名。這些輸出可直接用於標準流,只需從客戶端引用.m3u8文件,並確保可以從清單清單的相同位置訪問段文件。播放列表也可以引用多個.m3u8文件,以支持自適應流。
播放清單
您可以自己創建自適應比特率播放列表,也可以讓Zencoder將其作為工作的一部分。要讓我們創建播放列表,只需將另一種輸出類型為“播放列表”的作業添加到您的工作中,並指定一個或多個帶有路徑(相對於播放列表文件的位置)和流源的流。相應輸出的標籤。也可以指定帶寬,分辨率和編解碼器,但默認情況下是從源推斷出的。流信息將被格式化為播放列表,並像其他任何輸出一樣上傳。
該播放列表文件引用了上面創建的分段輸出,指定了應播放每個輸出的帶寬。使用支持HLS的設備加載此文件將允許在可用帶寬變化時調整流。
用戶打開文件時將使用流中的第一個條目,並將其用作測試以確定哪個流最合適的一部分。其他條目的順序無關緊要。
HLS輸出(帶有視頻)具有max_hls_protocol_version現在,如果大於等於4,則將生成I幀播放列表,也稱為“關鍵幀清單”。默認情況下,文件名與主清單文件相同,但附加“ -iframe-index”。例如,對於文件名為“ master.m3u8”的清單,關鍵幀清單將被命名為“ master-iframe-index.m3u8”。可以使用以下方法覆蓋keyframe_manifest_filename。如果HLS播放列表輸出指定了具有關鍵幀清單的“源”流,則該關鍵幀清單將作為EXT-XI-FRAMES-ONLY流自動包含在播放列表中。
{
"base_url": "s3://my-bucket/",
"filename": "playlist.m3u8",
"public": 1,
"streams": [
{
"bandwidth": 440,
"path": "file-440k.m3u8"
},
{
"bandwidth": 640,
"path": "file-640k.m3u8"
},
{
"bandwidth": 240,
"path": "file-240k.m3u8"
},
{
"bandwidth": 150,
"path": "file-150k.m3u8"
},
{
"bandwidth": 64,
"path": "file-64k.m3u8"
}
],
"type": "playlist"
}
整個圖片
播放清單可指定並參照不同位元率的多個輸出。這些設定符合我們 iOS 編碼指南中提供的準則。
{
"input": "s3://zencodertesting/test.mov",
"output": [
{
"label": "hls-64",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"filename": "file-64k.m3u8",
"format": "aac",
"public": 1,
"type": "segmented"
},
{
"label": "hls-240",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 300,
"decoder_buffer_size": 800,
"filename": "file-240k.m3u8",
"max_frame_rate": 15,
"public": 1,
"type": "segmented",
"video_bitrate": 200,
"width": 400,
"format": "ts"
},
{
"label": "hls-440",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 600,
"decoder_buffer_size": 1600,
"filename": "file-440k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 400,
"width": 400,
"format": "ts"
},
{
"label": "hls-640",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 900,
"decoder_buffer_size": 2400,
"filename": "file-640k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 600,
"width": 480,
"format": "ts"
},
{
"label": "hls-1040",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 1500,
"decoder_buffer_size": 4000,
"filename": "file-1040k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 1000,
"width": 640,
"format": "ts"
},
{
"label": "hls-1540",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 2250,
"decoder_buffer_size": 6000,
"filename": "file-1540k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 1500,
"width": 960,
"format": "ts"
},
{
"label": "hls-2040",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 3000,
"decoder_buffer_size": 8000,
"filename": "file-2040k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 2000,
"width": 1024,
"format": "ts"
},
{
"base_url": "s3://my-bucket/",
"filename": "playlist.m3u8",
"public": 1,
"streams": [
{
"source": "hls-2040",
"path": "file-2040k.m3u8"
},
{
"source": "hls-1540",
"path": "file-1540k.m3u8"
},
{
"source": "hls-1040",
"path": "file-1040k.m3u8"
},
{
"source": "hls-640",
"path": "file-640k.m3u8"
},
{
"source": "hls-440",
"path": "file-440k.m3u8"
},
{
"source": "hls-240",
"path": "file-240k.m3u8"
},
{
"source": "hls-64",
"path": "file-64k.m3u8"
}
],
"type": "playlist"
}
]
}
注意事項
- 播放清單產生目前不會使用來自作業中其他輸出的資訊,但只是一種輕鬆產生格式正確的適應位元速率播放清單,並將其與其他檔案一起上傳。
- 雖然 iOS 設備將播放創建的自適應位元速率播放列表,但由於處理相對 URL 時發生錯誤,VLC 將不會。它將查找與播放列表文件相同的目錄中的段文件,而不是清單文件的目錄。
- 解碼器 _bitrate_cap 設定為檔案的目標位元速率的 1.5 倍。解碼器 _buffer_size 設定為檔案的目標位元速率的 3.5 倍至 5 倍。這些設定有助於在整個檔案中保持一致的位元速率,因此分段區段的大小和位元速率不會太大變化。
- 如果分段輸出被上傳到臨時存儲,它將被上傳為 ZIP 歸檔。