概述:
點播轉碼目前涉及用戶上傳自動觸發轉碼、經過SubmitTranscodeJobs接口觸發轉碼等方式,會出現用戶轉碼失敗的狀況,這當中有用戶源片的問題、也有用戶設置轉碼參數的緣由以及相關資源性數據受權限制問題致使,本文主要提供點播轉碼常見的問題排查及處理方式。json
HLS標準加密問題排查
SubmitTranscodeJobs接口錯誤提示:
- KeyNotFound:出現這種錯誤提示通常都是使用的加密Service Key 和視頻不在同一個區域,例如:華東2的視頻,必須使用華東2的KMS生成祕鑰。
- NoSuchResource:出現這種錯誤一般表明用戶的某種的資源缺失,能夠結合message進行排查,以下所示:
一、"can not find cross service token" :表示用戶沒有經過RAM受權點播操做用戶的KMS致使,須要用戶先受權。
二、"can not find customer encrypt master key":表示在用戶對應區域的KMS中沒有拿到響應的加密Service key,能夠在神農鼎生成對應區域的Service Key。
三、"can not find customer encrypt info":表示用戶傳遞的密文祕鑰不是使用KMS生成或者祕鑰生成和視頻存儲不在同一個區域,須要用戶在視頻相應區域生成加密祕鑰。
四、"can not find customer plaintext":表示用戶生成的祕鑰解密不到明文祕鑰,須要用戶使用GenerateDataKey生成加密祕鑰。
五、"The specified resource Template does not exist":表示視頻對應區域的轉碼模板數據不存在,這種問題一般是模板添加或者更新接口異常致使,能夠聯繫點播後臺進行數據訂正。編碼
其餘常見問題:
- 文件未加密:生成的文件未加密,通常都是因爲轉碼模板在設置的時候沒有選擇HLS加密選項(標準加密、私有加密必需要勾選)
- 加密轉碼失敗:視頻標準加密失敗,通常都是因爲用戶在調用GenerateDataKey生成的祕鑰是非AES_128位的,或者祕鑰使用自定義字符串生成
- 解密失敗:一般HLS標準加密成功,說明祕鑰是沒問題的,那麼解密失敗一般是因爲解密接口直接將名稱祕鑰返回,實際應該是將名稱祕鑰進行base64decode解碼以後返回
- MtsHlsUriToken參數重寫失效:可能存在如下兩點問題
一、對應的域名沒有開通CDN的MtsHlsUriToken參數重寫功能,須要到CDN神農鼎設置。
二、域名開啓了鑑權,MtsHlsUriToken參數重寫和鑑權功能是互斥的。加密
轉碼失敗問題排查:
- 轉封裝(原畫)失敗:一般都是因爲格式支持問題致使,例如:wmv、rmvb等格式不支持裝封裝成mp4;mpeg4不能轉封裝成m3u8
- 條件轉碼致使轉碼失敗:查看用戶是否開啓對應的條件轉碼,若是開啓則表模板設置的分辨率、碼率是否大於源片的分辨率或者碼率,若是大於則模板設置是按照源片轉碼仍是不轉碼,不轉碼則會以失敗的結果返回,這種是正常的轉碼處理步驟,可建議用戶修改條件轉碼閾值或者移除條件轉碼限制。
- 視頻轉碼失敗緣由及排查步驟:
一、查看源片文件大小是否爲0,這種視頻一般是沒有上傳成功可是OSS錯誤的通知底層觸發轉碼致使。
二、點播神農鼎查看源片地址看是否能夠播放,不可播放一般轉碼都會失敗,說明源片存在問題
三、使用ffprobe -show_streams -print_format json -i "文件地址"查看源片是否存在多個音頻流,目前轉碼還不能處理多音軌源片
四、使用ffprobe -show_streams -print_format json -i "文件地址" 或者ffprobe -show_frames -print_format -i "文件地址" 查看文件的音視頻流、幀信息,若是存在紅色異常提示,基本上能夠肯定源片封裝參數存在問題,例如:源片的NAL數據問題spa
源片流數據有問題code
源片的音視頻Codec封裝異常:Codec 爲data或者binary類型orm
轉碼成功但文件異常:
- 轉碼視頻變形:緣由是用戶設置轉碼模板同時設置了寬和高,這樣會致使源片的畫面比例若是和設置的寬高比例不一致,就發生了形變,解決辦法是隻設置寬或者高,保持另外一邊按照源片的畫面比例等比輸出。
- 視頻轉碼後時間變長:這種視頻通常都是因爲源片的pkt_pts_time顯示時間過大致使,能夠經過ffprobe -show_frames -print_format json -i "源文件地址"查看pkt_pts_time是否異常,通常都是大於源片的真實時長,正常的pkt_pts_time是均勻遞增,最大爲視頻總時長。
- 視頻轉封裝成m3u8的ts分片大小差異大:通常都是源片的關鍵幀分佈不均勻致使的,能夠經過查看ffprobe -show_frames -print_format json -i "源文件地址"命令查看幀信息,看key_frame=1的幀信息中pakt_pts_time是否均勻遞增,若是非均勻通常會致使轉封裝ts切片不均勻。
- 直播轉點播有音頻無畫面:通常都是用戶側推流的前面幾個ts分片全是音頻無視頻畫面致使,而底層轉碼只會抓取前面幾個ts分片的編碼信息,若是前面幾個ts分片無視頻流,則轉碼器只會讀取音頻流,從而致使整個視頻輸出無畫面。
其餘
- 轉碼任務卡住,一直處於轉碼中:一般發生在直播轉點播錄製的視頻,這種視頻限於推流端配置的問題,致使pts_time非均勻增長,而是跳變,這種狀況會致使底層轉碼ffmpeg卡住,無任何轉碼結果返回,這種視頻一般建議用戶排查推流端設置問題。
原文連接視頻