轉(zhuǎn)碼常見(jiàn)問(wèn)題
本文為您介紹視頻點(diǎn)播轉(zhuǎn)碼相關(guān)的常見(jiàn)問(wèn)題。
轉(zhuǎn)碼失敗時(shí),如何自主排查?
確認(rèn)轉(zhuǎn)碼源文件能否在本地正常播放(非常重要),經(jīng)統(tǒng)計(jì)大部分轉(zhuǎn)碼失敗是因?yàn)樵次募旧碛袉?wèn)題(如:視頻流缺失、metadata存在問(wèn)題、幀錯(cuò)誤、視頻頭部信息缺失等),會(huì)觸發(fā)轉(zhuǎn)碼效率監(jiān)控,導(dǎo)致轉(zhuǎn)碼退出。
使用
ffprobe -show_streams -show_format -of json -i [filePath]
命令檢查文件meta信息,是否有moov缺失、流異常等問(wèn)題。使用
ffprobe -show_packets -i [filePath]
命令查看數(shù)據(jù)碼流是否有問(wèn)題,碼流時(shí)長(zhǎng)與metadata時(shí)長(zhǎng)是否一致。說(shuō)明metadata中的時(shí)長(zhǎng)與實(shí)際持續(xù)的碼流時(shí)長(zhǎng)不一致可能導(dǎo)致轉(zhuǎn)碼失敗,對(duì)于metadata有問(wèn)題的文件,建議您先本地使用ffmpeg工具處理,再進(jìn)行上傳轉(zhuǎn)碼。
在錯(cuò)誤碼中找到對(duì)應(yīng)的錯(cuò)誤碼,分析具體失敗原因。
如果您添加的文本水印中包含特殊字符,可能會(huì)導(dǎo)致水印輸出截?cái)嗷蚴。枰谳斎肭皩?duì)特殊字符進(jìn)行轉(zhuǎn)義。
加密轉(zhuǎn)碼失敗,使用HLS標(biāo)準(zhǔn)加密轉(zhuǎn)碼時(shí),常見(jiàn)錯(cuò)誤原因請(qǐng)參見(jiàn)視頻加密常見(jiàn)問(wèn)題。
轉(zhuǎn)碼計(jì)費(fèi)中的清晰度規(guī)格為什么和轉(zhuǎn)碼模板中配置的清晰度不一致?
配置轉(zhuǎn)碼模板時(shí),選定清晰度后可以手動(dòng)修改其分辨率,而在轉(zhuǎn)碼計(jì)費(fèi)時(shí),按照實(shí)際轉(zhuǎn)碼輸出視頻分辨率的長(zhǎng)邊和短邊所屬輸出規(guī)格劃定的范圍來(lái)判定計(jì)費(fèi)規(guī)格,因此存在轉(zhuǎn)碼模板中所設(shè)置的分辨率規(guī)格與實(shí)際計(jì)費(fèi)規(guī)格不一致的情況。計(jì)費(fèi)規(guī)格判定細(xì)則請(qǐng)參見(jiàn)媒資轉(zhuǎn)碼計(jì)費(fèi)。
例如:在點(diǎn)播控制臺(tái)設(shè)置轉(zhuǎn)碼模板清晰度為標(biāo)清LD時(shí),系統(tǒng)默認(rèn)分辨率為960×540。
如果您以此系統(tǒng)默認(rèn)分辨率進(jìn)行轉(zhuǎn)碼,則實(shí)際計(jì)費(fèi)時(shí),由于此分辨率比計(jì)費(fèi)輸出規(guī)格中標(biāo)清LD的640×480上限高,因此按照高清SD(1280x720)的規(guī)格進(jìn)行計(jì)費(fèi)。
如果您手動(dòng)調(diào)整了轉(zhuǎn)碼模板中標(biāo)清LD的系統(tǒng)默認(rèn)分辨率,將其調(diào)整為1920x1080,并以此進(jìn)行轉(zhuǎn)碼,則實(shí)際將按照HD(1920x1080)的規(guī)格進(jìn)行計(jì)費(fèi)。
使用系統(tǒng)內(nèi)置的不轉(zhuǎn)碼模板組轉(zhuǎn)碼后的視頻,為什么無(wú)法播放?
請(qǐng)排查是否由下述原因造成:
原因一:上傳的源視頻本身存在問(wèn)題,不能正常播放。
原因二:目前僅MP4、FLV、M3U8、MP3、WEBM格式的視頻支持不轉(zhuǎn)碼直接播放。
上傳視頻到視頻點(diǎn)播中時(shí),如果使用視頻點(diǎn)播系統(tǒng)內(nèi)置的不轉(zhuǎn)碼模板組轉(zhuǎn)碼上傳,若源視頻是MP4、FLV、M3U8、MP3、WEBM格式,則視頻上傳完成后會(huì)生成原畫視頻流;若源視頻為其他格式時(shí),則視頻上傳完成后會(huì)生成原始文件視頻流。
原始文件視頻流無(wú)法通過(guò)視頻點(diǎn)播控制臺(tái)進(jìn)行播放預(yù)覽,也無(wú)法通過(guò)GetPlayInfo - 獲取音視頻播放地址接口獲取到播放地址,只能通過(guò)GetMezzanineInfo - 獲取源文件信息接口獲取源文件地址用于播放;原畫視頻流可以在視頻點(diǎn)播控制臺(tái)進(jìn)行播放預(yù)覽,也可以通過(guò)GetPlayInfo - 獲取音視頻播放地址接口獲取到播放地址用于播放。
源視頻有多個(gè)音頻流,轉(zhuǎn)碼完成后只剩下一個(gè)音頻流怎么解決?
目前僅支持保留一路音頻流,即在Output參數(shù)中添加音頻流的配置為audioMap=0
,如果您有特殊場(chǎng)景需求,請(qǐng)提交工單。
轉(zhuǎn)碼之后,視頻的寬高為什么和設(shè)置的不一樣?
視頻點(diǎn)播的轉(zhuǎn)碼模板中,可以設(shè)置橫豎屏自適應(yīng)(LongShortMode),該功能默認(rèn)開啟,開啟后視頻的width對(duì)應(yīng)長(zhǎng)邊,height對(duì)應(yīng)短邊,只需設(shè)置寬或高其中的一個(gè),另一個(gè)留空(不設(shè)置)即可。如果想要輸出指定的分辨率,則需要關(guān)閉橫豎屏自適應(yīng)(輸出可能會(huì)拉伸變形)。
轉(zhuǎn)碼之后,為什么視頻分辨率發(fā)生置換(豎屏變橫屏或橫屏變豎屏)?
通常是由于視頻源包含了rotation=-90
而導(dǎo)致轉(zhuǎn)碼后視頻分辨率發(fā)生置換。您可以使用FFmpeg工具,檢查源文件是否包含rotation角度旋轉(zhuǎn)信息。查詢?cè)次募畔⒌姆椒ㄈ缦拢?/p>
ffprobe -show_streams -show_format -of json -i [filepath]
mp4轉(zhuǎn)碼后的m3u8文件播放黑屏,應(yīng)該如何排查?
請(qǐng)先檢查您的源文件視頻流是否正常。如果源文件第一個(gè)ts沒(méi)有視頻流數(shù)據(jù),會(huì)導(dǎo)致播放器認(rèn)為沒(méi)有畫面。如果出現(xiàn)這種情況,可以先將源文件先進(jìn)行一次mp4轉(zhuǎn)碼,再進(jìn)行m3u8轉(zhuǎn)碼,即可正常播放。
源文件為HDR,轉(zhuǎn)SDR后過(guò)曝或亮度過(guò)暗?
亮度過(guò)曝是因?yàn)槟0逯械囊延信渲梦茨苓m配HDR文件導(dǎo)致,請(qǐng)提交工單適配。
視頻點(diǎn)播轉(zhuǎn)碼能判斷moov box位置嗎?沒(méi)有moov的文件怎么辦?
轉(zhuǎn)碼后默認(rèn)會(huì)將moov box放置在mp4文件頭部,不支持自定義配置。沒(méi)有moov的文件暫時(shí)無(wú)法處理,會(huì)導(dǎo)致轉(zhuǎn)碼失敗。
視頻轉(zhuǎn)為音頻后,為什么時(shí)長(zhǎng)與源視頻不一致?
當(dāng)前視頻點(diǎn)播的轉(zhuǎn)碼邏輯為了保證時(shí)長(zhǎng)的一致性,會(huì)根據(jù)輸入文件中音頻流時(shí)長(zhǎng)最短的來(lái)計(jì)時(shí)轉(zhuǎn)碼。如果源文件中部分切片時(shí)間戳不連續(xù),會(huì)導(dǎo)致無(wú)法獲取視頻流的媒體信息,影響對(duì)于轉(zhuǎn)碼時(shí)長(zhǎng)的估計(jì),產(chǎn)生時(shí)長(zhǎng)偏差的問(wèn)題。
轉(zhuǎn)碼時(shí)轉(zhuǎn)碼模板設(shè)置的音/視頻碼率未生效?
請(qǐng)檢查轉(zhuǎn)碼模板中是否配置了碼率檢查機(jī)制(即點(diǎn)播控制臺(tái)普通轉(zhuǎn)碼模板中條件轉(zhuǎn)碼參數(shù)下的檢查視頻碼率或檢查音頻碼率),當(dāng)配置了碼率檢查機(jī)制時(shí),如果轉(zhuǎn)碼前后的音/視頻編碼器一致且轉(zhuǎn)碼后的音/視頻碼率大于轉(zhuǎn)碼前的音/視頻碼率,則轉(zhuǎn)碼模板中設(shè)置的音/視頻碼率不會(huì)生效,音/視頻碼率將會(huì)按您配置的碼率檢查機(jī)制按原片轉(zhuǎn)碼或不轉(zhuǎn)碼被重置。
一個(gè)轉(zhuǎn)碼作業(yè)需要多長(zhǎng)時(shí)間?
視頻點(diǎn)播中,一個(gè)轉(zhuǎn)碼作業(yè)的耗時(shí)主要與轉(zhuǎn)碼視頻的時(shí)長(zhǎng)正相關(guān),同時(shí)受輸出分辨率、編碼格式、轉(zhuǎn)碼算法復(fù)雜度、轉(zhuǎn)碼任務(wù)多少等多種因素綜合影響。具體影響說(shuō)明如下:
視頻時(shí)長(zhǎng):轉(zhuǎn)碼的視頻時(shí)長(zhǎng)越長(zhǎng),則轉(zhuǎn)碼越慢。
輸出分辨率:轉(zhuǎn)碼輸出的分辨率越高,則轉(zhuǎn)碼越慢。
轉(zhuǎn)碼算法:轉(zhuǎn)碼算法復(fù)雜度越高,則轉(zhuǎn)碼越慢。轉(zhuǎn)碼算法的復(fù)雜度排序?yàn)椋赫瓗Ц咔?.0>窄帶高清1.0>普通轉(zhuǎn)碼。
轉(zhuǎn)碼任務(wù):轉(zhuǎn)碼任務(wù)越多,則轉(zhuǎn)碼越慢,因?yàn)樘峤坏霓D(zhuǎn)碼任務(wù)過(guò)多時(shí),會(huì)產(chǎn)生額外的排隊(duì)等待處理的時(shí)間。
編碼格式(轉(zhuǎn)碼耗時(shí):H.265>H.264)等其他因素。
正常情況下,一個(gè)輸出規(guī)格為H.264 720P的轉(zhuǎn)碼作業(yè),經(jīng)過(guò)普通轉(zhuǎn)碼的轉(zhuǎn)碼速度為視頻時(shí)長(zhǎng)的5~6倍速,經(jīng)過(guò)窄帶高清1.0轉(zhuǎn)碼的轉(zhuǎn)碼速度為視頻時(shí)長(zhǎng)的2~3倍速。例如:一個(gè)6分鐘的視頻經(jīng)轉(zhuǎn)碼輸出為H.264 720P的視頻,從開始轉(zhuǎn)碼到轉(zhuǎn)碼完成,如果是普通轉(zhuǎn)碼,則耗時(shí)為1分鐘左右,如果是窄帶高清1.0轉(zhuǎn)碼,則耗時(shí)為2分鐘左右。
能否實(shí)時(shí)查詢轉(zhuǎn)碼進(jìn)度?
目前不提供實(shí)時(shí)查詢轉(zhuǎn)碼進(jìn)度的接口,您可以設(shè)置回調(diào),通過(guò)事件通知來(lái)判斷轉(zhuǎn)碼處理的結(jié)果,詳情請(qǐng)參見(jiàn)事件通知。
為什么我的轉(zhuǎn)碼作業(yè)一直失敗?
作業(yè)失敗有多種原因,請(qǐng)留意返回錯(cuò)誤信息。如果您收到預(yù)處理失敗的錯(cuò)誤,說(shuō)明我們無(wú)法解碼您的源文件,請(qǐng)提交工單協(xié)助診斷并提供以下信息來(lái)協(xié)助診斷:阿里云賬戶ID、視頻ID。
是否支持實(shí)時(shí)轉(zhuǎn)碼?
視頻點(diǎn)播目前是基于文件的轉(zhuǎn)碼服務(wù),暫不支持實(shí)時(shí)轉(zhuǎn)碼。
已經(jīng)上傳到視頻點(diǎn)播中的視頻,是否可以批量設(shè)置轉(zhuǎn)碼?
針對(duì)已經(jīng)上傳到視頻點(diǎn)播中的視頻,暫不支持批量設(shè)置轉(zhuǎn)碼。
已經(jīng)轉(zhuǎn)碼設(shè)置了水印,為什么不生效或看不到水印?
請(qǐng)檢查轉(zhuǎn)碼所使用的水印模板的尺寸(寬×高)、偏移等參數(shù)的設(shè)置是否能確保水印正常顯示在視頻畫面范圍(分辨率寬×高)內(nèi),若超出視頻畫面范圍,會(huì)導(dǎo)致即使水印轉(zhuǎn)碼成功,也看不到水印。
為什么收不到轉(zhuǎn)碼失敗的回調(diào)?
配置轉(zhuǎn)碼事件通知時(shí),如果您僅配置了單個(gè)清晰度轉(zhuǎn)碼完成(StreamTranscodeComplete),未配置全部清晰度轉(zhuǎn)碼完成(TranscodeComplete)的事件,當(dāng)您上傳視頻時(shí)發(fā)起轉(zhuǎn)碼,如果您上傳的源視頻有損壞導(dǎo)致所有轉(zhuǎn)碼流都失敗的場(chǎng)景下,則點(diǎn)播會(huì)返回TranscodeComplete失敗的回調(diào)給您,而由于您并未配置該回調(diào),因此導(dǎo)致您轉(zhuǎn)碼失敗,卻收不到轉(zhuǎn)碼失敗的回調(diào)。