本發(fā)明涉及媒體點播領域,尤其涉及一種媒體點播控制方法及媒體播放器。
背景技術:用戶在機頂盒、智能手機等媒體播放器上通過網絡點播的方式欣賞視頻或音頻節(jié)目時,點播速度除了與播放軟件本身的性能有關外,還與網絡環(huán)境、節(jié)目文件大小等因素有關。每次網絡點播的時候,媒體播放器首先按照被點播的節(jié)目對應的網絡播放鏈接地址進行網絡連接,接著請求數據下載,該過程有時需要花費一定的時間,且該時間段內媒體播放器一直處于初始化狀態(tài),如果在此過程中用戶切換節(jié)目,由于上一次點播的節(jié)目尚未完成初始化,媒體播放器可能無法及時切換至下一節(jié)目而出現狀態(tài)沖突、對象死鎖,最后導致媒體播放器假死或等待,嚴重時甚至導致媒體播放器死機,因此對用戶的體驗度造成一定影響。
技術實現要素:本發(fā)明要解決的主要技術問題是,提供一種提高用戶體驗度的媒體點播控制方法及媒體播放器。為解決上述技術問題,本發(fā)明提供一種媒體點播控制方法,包括以下步驟:媒體播放器接收用戶輸入的節(jié)目點播請求;根據該節(jié)目點播請求開啟線程對點播的節(jié)目進行初始化;在完成初始化期間,如果媒體播放器接收到用戶輸入的節(jié)目切換請求,則保存請求切換的節(jié)目所對應的切換信息;判斷是否完成初始化,如果是則判斷媒體播放器是否在初始化期間接收過用戶的節(jié)目切換請求,如果有則對待切換的節(jié)目進行初始化,否則直接播放所述用戶點播的節(jié)目。本發(fā)明還保護了一種媒體播放器,包括點播控制模塊、初始化模塊、切換控制模塊、初始化判斷模塊、切換信息存儲模塊、切換判斷模塊和播放模塊;點播控制模塊用于接收用戶輸入的節(jié)目點播請求;初始化模塊用于根據節(jié)目點播請求開啟線程對點播的節(jié)目進行初始化;切換控制模塊用于在執(zhí)行初始化期間接收用戶輸入的節(jié)目切換請求,并通過所述切換信息存儲模塊保存待切換的節(jié)目所對應的切換信息;初始化判斷模塊用于判斷是否完成初始化;切換判斷模塊用于在判斷完成初始化之后,判斷所述切換控制模塊是否在初始化期間接收過用戶的節(jié)目切換請求,如果有則通過所述初始化模塊對待切換的節(jié)目進行初始化,否則直接通過所述播放模塊播放所述用戶點播的節(jié)目。本發(fā)明的有益效果是:本發(fā)明有效避免了媒體播放器在節(jié)目初始化期間切換另一節(jié)目而導致的媒體播放器假死、長時間等待或者死機等現象,使媒體播放器能夠流暢地實現節(jié)目點播和節(jié)目切換,對現有的媒體播放方式形成有益補充,同時極大地提高了用戶體驗度和用戶滿意度。附圖說明圖1為本發(fā)明一種實施例的媒體點播控制方法的流程圖;圖2為本發(fā)明一種實施例的媒體播放器框圖。具體實施方式本發(fā)明在媒體播放器對用戶點播的節(jié)目進行初始化時,如果接收到用戶的節(jié)目切換,則首先保存待切換的節(jié)目所對應的切換信息,等待完成初始化之后再利用該切換信息初始化并播放待切換的節(jié)目,確保最初點播的節(jié)目的初始化過程順利進行,避免了媒體播放器尚未完成初始化而切換至下一節(jié)目造成狀態(tài)沖突、對象死鎖等現象。下面通過具體實施方式結合附圖對本發(fā)明作進一步詳細說明。請參考圖1,本實施例的一種媒體點播控制方法包括以下步驟:步驟S101:媒體播放器接收用戶輸入的節(jié)目點播請求。根據不同的產品類型,媒體播放器可為機頂盒、手機、電腦、收音機等各類媒體播放終端,例如本實施例的媒體播放器為采用android操作系統(tǒng)的機頂盒。點播或切換的節(jié)目可為視頻、音頻或同時包含視頻和音頻的各類節(jié)目。媒體播放器的點播形式可為本機點播或者網絡點播,前者指直接在本機的數據庫中調取和播放用戶點播的節(jié)目,后者指媒體播放器連接網絡后,下載相關的數據并在線播放用戶點播的節(jié)目。步驟S102:根據該節(jié)目點播請求開啟線程對點播的節(jié)目進行初始化。本步驟對于本地點播,初始化過程指媒體播放器開啟初始化線程從本機的數據庫中調取用戶點播的節(jié)目,對于網絡點播,初始化過程也稱為緩沖過程,指媒體播放器開啟線程初始化MediaPlayer對象,按照其對應的網絡播放鏈接地址進行網絡連接,并請求數據下載的過程。步驟S103:判斷是否已經完成初始化,是則轉步驟S108,否則轉步驟S104??紤]到網絡環(huán)境的好壞或者節(jié)目文件的大小,初始化持續(xù)的時間通常難以確定,通常情況下,媒體播放器在完成一個節(jié)目的初始化后,會自動回調Onprepared方法,因此一種實施方式可通過監(jiān)聽媒體播放器是否回調Onprepared方法進行判斷,如果媒體播放器回調Onprepared方法則表明已經完成初始化,否則表明尚未完成初始化。另一種實施例中,還可建立一個初始化狀態(tài)標記并隨時對其進行修改,媒體播放器可通過識別該初始化狀態(tài)標記,精確地判斷初始化是否還在進行中或者是否已經完成?;蛘?,還可采用計時的方式控制初始化時間,即在媒體播放器中預設一定時時間,初始化開始后啟動計時,計時時間未滿則認為初始化尚未完成,計時時間屆滿后認為初始化已經完成。步驟S104:若機頂盒尚未回調OnPrepared方法,即尚未完成初始化,于是開始判斷是否接收到用戶的節(jié)目切換,是則轉步驟S105,否則轉步驟S106。步驟S105:如果媒體播放器接收到用戶輸入的節(jié)目切換請求,則保存待切換的節(jié)目所對應的切換信息。本步驟中,媒體播放器可能僅接收到用戶的一次節(jié)目切換,也可能接收到用戶的多次節(jié)目切換。如果僅接收到一次節(jié)目切換,媒體播放器待切換的節(jié)目即用戶這一次切換的節(jié)目,則直接保存該次切換的節(jié)目所對應的切換信息。如果接收到用戶的多次節(jié)目切換,則待切換的節(jié)目指用戶最后一次切換的節(jié)目,則至少應保存待切換的節(jié)目所對應的切換信息,優(yōu)選地,為了節(jié)省存儲空間和方便后臺應用,可按照節(jié)目切換的先后順序,用最近一次切換的節(jié)目所對應的切換信息覆蓋前一次切換的節(jié)目所對應的切換信息。切換信息可根據具體需要進行保存,例如可包括本地播放地址或者網絡播放鏈接地址等信息。一種實施方式中,為了便于后續(xù)步驟中判斷點播的節(jié)目初始化期間媒體播放器是否接收過用戶輸入的節(jié)目切換請求,該步驟還建立或修改切換標識。建立切換標識是指如果媒體播放器在點播的節(jié)目初始化期間接收到用戶輸入的節(jié)目切換請求,則建立一個切換標識,對待切換的節(jié)目進行初始化或播放后該切換標識自動取消;修改切換標識是指媒體播放器中預先設置一個切換標識,如果在媒體播放器在點播的節(jié)目初始化期間接收到用戶輸入的節(jié)目切換請求,則修改該切換標識的狀態(tài),對待切換的節(jié)目進行初始化或播放后該切換標識自動復位。步驟S106:繼續(xù)初始化。步驟S107:繼續(xù)判斷是否已經完成初始化,判斷方法如步驟S103,是則轉步驟S108,否則回到步驟S106。步驟S108:若機頂盒已回調OnPrepared方法,即初始化完成,則開始判斷媒體播放器是否在初始化期間接收過用戶的節(jié)目切換,如果媒體播放器在初始化期間接收過用戶的節(jié)目切換,則轉步驟S110,否則轉步驟S109。判斷的方式同樣具有多種,例如本實施例中,可根據步驟S105中建立或者修改的切換標識判斷媒體播放器是否在初始化期間接收過用戶的節(jié)目切換?;蛘吡硪环N實施方式中,還可根據媒體播放器是否保存有待切換的節(jié)目所對應的切換信息進行判斷,如果有則表明初始化期間接收過用戶的節(jié)目切換,否則表明未在初始化期間接收過用戶的節(jié)目切換,當然為了避免媒體播放器中始終保存有本次待切換的節(jié)目而對下一次節(jié)目點播和切換過程中的判斷造成干擾,對本次待切換的節(jié)目進行初始化或播放后應當擦除保存的待切換的節(jié)目所對應的切換信息。步驟S109:直接播放用戶點播的、已經完成初始化的節(jié)目,然后可回到步驟S101等待用戶的下一次節(jié)目點播。步驟S110:根據保存的待切換的節(jié)目所對應的切換信息,對待切換的節(jié)目進行初始化,然后循環(huán)重復步驟S103之后的過程,具體處理流程依然是:媒體播放器接收用戶輸入的節(jié)目點播請求,根據該節(jié)目點播請求開啟線程,將點播節(jié)目作為要播放的節(jié)目進行初始化;在完成要播放節(jié)目的初始化期間,如果媒體播放器接收到用戶輸入的節(jié)目切換請求,則保存請求切換的節(jié)目所對應的切換信息;判斷是否完成要播放節(jié)目的初始化,如果是則判斷媒體播放器是否在初始化期間接收過用戶的節(jié)目切換請求,如果有則將待切換的節(jié)目切換為要播放的節(jié)目并對其進行初始化,如果沒有待切換的節(jié)目則直接播放已完成初始化的節(jié)目。當已完成初始化的節(jié)目有多個時,可直接播放最近完成初始化的節(jié)目,也可允許用戶在多個已完成初始化的節(jié)目中進行選擇,根據用戶的選擇進行播放。如圖2所示,本發(fā)明還保護了一種用于實現以上媒體點播控制方法的媒體播放器,包括點播控制模塊10、初始化模塊20、初始化判斷模塊30、切換控制模塊40、切換判斷模塊50、切換信息存儲模塊60、播放模塊70。其中,點播控制模塊10用于接收用戶輸入的節(jié)目點播請求。初始化模塊20用于根據點播控制模塊10接收的節(jié)目點播請求開啟線程對點播的節(jié)目進行初始化。初始化判斷模塊30用于判斷初始化模塊20是否完成初始化,例如一種實施方式中,該初始化判斷模塊30中設有監(jiān)聽模塊,用于監(jiān)聽媒體播放器是否回調Onprepared方法,如果媒體播放器回調Onprepared方法則表明已經完成初始化。當然初始化判斷模塊30也可采用以上媒體點播控制方法中描述的方式,根據初始化狀態(tài)標識或計時時間判斷初始化模塊20是否完成初始化。切換控制模塊40用于在初始化模塊20執(zhí)行初始化期間,接收用戶輸入的節(jié)目切換請求,并通過切換信息存儲模塊60保存待切換的節(jié)目所對應的切換信息。如果僅接收到一次節(jié)目切換,則切換信息存儲模塊60直接保存該次切換的節(jié)目所對應的切換信息,如果接收到用戶的多次節(jié)目切換,則切換信息存儲模塊60可分別保存各次切換的節(jié)目所對應的切換信息,優(yōu)選地,切換信息存儲模塊60按照節(jié)目切換的先后順序,覆蓋保存用戶切換的節(jié)目所對應的切換信息,最終僅保存最后一次用戶切換的節(jié)目所對應的切換信息。針對媒體播放器不同的點播方式,保存的切換信息可包括本地播放地址或者網絡播放鏈接地址等信息。一種實施方式中,媒體播放器還包括切換標識模塊,該切換標識模塊也可根據需要設置在切換控制模塊40中,用于在初始化期間當切換控制模塊40接收到用戶輸入的節(jié)目切換請求時建立或修改切換標識,以便切換判斷模塊50判斷初始化期間切換控制模塊40是否接收過用戶的節(jié)目切換請求。切換判斷模塊50用于在初始化模塊20完成初始化之后,判斷切換控制模塊40是否在初始化期間接收過用戶的節(jié)目切換。例如一種實施方式中,可根據切換標識模塊中的切換標識進行判斷,即:如果存在切換標識或者切換標識的狀態(tài)表示初始化期間接收過節(jié)目切換,則表明切換控制模塊40在初始化期間接收過用戶的節(jié)目切換,否則表明切換控制模塊40未在初始化期間接收過用戶的節(jié)目切換。另一種實施方式中,還可通過判斷切換信息存儲模塊60中是否保存有待切換的節(jié)目所對應的切換信息而進行判斷。如果判斷切換控制模塊40在初始化期間接收過用戶的節(jié)目切換,則通過初始化模塊20對待切換的節(jié)目進行初始化,并在初始化完成后通過播放模塊70進行播放,否則直接通過播放模塊70播放用戶點播的節(jié)目。本實施方式的媒體播放器可為機頂盒、手機、電腦或收音機等多種用于實現媒體播放的終端。本發(fā)明的媒體點播控制方法和媒體播放器優(yōu)先完成用戶最初點播的節(jié)目的初始化過程,不在該過程中對用戶請求切換的節(jié)目進行處理,僅保留待切換的節(jié)目所對應的切換信息,避免了點播的節(jié)目在初始化期間進行節(jié)目切換對初始化過程造成干擾,即使用戶在初始化期間進行了多次節(jié)目切換,也不會因點播的節(jié)目尚未完成初始化又切換至下一節(jié)目而導致狀態(tài)沖突、對象死鎖等現象,更不會造成媒體播放器假死、長時間等待或者死機等現象,因此確保了媒體播放器能夠流暢地實現節(jié)目點播和節(jié)目切換,對現有的媒體播放方式形成有益補充,同時極大地提高了用戶的體驗度和滿意度。以上內容是結合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。