解碼的所述視頻播放故障,則切換至采用所述第二解碼方式解碼所述視頻。
[0145]這里檢測所述視頻播出故障,可以采用現(xiàn)有技術(shù)中的任意一種方法。
[0146]通過將采用第一解碼方式解碼的視頻,切換到采用解碼能力更強(qiáng)第二視頻解碼來解碼能夠提高視頻被正確解碼的概率。
[0147]具體的實(shí)現(xiàn),可如圖4所示,所述方法還包括:
[0148]步驟S140:在所述采用所確定的解碼方式解碼所述視頻之后,播放所述視頻;
[0149]步驟S150:若采用所述第一解碼方式解碼的所述視頻播放故障,則采用所述第二解碼方式解碼所述視頻。
[0150]如上述所述,所述第一解碼方式可能為解碼能力相對于所述第二解碼方式的解碼能力稍微差一些的解碼方式,這時若所述第一解碼方式進(jìn)行所述視頻進(jìn)行解碼,導(dǎo)致所述視頻播放故障,為了保證所述視頻的正常播放,將采用所述第二解碼方式繼續(xù)解碼所述視頻,以保證所述視頻的正常播出。顯然本實(shí)施例所述的方法,通過盡可能采用所述第一解碼方式來解碼其能夠解碼的視頻,當(dāng)?shù)谝唤獯a方式出現(xiàn)解碼錯誤,進(jìn)而導(dǎo)致播出故障時,再采用解碼能力更強(qiáng)的第二解碼方式來進(jìn)行解碼,以提高客戶端內(nèi)的整體解碼成功率,且降低因解碼錯誤導(dǎo)致的視頻播出故障。此處的解碼錯誤可包括解碼對應(yīng)的代碼的解碼錯誤,還可包括解碼格式等各種導(dǎo)致視頻無法正常播放的解碼錯誤。
[0151]此外,若檢測出采用所述第二解碼方式解碼的所述視頻播放故障,則切換至采用所述第一解碼方式解碼所述視頻,或終止播放所述視頻且生成并顯示錯誤提示信息。
[0152]若視頻是采用第二解碼方式進(jìn)行的解碼且播出故障時,則再次切換到第一解碼方式來進(jìn)行解碼,若第一解碼方式能夠正確解碼,則能共實(shí)現(xiàn)視頻的正確播放。在播放時,可以直接終止視頻的播放,生成并顯示錯誤提示信息,以告知用戶當(dāng)前視頻無法正常解碼。
[0153]方法實(shí)施例七:
[0154]如圖1所示,本實(shí)施例提供一種視頻解碼方法,所述方法包括:
[0155]步驟SllO:判斷電子設(shè)備是否支持第一解碼方式;
[0156]步驟S120:若所述電子設(shè)備支持所述第一解碼方式,確定采用所述第一解碼方式解碼視頻;若所述電子設(shè)備不支持所述第一解碼方式,確定采第二解碼方式解碼所述視頻;
[0157]步驟S130:采用所確定的解碼方式解碼所述視頻。
[0158]所述方法還包括:若檢測出采用所述第一解碼方式解碼的所述視頻播放故障,則切換至采用所述第二解碼方式解碼所述視頻。
[0159]所述若檢測出采用所述第一解碼方式解碼的所述視頻播放故障,則切換至采用所述第二解碼方式解碼所述視頻可包括:
[0160]若視頻播放故障,則判斷所述視頻的解碼方式是否為所述第一解碼方式;
[0161]若所述視頻的解碼方式為所述第一解碼方式,則采用所述第二解碼方式解碼所述視頻。
[0162]本實(shí)施例所述的視頻解碼方法可以應(yīng)用于各種類型的電子設(shè)備中,在應(yīng)用本申請實(shí)施例所述的視頻解碼方法之前,所述客戶端可能不了解所述電子設(shè)備的解碼能力,根據(jù)具體的應(yīng)用場景選擇解碼方式時,最終可能選擇的是第一解碼方式或第二解碼方式。故所述視頻的解碼方式可能是所述第一解碼方式,也可能是第二解碼方式。若所述視頻播放故障,則首先確定所述視頻的解碼方式。
[0163]這種判斷可以通過運(yùn)行在電子設(shè)備內(nèi)的表示第一解碼方式或第二解碼方式的任意信息來進(jìn)行判斷,或直接依據(jù)所述第一解碼方式的解碼線程信息或第二解碼方式的解碼線程信息來判斷。
[0164]在確定為當(dāng)前出現(xiàn)故障的視頻的解碼方式為所述第一解碼方式時,才更換所述視頻的解碼方式為所述第二解碼方式。
[0165]本實(shí)施例所述的視頻解碼方法,不僅能夠保證對所述視頻的高解碼成功率,同時具有實(shí)現(xiàn)簡便的優(yōu)點(diǎn)。
[0166]方法實(shí)施例八:
[0167]如圖1所示,本實(shí)施例提供一種視頻解碼方法,所述方法包括:
[0168]步驟SllO:判斷電子設(shè)備是否支持第一解碼方式;
[0169]步驟S120:若所述電子設(shè)備支持所述第一解碼方式,確定采用所述第一解碼方式解碼視頻;若所述電子設(shè)備不支持所述第一解碼方式,確定采第二解碼方式解碼所述視頻;
[0170]步驟S130:采用所確定的解碼方式解碼所述視頻。
[0171]本實(shí)施例所述的方法還包括:若視頻播放故障,則判斷所述視頻的解碼方式是否為所述第一解碼方式;
[0172]若所述視頻的解碼方式為所述第一解碼方式,則采用所述第二解碼方式解碼所述視頻。
[0173]所述方法還包括:
[0174]形成并存儲所述視頻的解碼方式標(biāo)記信息;
[0175]所述方法還包括:
[0176]若檢測出采用所述第一解碼方式解碼的所述視頻播放故障,則切換至采用所述第二解碼方式解碼所述視頻。
[0177]在播放所述視頻之前,形成并存儲表征所述視頻的解碼方式的解碼方式標(biāo)記信息;
[0178]若所述視頻播出故障,依據(jù)所述解碼方式標(biāo)記信息確定所述視頻的解碼方式。
[0179]由于在視頻播放之前星辰固有解碼方式標(biāo)記信息,在視頻出現(xiàn)故障時,可以快速的根據(jù)所述解碼方式標(biāo)記信息確定出當(dāng)前播出故障的視頻的解碼方式,進(jìn)行后續(xù)視頻解碼方式的切換或錯誤提示信息的輸出等操作。
[0180]在本實(shí)施例中為了方便后續(xù)判斷對所述視頻進(jìn)行解碼采用的解碼方式,在本實(shí)施例中還會生成解碼方式標(biāo)記信息。在所述解碼方式標(biāo)記信息中可包括兩部分內(nèi)容,一部分為所述視頻的標(biāo)識信息,以及對所述視頻進(jìn)行解碼的解碼方式的標(biāo)識信息,這樣就可以通過以所述視頻的標(biāo)識信息為查詢索引,通過查詢所述解碼方式標(biāo)記信息來確定所述視頻的解碼方式。所述解碼方式標(biāo)識信息可為存儲在對應(yīng)指定位置的一個或多個信息比特。
[0181]當(dāng)然上述只是一種表示所述解碼方式標(biāo)識信息以及所述視頻與視頻的解碼方式對應(yīng)關(guān)系的方式。在具體實(shí)現(xiàn)時,還有其他方式,如當(dāng)本實(shí)施例所述的方法為應(yīng)用在客戶端中的方法時,所述客戶端緩存中存儲有所述視頻解碼后的解碼信息,同時在對應(yīng)緩存中還存儲表示視頻的解碼方式的解碼方式的標(biāo)識信息。上述視頻和解碼方式的對應(yīng)關(guān)系,可以由存儲在同一緩存中來表示,這樣當(dāng)確定了所述視頻的解碼方式后,可以將所述確定的解碼方式的標(biāo)識信息,存儲到對應(yīng)的緩存即可,這樣存儲位置和解碼方式的標(biāo)識信息共同組成了上述解碼方式標(biāo)記信息。這樣就能減少信息生成量和存儲量。
[0182]總之本實(shí)施例所述的方法,提供了具體如何進(jìn)行所述視頻的解碼方式的確定過程,具有實(shí)現(xiàn)簡單。
[0183]方法實(shí)施例九:
[0184]如圖1所示,本實(shí)施例提供一種視頻解碼方法,所述方法包括:
[0185]步驟SllO:判斷電子設(shè)備是否支持第一解碼方式;
[0186]步驟S120:若所述電子設(shè)備支持所述第一解碼方式,確定采用所述第一解碼方式解碼視頻;若所述電子設(shè)備不支持所述第一解碼方式,確定采第二解碼方式解碼所述視頻;
[0187]步驟S130:采用所確定的解碼方式解碼所述視頻。
[0188]采用所述第一解碼方式解碼所述視頻的功耗小于采用所述第二解碼方式解碼所述視頻的功耗;
[0189]所述第二解碼方式能夠解碼的視頻范圍大于所述第二解碼方式能夠解碼的視頻范圍。通常所述第二解碼方式可解碼的視頻除了常規(guī)的按照視頻標(biāo)準(zhǔn)生成的標(biāo)準(zhǔn)視頻,還可以解碼一些有特殊代碼的視頻。所述第一解碼方式可解碼的視頻范圍決定于解碼硬件,通常能夠解碼的視頻范圍小于所述第二解碼方式能夠解碼的視頻范圍。
[0190]本實(shí)施例是可為上述所有實(shí)施例的進(jìn)一步改進(jìn),在本實(shí)施例中明確了所述第一解碼方式和第二解碼方式之間的差異,這種差異導(dǎo)致在不同的應(yīng)用場景下,需要選擇合適當(dāng)前應(yīng)用場景的解碼方式進(jìn)行所述視頻的解碼,從而在所述第一解碼方式能夠視頻時,采用所述第一解碼方式解碼所述視頻,從而能夠降低所述客戶端的能耗,延長所述客戶端的待機(jī)時長,在所述客戶端不支持所述第一解碼方式時,采用第二解碼方式來進(jìn)行解碼,且結(jié)合上述方法實(shí)施例在所述第一解碼方式導(dǎo)致視頻播出故障時,可采用第二解碼方式對所述視頻進(jìn)行解碼,從而盡可能的保證視頻的正常播放,這樣也充分的利用了所述第二解碼方式的解碼能力強(qiáng)的特點(diǎn),使所述客戶端整體解碼成功率保持在較高水平。
[0191]方法實(shí)施例十:
[0192]以下結(jié)合前述的任意一個方法實(shí)施例中的技術(shù)方案,提供一個應(yīng)用于能夠同時采用軟解和硬解的客戶端中的視頻解碼方法。
[0193]如圖5所示,本實(shí)施例所述的視頻解碼方法包括:
[0194]步驟S201:在播放視頻之前,電子設(shè)備創(chuàng)建視頻播放器。此處的,視頻播放器相當(dāng)于電子設(shè)備結(jié)合硬件和軟件結(jié)構(gòu)具有解碼能力的所述客戶端。
[0195]步驟S202:創(chuàng)建播放器的U10所述UI為User Interface的縮寫,對應(yīng)的中文為用戶界面。
[0196]步驟S203:判斷電子設(shè)備對應(yīng)的機(jī)型信息是否在硬解名單中;
[0197]若為是,則進(jìn)入步驟S204 ;
[0198]若為否,則進(jìn)入步驟S207。
[0199]此處的機(jī)型信息為上述設(shè)備信息的一種。所述硬解名單即可為上述第一解碼名單信息。本實(shí)施例中的第一解碼方式即可為硬解。
[0200]步驟S204:選擇硬解。
[0201]步驟S205:設(shè)置對應(yīng)于硬解的surface屬性。surface為應(yīng)用于視頻播出過程中進(jìn)行渲染數(shù)據(jù)處理邏輯實(shí)體。通常所述surface包括緩沖區(qū);所述緩沖區(qū)用來存儲形成圖像的像素數(shù)據(jù)。所述surface還用于將渲染數(shù)據(jù)繪制到播放器的播放窗口內(nèi)。
[0202]此處的設(shè)置surface屬性包括:把surface的類型設(shè)置為對應(yīng)于硬解的類型,具體如SURFACE_TYPE_PUSH_BUFFERS。這樣surface就不維護(hù)其自身的緩沖區(qū),而是等待硬解的解碼器或解碼芯片直接將需要渲染的渲染推送到用戶界面。
[0203]此處的設(shè)置surface屬性還包括:將圖像的像素格式設(shè)置為對應(yīng)硬解的像素格式,具體如PixeI Format, opaque,該格式通常為硬解解碼器或解碼芯片默認(rèn)的像素格式。
[0204]步驟S206:初始化硬解。
[0205]步驟S207:選擇軟解。此處的軟解即為上述第二解碼方式。
[0206]步驟S208:設(shè)置對應(yīng)于軟解的surface屬性。
[0207]此處設(shè)置對應(yīng)于軟解的surface屬性包括:將surface的類型設(shè)置為對應(yīng)于軟解的類型,如SRRFACE_TYPE_NORMAL ;即為普通surface,需要surface維護(hù)其本身的緩沖區(qū)來存儲數(shù)據(jù)。
[0208]此處設(shè)置對應(yīng)于軟解的surface屬性包括:將像素格式設(shè)置為對應(yīng)于軟解的像素格式,具體如 Pixel Format.RGBX_8888o
[0209]步驟S210:解碼播放視頻。
[0210]步驟S211:判斷是否出現(xiàn)播放故障,如果是,則進(jìn)入步驟S212,否則結(jié)束。
[0211]步驟S212:判斷是否采用的硬解,如果是,則進(jìn)入步驟S213,若果否則進(jìn)入步驟S214o
[0212]步驟S213:釋放硬解的解碼器,并返回步驟S207。釋放硬解的解碼器可包括:如釋放硬解的解碼器占用的資源或維護(hù)的硬解解碼器的數(shù)據(jù)等
[0213]步驟S214:提示播放錯誤。
[0214]通過本實(shí)施例所述的方法,能夠更好的解決電子設(shè)備(如手機(jī))播放視頻耗電量高的問題。一般用戶不需要了解手機(jī)的視頻解碼能力,視頻播放器會首先根據(jù)硬解名單,判斷該電子設(shè)備