作者:張醫博
基礎分析
在使用媒體處理(MTS) 産品的工作流轉碼時,我們先補充基礎認知。
一句話概括,工作流就是一套模版在特定條件自動觸發對視訊進行處理的流程,那我們先要知道類型的視訊檔案支援工作流。
- 視訊:3gp, asf, avi, dat, dv, flv, f4v, gif, m2t, m3u8, m4v, mj2, mjpeg, mkv, mov, mp4, mpe, mpg, mpeg, mts, ogg, qt, rm, rmvb, swf, vob, wmv, webm。
- 音頻:aac, ac3, acm, amr, ape, caf, flac, m4a, mp3, ra, wav, wma, aiff。
- 另類:沒有字尾的檔案也會觸發工作流,觸發後再判斷是否在上述的視訊封裝格式内。
也就是說隻有上述幾個條件的音視訊才能觸發工作流,除此之外是不會觸發工作流的。工作流是和 OSS bucket 關聯的,常用在有新檔案上傳到 OSS 時觸發工作流的轉碼。
案例分析 NoneExistFileURL
背景:
該案例是 Z 某調用 QueryMediaListByURL 接口時,傳回的的 medialist 不存在,NoneExistFileURL 是 OSS 的存儲位址。

QueryMediaListByURL:
當上傳檔案到 OSS 觸發工作流轉碼時,如果轉碼完成,可以通過 QueryMediaListByURL 接口查詢轉碼完成後的媒體資訊。這個接口隻針對工作流觸發的轉碼任務才能查詢。
或者存量視訊可以讓使用者先調用 AddMedia 添加媒體資訊,然後在調用 QueryMediaListByURL
分析:
-該案例 Z 某沒有擷取到 MediaList 内容,無非就兩個原因:
- 用戶端不是觸發工作流進行的轉碼,而是 SubmitJobs 進行的轉碼。
- 配置的工作流沒有觸發。
結論:
經過确認是通過工作流轉碼,但是為什麼沒有觸發呢?檢視源檔案才發現因為字尾是 QuickTime 的,不在我們上述支援的字尾回報内,後續将字尾去掉就觸發流轉碼。
http://xxxx.oss-cn-hangzhou.aliyuncs.com/m3u8MultibitrateIn64/d13f51ca-de4b-11e8-a0b9-112a0a.quicktime案例分析 MPS 上雲
用戶端開發的 APP 将檔案上傳到 OSS ,調用轉碼服務後,将轉碼完成後傳回一個 CDN 位址讓用戶端 APP 可以播放。
整個架構中涉及到四種産品 OSS、 CDN、 MPS 、MNS ,如果完整的串聯起來提供高性能服務,由我給大家通過兩張圖介紹一下。
圖中完整的将所有産品串聯起來,關鍵緩解是視訊上傳、視訊轉碼兩個時間耗時。建議幾個注意點:
- app 要有完整的上傳記錄,包括 OSS requestID ,出現問題時便于讓阿裡雲排查。
- 客戶的業務伺服器提供回調的接口要記錄日志,并且保證網絡良好,能和 mns 正常通信。
- 上傳的視訊一定遇見做好字尾判斷和封裝格式判斷。
- 第五步拼裝用戶端播放的 CDN 位址,客戶可以通過 QueryMediaList 的接口,傳入 mediaID 擷取轉碼完成的輸出位址檔案後,将域名替換為 CDN 域名即可傳給 APP 播放。
- MPS(MTS) 會投遞什麼資訊給 mns 可以參考, https://help.aliyun.com/knowledge_detail/50627.html 有詳細的回調内容。
案例:工作流無法自動觸發進行轉碼
【場景】:
使用者設定流工作流自動觸發轉碼,但實際效果工作流沒有被觸發;
【分析】
- )檢查 工作流的輸入源(OSS bucket)是否有檔案上傳,如果沒有則不處罰,有的話繼續排查
- )檢查客戶工作流是否設定了智能分析模版,如果設定了智能分析,轉碼要采用預置智能模版進行轉碼,因為智能分析的前置條件是動态參數轉碼不能使用靜态的模版
- )與使用者确認是否設定了手動觸發轉碼 連結