開啟聽視頻功能後,CDN節點會將視頻檔案中的音頻分離,並返回給用戶端,實現聽視頻的同時降低頻寬的使用,有效節省流量。通過本文您可以瞭解開啟音視頻分離的操作方法。
背景資訊
當用戶端請求訪問視頻檔案時,向伺服器端發送URL請求,例如:http://www.aliyun.com/test.flv?ali_audio_only=1,CDN伺服器端僅向用戶端發送純音頻資料。用戶端必須支援Transfer-Encoding:chunked傳輸方式。
聽視頻功能不支援Range請求,但是播放視頻時許多用戶端都會發起Range請求(包括但不限於Safari、iOS裝置上的瀏覽器),建議您使用自研的用戶端對接該功能。
聽視頻過程中如果需要拖動進度條播放,需同時配置拖拽功能。進行拖拽時,會先讀取原音視頻檔案的meta資訊擷取播放時間長度,將播放時間長度作為播放進度來實現播放進度的拖拽具體操作。更多資訊,請參見配置拖拽播放。
目前聽視頻功能不支援 MP4 Box Header Size 等於 16 的情境(64 位元),僅支援 MP4 Box Header Size 等於 8 的情境。關於 Header Size 的詳細說明和查看方法,請參見下方 MP4 Box Header Size 說明。
操作步驟
登入CDN控制台。
在左側導覽列,單擊域名管理。
在域名管理頁面,找到目標網域名稱,單擊操作列的管理。
在指定網域名稱的左側導覽列,單擊视频相关。
在聽視頻地區,開啟聽視頻開關。
開啟聽視頻功能後,需要配合請求參數
ali_audio_only使用。支援的檔案格式如下表所示。檔案格式
meta資訊
ali_audio_only參數
舉例
MP4
來源站點視頻的meta資訊必須在檔案頭部,不支援meta資訊在尾部的視頻。
ali_audio_only參數表示該請求為音視頻分離請求,服務端只返回meta資訊和音頻資訊,視頻資訊會被過濾掉。如果不帶該參數或參數值非1,則該功能失效。請求
http://domain/video.mp4?ali_audio_only=1。FLV
無要求。
ali_audio_only參數表示該請求為音視頻分離請求,服務端只返回meta資訊和音頻資訊,視頻資訊會被過濾掉。如果不帶該參數或參數值非1,則該功能失效。請求
http://domain/video.flv?ali_audio_only=1。
MP4 Box Header Size 說明
如果 MP4 檔案在使用聽視頻功能時無法正常提取音頻,可能是檔案的 mdat Box 使用了擴充 Header(16 位元組),不符合當前聽視頻功能的要求。
此限制主要針對 mdat Box(儲存實際音視頻資料的容器)。moov 等其他 Box 通常預設使用 8 位元組 Header,不受此限制影響。
通過本節可以瞭解 Header Size 的概念,並檢查檔案是否相容。
什麼是 MP4 Box Header Size
MP4 檔案由多個 Box(容器單元)組成,例如 moov box、mdat box 等。每個 Box 包含一個 Header,用於描述該 Box 的大小和類型。Header 有以下兩種規格:
規格 | Header 大小 | 說明 |
標準 Header | 8 位元組(32 位) | 包含 size(4 位元組)和 box type(4 位元組)。size 欄位直接儲存 Box 的實際大小。適用於 Box 資料量可用 4 位元組表示的情境。 |
擴充 Header | 16 位元組(64 位元) | 包含 size(4 位元組,固定值為 1)、box type(4 位元組)和 largesize(8 位元組)。當 size 值為 1 時,表示啟用 largesize 機制,真實大小儲存在 largesize 欄位中。常見於 mdat Box 資料量較大的情境。 |
查看 MP4 檔案的 Box Header Size
可以使用以下工具查看 MP4 檔案的 Box Header Size。
方式一:使用 MP4Box.js 線上工具(推薦)
上傳 MP4 檔案。
在左側 Box View 的 Tree View 中,單擊 mdat (MediaDataBox)。
在右側 Box Property View 中查看
original_size欄位,判斷 Header Size:original_size顯示為 1:mdat Box Header Size 為 16 位元組,不支援聽視頻功能。original_size不顯示或不為 1:mdat Box Header Size 為 8 位元組,支援聽視頻功能。
以下為兩種情況的屬性對比:
屬性欄位 | Header Size = 8 位元組(支援) | Header Size = 16 位元組(不支援) |
size | 實際大小數值 | 實際大小數值 |
box_name | MediaDataBox | MediaDataBox |
start | 位移位元組數 | 位移位元組數 |
original_size | 不顯示 | 顯示為 1 |
方式二:使用 Bento4 命令列工具
運行以下命令:
./mp4dump 檔案名稱.mp4 | grep -E "\[mdat\]|\[moov\]"根據輸出結果判斷:
[mdat] size=8+xxxxxx:Header Size 為 8 位元組,支援聽視頻功能。[mdat] size=16+xxxxxx:Header Size 為 16 位元組,不支援聽視頻功能。