本文為您介紹ApsaraVideo for VOD轉碼相關的常見問題。
轉碼失敗時,如何自主排查?
確認轉碼源檔案能否在本地正常播放(非常重要),經統計大部分轉碼失敗是因為源檔案本身有問題(如:視頻流缺失、metadata存在問題、幀錯誤、視頻頭部資訊缺失等),會觸發轉碼效率監控,導致轉碼退出。
使用
ffprobe -show_streams -show_format -of json -i [filePath]
命令檢查檔案meta資訊,是否有moov缺失、流異常等問題。使用
ffprobe -show_packets -i [filePath]
命令查看資料碼流是否有問題,碼流時間長度與metadata時間長度是否一致。說明metadata中的時間長度與實際持續的碼流時間長度不一致可能導致轉碼失敗,對於metadata有問題的檔案,建議您先本地使用ffmpeg工具處理,再進行上傳轉碼。
在錯誤碼中找到對應的錯誤碼,分析具體失敗原因。
如果您添加的文本浮水印中包含特殊字元,可能會導致浮水印輸出截斷或失敗,需要在輸入前對特殊字元進行轉義。
加密轉碼失敗,使用HLS標準加密轉碼時,常見錯誤原因請參見視頻加密常見問題。
使用系統內建的不轉碼模板組轉碼後的視頻,為什麼無法播放?
請排查是否由下述原因造成:
原因一:上傳的源視頻本身存在問題,不能正常播放。
原因二:目前僅MP4、FLV、M3U8、MP3、WEBM格式的視頻支援不轉碼直接播放。
上傳視頻到ApsaraVideo for VOD中時,如果使用ApsaraVideo for VOD系統內建的不轉碼模板組轉碼上傳,若源視頻是MP4、FLV、M3U8、MP3、WEBM格式,則視頻上傳完成後會產生原畫視頻流;若源視頻為其他格式時,則視頻上傳完成後會產生原始檔案視頻流。
原始檔案視頻流無法通過ApsaraVideo for VOD控制台進行播放預覽,也無法通過GetPlayInfo - 擷取音視頻播放地址介面擷取到播放地址,只能通過GetMezzanineInfo - 擷取源檔案資訊介面擷取源檔案地址用於播放;原畫視頻流可以在ApsaraVideo for VOD控制台進行播放預覽,也可以通過GetPlayInfo - 擷取音視頻播放地址介面擷取到播放地址用於播放。
源視頻有多個音頻流,轉碼完成後只剩下一個音頻流怎麼解決?
目前僅支援保留一路音頻流,即在Output參數中添加音頻流的配置為audioMap=0
,如果您有特殊情境需求,請提交工單。
轉碼之後,視頻的寬高為什麼和設定的不一樣?
ApsaraVideo for VOD的轉碼模板中,可以設定橫豎屏自適應(LongShortMode),該功能預設開啟,開啟後視頻的width對應長邊,height對應短邊,只需設定寬或高其中的一個,另一個留空(不設定)即可。如果想要輸出指定的解析度,則需要關閉橫豎屏自適應(輸出可能會展開變形)。
轉碼之後,為什麼視頻解析度發生置換(豎屏變橫屏或橫屏變豎屏)?
通常是由於視頻源包含了rotation=-90
而導致轉碼後視頻解析度發生置換。您可以使用FFmpeg工具,檢查源檔案是否包含rotation角度旋轉資訊。查詢源檔案資訊的方法如下:
ffprobe -show_streams -show_format -of json -i [filepath]
mp4轉碼後的m3u8檔案播放黑屏,應該如何排查?
請先檢查您的源檔案視頻流是否正常。如果源檔案第一個ts沒有視頻流資料,會導致播放器認為沒有畫面。如果出現這種情況,可以先將源檔案先進行一次mp4轉碼,再進行m3u8轉碼,即可正常播放。
源檔案為HDR,轉SDR後過曝或亮度過暗?
亮度過曝是因為模板中的已有配置未能適配HDR檔案導致,請提交工單適配。
ApsaraVideo for VOD轉碼能判斷moov box位置嗎?沒有moov的檔案怎麼辦?
轉碼後預設會將moov box放置在mp4檔案頭部,不支援自訂配置。沒有moov的檔案暫時無法處理,會導致轉碼失敗。
視頻轉為音頻後,為什麼時間長度與源視頻不一致?
當前ApsaraVideo for VOD的轉碼邏輯為了保證時間長度的一致性,會根據輸入檔案中音頻流時間長度最短的來計時轉碼。如果源檔案中部分切片時間戳記不連續,會導致無法擷取視頻流的媒體資訊,影響對於轉碼時間長度的估計,產生時間長度偏差的問題。
轉碼時轉碼模板設定的音/視頻碼率未生效?
請檢查轉碼模板中是否配置了碼率檢查機制(即點播控制台普通轉碼模板中條件轉碼參數下的檢查視頻碼率或檢查音頻碼率),當配置了碼率檢查機制時,如果轉碼前後的音/視頻編碼器一致且轉碼後的音/視頻碼率大於轉碼前的音/視頻碼率,則轉碼模板中設定的音/視頻碼率不會生效,音/視頻碼率將會按您配置的碼率檢查機制按原片轉碼或不轉碼被重設。
一個轉碼作業需要多長時間?
ApsaraVideo for VOD中,一個轉碼作業的耗時主要與轉碼視頻的時間長度正相關,同時受輸出解析度、編碼格式、轉碼演算法複雜度、轉碼任務多少等多種因素綜合影響。具體影響說明如下:
視頻時間長度:轉碼的視頻時間長度越長,則轉碼越慢。
輸出解析度:轉碼輸出的解析度越高,則轉碼越慢。
轉碼演算法:轉碼演算法複雜度越高,則轉碼越慢。轉碼演算法的複雜度排序為:窄帶高清2.0>窄帶高清1.0>普通轉碼。
轉碼任務:轉碼任務越多,則轉碼越慢,因為提交的轉碼任務過多時,會產生額外的排隊等待處理的時間。
編碼格式(轉碼耗時:H.265>H.264)等其他因素。
正常情況下,一個輸出規格為H.264 720P的轉碼作業,經過普通轉碼的轉碼速度為視頻時間長度的5~6倍速,經過窄帶高清1.0轉碼的轉碼速度為視頻時間長度的2~3倍速。例如:一個6分鐘的視頻經轉碼輸出為H.264 720P的視頻,從開始轉碼到轉碼完成,如果是普通轉碼,則耗時為1分鐘左右,如果是窄帶高清1.0轉碼,則耗時為2分鐘左右。
能否即時查詢轉碼進度?
目前不提供即時查詢轉碼進度的介面,您可以設定回調,通過事件通知來判斷轉碼處理的結果,詳情請參見事件通知。
為什麼我的轉碼作業一直失敗?
作業失敗有多種原因,請留意返回錯誤資訊。如果您收到預先處理失敗的錯誤,說明我們無法解碼您的源檔案,請提交工單協助診斷並提供以下資訊來協助診斷:阿里雲賬戶ID、視頻ID。
是否支援即時轉碼?
ApsaraVideo for VOD目前是基於檔案的轉碼服務,暫不支援即時轉碼。
已經上傳到ApsaraVideo for VOD中的視頻,是否可以大量設定轉碼?
針對已經上傳到ApsaraVideo for VOD中的視頻,暫不支援大量設定轉碼。
已經轉碼設定了浮水印,為什麼不生效或看不到浮水印?
請檢查轉碼所使用的浮水印模板的尺寸(寬×高)、位移等參數的設定是否能確保浮水印正常顯示在視頻畫面範圍(解析度寬×高)內,若超出視頻畫面範圍,會導致即使浮水印轉碼成功,也看不到浮水印。
為什麼收不到轉碼失敗的回調?
配置轉碼事件通知時,如果您僅配置了單個清晰度轉碼完成(StreamTranscodeComplete),未配置全部清晰度轉碼完成(TranscodeComplete)的事件,當您上傳視頻時發起轉碼,如果您上傳的源視頻有損壞導致所有轉碼流都失敗的情境下,則點播會返回TranscodeComplete失敗的回調給您,而由於您並未配置該回調,因此導致您轉碼失敗,卻收不到轉碼失敗的回調。