本發(fā)明涉及互聯(lián)網(wǎng)移動(dòng)端應(yīng)用開發(fā)領(lǐng)域,具體是涉及一種用戶切換清晰度加載視頻流的方法及系統(tǒng)。
背景技術(shù):
::在移動(dòng)端的app(application,應(yīng)用)進(jìn)行視頻或者直播的時(shí)候,由于用戶的網(wǎng)速有快有慢,如果用戶的網(wǎng)速比較慢,觀看高清視頻或者超清視頻可能會(huì)比較卡,影響用戶的觀看體驗(yàn)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是為了克服上述
背景技術(shù):
:的不足,提供一種用戶切換清晰度加載視頻流的方法及系統(tǒng),能夠根據(jù)視頻流的清晰度,實(shí)現(xiàn)靈活切換線路來(lái)加載視頻流,提高用戶的觀看體驗(yàn)。本發(fā)明提供一種用戶切換清晰度加載視頻流的方法,包括以下步驟:a、構(gòu)建線路切換的界面,當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù);b、如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,中斷執(zhí)行按鈕加載視頻流函數(shù),線路切換的界面消失,不加載視頻流;c、存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶來(lái)到直播間時(shí),對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,保存按鈕當(dāng)前選擇的線路和清晰度;設(shè)置動(dòng)畫,使線路切換的界面消失,重新加載直播間或者視頻的信息;d、定期檢查視頻流是否正確有效,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放。在上述技術(shù)方案的基礎(chǔ)上,步驟a中,所述構(gòu)建線路切換的界面的過(guò)程如下:a1、搭建線路切換的界面;a2、在搭建的線路切換的界面上,添加切換線路的按鈕,每個(gè)線路下面有“高清、普清、超清”三個(gè)按鈕中的1~3個(gè);a3、每個(gè)按鈕上面有線路的清晰度、按鈕屬于哪個(gè)線路的信息,每個(gè)按鈕的清晰度狀態(tài)為“高清、普清、超清”中的一種。在上述技術(shù)方案的基礎(chǔ)上,步驟b中還包括以下步驟:如果沒(méi)有中斷執(zhí)行按鈕加載視頻流函數(shù),則將按鈕對(duì)應(yīng)的視頻流的清晰度顯示在直播或者視頻播放的播放器中,讓用戶知道自己選中的是哪一種清晰度。在上述技術(shù)方案的基礎(chǔ)上,步驟d中,所述根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的過(guò)程如下:d1、判斷視頻流所在的父類的圖層是否存在,如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間,將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,則請(qǐng)求新的視頻流的地址;d2、調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址;根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;獲得拉流地址后,使用播放器拉起最新的視頻流;d3、調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,則銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行d1~d3,保證獲取的拉流地址的正確性,保證視頻正確播放。在上述技術(shù)方案的基礎(chǔ)上,步驟d2中,所述拉流地址的生成過(guò)程是:使用視頻流播放地址,拼接上清晰度的字符串,高清是@“high”,普清是@“normal”,超清是@“super”,生成和用戶選擇的清晰度相關(guān)的拉流地址。本發(fā)明該提供一種用戶切換清晰度加載視頻流的系統(tǒng),該系統(tǒng)包括線路切換界面構(gòu)建單元、加載單元、存儲(chǔ)單元、動(dòng)畫設(shè)置單元、拉流播放單元,其中:線路切換界面構(gòu)建單元用于:構(gòu)建線路切換的界面;加載單元用于:當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù);如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,中斷執(zhí)行按鈕加載視頻流函數(shù),線路切換的界面消失,不加載視頻流;存儲(chǔ)單元用于:存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶來(lái)到直播間時(shí),對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,保存按鈕當(dāng)前選擇的線路和清晰度;動(dòng)畫設(shè)置單元用于:設(shè)置動(dòng)畫,使線路切換的界面消失,重新加載直播間或者視頻的信息;拉流播放單元用于:定期檢查視頻流是否正確有效,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放。在上述技術(shù)方案的基礎(chǔ)上,所述線路切換界面構(gòu)建單元構(gòu)建線路切換的界面的過(guò)程如下:搭建線路切換的界面;在搭建的線路切換的界面上,添加切換線路的按鈕,每個(gè)線路下面有“高清、普清、超清”三個(gè)按鈕中的1~3個(gè);每個(gè)按鈕上面有線路的清晰度、按鈕屬于哪個(gè)線路的信息,每個(gè)按鈕的清晰度狀態(tài)為“高清、普清、超清”中的一種。在上述技術(shù)方案的基礎(chǔ)上,該系統(tǒng)還包括顯示單元,所述顯示單元用于:如果所述加載單元沒(méi)有中斷執(zhí)行按鈕加載視頻流函數(shù),顯示單元將按鈕對(duì)應(yīng)的視頻流的清晰度顯示在直播或者視頻播放的播放器中,讓用戶知道自己選中的是哪一種清晰度。在上述技術(shù)方案的基礎(chǔ)上,所述拉流播放單元根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的過(guò)程如下:判斷視頻流所在的父類的圖層是否存在,如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間,將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,則請(qǐng)求新的視頻流的地址;調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址;根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;獲得拉流地址后,使用播放器拉起最新的視頻流;調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,則銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行以上步驟,保證獲取的拉流地址的正確性,保證視頻正確播放。在上述技術(shù)方案的基礎(chǔ)上,所述拉流地址的生成過(guò)程是:使用視頻流播放地址,拼接上清晰度的字符串,高清是@“high”,普清是@“normal”,超清是@“super”,生成和用戶選擇的清晰度相關(guān)的拉流地址。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:(1)本發(fā)明搭建線路切換的界面,在直播或點(diǎn)播中,用戶點(diǎn)擊線路切換的中的某一個(gè)線路和清晰度的按鈕后,系統(tǒng)根據(jù)這個(gè)按鈕所攜帶的清晰度信息去拉取對(duì)應(yīng)的視頻流。本發(fā)明能夠根據(jù)視頻流的清晰度,實(shí)現(xiàn)靈活切換線路來(lái)加載視頻流,提高用戶的觀看體驗(yàn)。在直播或點(diǎn)播中,如果用戶的網(wǎng)速比較慢,觀看高清視頻或者超清視頻可能會(huì)比較卡,用戶需要切換清晰度,如果切換到普清,可能可以消除播放的時(shí)候的卡頓現(xiàn)象;如果用戶網(wǎng)速比較快,可以切換到高清或者超清,觀看更清晰的視頻,提高觀看體驗(yàn)。(2)本發(fā)明構(gòu)建線路切換的界面,當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù)。本發(fā)明創(chuàng)建了一個(gè)線路切換的界面,這個(gè)界面的布局是有多個(gè)線路供用戶選擇,每個(gè)線路下面有“超清、高清、普清”中的一種,方便用戶切換到合適的線路,這樣可以避免一個(gè)線路無(wú)法播放的時(shí)候,用戶還有其他的線路可以選擇。(3)如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,中斷執(zhí)行按鈕加載視頻流函數(shù),線路切換的界面消失,不加載視頻流。如果用戶選擇的清晰度和線路和當(dāng)前播放的視頻流的清晰度和線路一致,不做任何操作,減少了不必要的拉流,能夠提升用戶的觀看體驗(yàn)。(4)本發(fā)明存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶來(lái)到直播間時(shí),對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,保存按鈕當(dāng)前選擇的線路和清晰度;設(shè)置動(dòng)畫,使線路切換的界面消失,重新加載直播間或者視頻的信息。用戶選擇按鈕之后,這個(gè)按鈕攜帶了這個(gè)按鈕的清晰度狀態(tài)和所在線路,將按鈕的清晰度狀態(tài)和所在線路,都傳遞給按鈕加載視頻流函數(shù),按鈕加載視頻流函數(shù)就可以保留這些按鈕的清晰度的狀態(tài)和屬于哪個(gè)線路的狀態(tài),方便下一次用戶啟動(dòng)app的時(shí)候,去拉取上一次選擇的線路房間信息和上一次選擇的清晰度狀態(tài)的視頻流。(5)本發(fā)明判斷視頻流所在的父類的圖層是否存在,如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間,將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,則請(qǐng)求新的視頻流的地址。本發(fā)明實(shí)現(xiàn)了視頻流播放地址分割,分割為120秒的視頻流,每5秒檢查一下視頻流的有效性,120秒的視頻共用一個(gè)視頻流資地址的方法,保證獲取的單個(gè)視頻流較小,保證播放的時(shí)候拉取的視頻流不是很大,避免用戶看一秒拉取過(guò)多的視頻流,5秒檢查一次地址的有效性,快過(guò)期前去拉取最新的留地址,保證了視頻播放的有效性。(6)本發(fā)明調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址;根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;獲得拉流地址后,使用播放器拉起最新的視頻流。本發(fā)明根據(jù)用戶選擇的清晰度,拼接一個(gè)視頻流播放地址,利用這個(gè)視頻流播放地址去加載對(duì)應(yīng)清晰度的視頻流,實(shí)現(xiàn)了簡(jiǎn)單、快捷地根據(jù)用戶清晰度去拉取對(duì)應(yīng)的視頻流。(7)本發(fā)明調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,則銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;如果視頻流錯(cuò)誤,及時(shí)釋放播放器,在直播功能中,占用內(nèi)存最大的是視頻播放器,如果加載視頻流錯(cuò)誤,去釋放播放器,保證有效的降低直播間控制器的內(nèi)存占用。(8)本發(fā)明在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行,保證獲取的拉流地址的正確性,保證視頻正確播放。整個(gè)視頻的播放步驟是一個(gè)循環(huán)的過(guò)程,能夠?qū)崿F(xiàn)有效、方便地播放視頻。附圖說(shuō)明圖1是本發(fā)明實(shí)施例中用戶切換清晰度加載視頻流的方法的流程圖。圖2是本發(fā)明實(shí)施例中構(gòu)建線路切換的界面的流程圖。圖3是本發(fā)明實(shí)施例中根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的流程圖。具體實(shí)施方式下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。參見(jiàn)圖1所示,本發(fā)明實(shí)施例提供一種用戶切換清晰度加載視頻流的方法,包括以下步驟:a、構(gòu)建線路切換的界面,當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù);b、如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,中斷執(zhí)行按鈕加載視頻流函數(shù),線路切換的界面消失,不加載視頻流;如果沒(méi)有中斷執(zhí)行按鈕加載視頻流函數(shù),則將按鈕對(duì)應(yīng)的視頻流的清晰度顯示在直播或者視頻播放的播放器中,讓用戶知道自己選中的是哪一種清晰度;c、存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶來(lái)到直播間時(shí),對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,保存按鈕當(dāng)前選擇的線路和清晰度;設(shè)置動(dòng)畫,使線路切換的界面消失,重新加載直播間或者視頻的信息;d、定期檢查視頻流是否正確有效,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放。參見(jiàn)圖2所示,步驟a中,構(gòu)建線路切換的界面的過(guò)程如下:a1、搭建線路切換的界面;a2、在搭建的線路切換的界面上,添加切換線路的按鈕,每個(gè)線路下面有“高清、普清、超清”三個(gè)按鈕中的1~3個(gè);a3、每個(gè)按鈕上面有線路的清晰度、按鈕屬于哪個(gè)線路的信息,每個(gè)按鈕的清晰度狀態(tài)為“高清、普清、超清”中的一種。參見(jiàn)圖3所示,步驟d中,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的過(guò)程如下:d1、判斷視頻流所在的父類的圖層是否存在,如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間,將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,則請(qǐng)求新的視頻流的地址;d2、調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址;根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;獲得拉流地址后,使用播放器拉起最新的視頻流;d3、調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,則銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行d1~d3,保證獲取的拉流地址的正確性,保證視頻正確播放。步驟d2中,所述拉流地址的生成過(guò)程是:使用視頻流播放地址,拼接上清晰度的字符串,高清是@“high”,普清是@“normal”,超清是@“super”,生成和用戶選擇的清晰度相關(guān)的拉流地址。本發(fā)明還提供一種用戶切換清晰度加載視頻流的系統(tǒng),該系統(tǒng)包括線路切換界面構(gòu)建單元、加載單元、存儲(chǔ)單元、動(dòng)畫設(shè)置單元、拉流播放單元,其中:線路切換界面構(gòu)建單元用于:構(gòu)建線路切換的界面;加載單元用于:當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù);如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,中斷執(zhí)行按鈕加載視頻流函數(shù),線路切換的界面消失,不加載視頻流;存儲(chǔ)單元用于:存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶來(lái)到直播間時(shí),對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,保存按鈕當(dāng)前選擇的線路和清晰度;動(dòng)畫設(shè)置單元用于:設(shè)置動(dòng)畫,使線路切換的界面消失,重新加載直播間或者視頻的信息;拉流播放單元用于:定期檢查視頻流是否正確有效,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放。線路切換界面構(gòu)建單元構(gòu)建線路切換的界面的過(guò)程如下:搭建線路切換的界面;在搭建的線路切換的界面上,添加切換線路的按鈕,每個(gè)線路下面有“高清、普清、超清”三個(gè)按鈕中的1~3個(gè);每個(gè)按鈕上面有線路的清晰度、按鈕屬于哪個(gè)線路的信息,每個(gè)按鈕的清晰度狀態(tài)為“高清、普清、超清”中的一種。該系統(tǒng)還包括顯示單元,顯示單元用于:如果所述加載單元沒(méi)有中斷執(zhí)行按鈕加載視頻流函數(shù),顯示單元將按鈕對(duì)應(yīng)的視頻流的清晰度顯示在直播或者視頻播放的播放器中,讓用戶知道自己選中的是哪一種清晰度。拉流播放單元根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的過(guò)程如下:判斷視頻流所在的父類的圖層是否存在,如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間,將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,則請(qǐng)求新的視頻流的地址;調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址;根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;獲得拉流地址后,使用播放器拉起最新的視頻流;拉流地址的生成過(guò)程是:使用視頻流播放地址,拼接上清晰度的字符串,高清是@“high”,普清是@“normal”,超清是@“super”,生成和用戶選擇的清晰度相關(guān)的拉流地址;調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,則銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行以上步驟,保證獲取的拉流地址的正確性,保證視頻正確播放。下面結(jié)合具體函數(shù)來(lái)進(jìn)行說(shuō)明。a、參見(jiàn)圖1所示,構(gòu)建線路切換的界面,當(dāng)用戶點(diǎn)擊某一個(gè)按鈕的時(shí)候,該按鈕將自身對(duì)應(yīng)的清晰度狀態(tài)和屬于哪一個(gè)線路的信息,傳遞給按鈕加載視頻流函數(shù)。參見(jiàn)圖2所示,步驟a中,構(gòu)建線路切換的界面的過(guò)程如下:a1、使用uiviewcontroller或者tableview,搭建線路切換的界面;a2、在搭建的線路切換的界面上,添加切換線路的按鈕,每個(gè)線路下面可能有“高清、普清、超清”三個(gè)按鈕中的1~3個(gè);a3、每個(gè)按鈕上面有線路的清晰度、按鈕屬于哪個(gè)線路的信息,每個(gè)按鈕的清晰度狀態(tài)為“高清、普清、超清”中的一種。步驟a的優(yōu)點(diǎn):創(chuàng)建了一個(gè)線路切換的界面,這個(gè)界面的布局是有多個(gè)線路供用戶選擇,每個(gè)線路下面有“超清、高清、普清”中的一種,方便用戶切換到合適的線路,這樣可以避免一個(gè)線路無(wú)法播放的時(shí)候,用戶還有其他的線路可以選擇。b、如果按鈕所攜帶的當(dāng)前清晰度和當(dāng)前播放的視頻流的清晰度一致,且按鈕所屬的線路與當(dāng)前播放視頻流的線路一致,說(shuō)明選擇的線路和清晰度就是當(dāng)前播放的線路和清晰度,直接中斷執(zhí)行按鈕加載視頻流函數(shù),同時(shí)切換線路界面消失,不加載任何視頻流;如果沒(méi)有中斷執(zhí)行按鈕加載視頻流函數(shù),則將按鈕對(duì)應(yīng)的視頻流的清晰度顯示在直播或者視頻播放的播放器中,讓用戶知道自己選中的是哪一種清晰度。步驟b的優(yōu)點(diǎn):如果用戶選擇的清晰度和線路和當(dāng)前播放的視頻流的清晰度和線路一致,不做任何操作,減少了不必要的拉流,能夠提升用戶的觀看體驗(yàn)。c、使用userdefaults,存儲(chǔ)當(dāng)前用戶選擇的線路和清晰度,下一次用戶啟動(dòng)app,來(lái)到直播間的時(shí)候,對(duì)于已經(jīng)存儲(chǔ)有線路和清晰度的用戶,優(yōu)先給該用戶拉取已存儲(chǔ)線路和對(duì)應(yīng)清晰度的視頻流,使用self.currentdefinition=btn.definition,保存按鈕當(dāng)前選擇的線路和清晰度;設(shè)置動(dòng)畫,使線路切換的界面消失,線路切換的界面消失之后,請(qǐng)求loadroominfo接口,重新加載直播間或者視頻的信息。請(qǐng)求loadroominfo接口的時(shí)候,loadroominfo接口需要傳入一個(gè)參數(shù),該參數(shù)是用戶選擇的那一條線路的參數(shù)_currentcdn,loadroominfo接口去這個(gè)線路下請(qǐng)求房間信息。步驟c的優(yōu)點(diǎn):用戶選擇按鈕之后,這個(gè)按鈕攜帶了這個(gè)按鈕的清晰度狀態(tài)和所在線路,將按鈕的清晰度狀態(tài)和所在線路,都傳遞給按鈕加載視頻流函數(shù)cdnbtnclick,cdnbtnclick函數(shù)就可以保留這些按鈕的清晰度的狀態(tài)和屬于哪個(gè)線路的狀態(tài),方便下一次用戶啟動(dòng)app的時(shí)候,去拉取上一次選擇的線路房間信息和上一次選擇的清晰度狀態(tài)的視頻流。d、定期檢查視頻流是否正確有效,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放。為了獲得穩(wěn)定的視頻流,可以每5秒檢查視頻流是否正確,每2分鐘檢查一下視頻流是否有效,檢查方法是videosourcecheck。參見(jiàn)圖3所示,步驟d中,根據(jù)用戶選擇的清晰度拉取視頻流來(lái)播放的過(guò)程如下:d1、使用函數(shù)isviewvisable,判斷視頻流所在的父類的圖層view是否存在;如果存在,獲得每一段視頻流的模型對(duì)象,該模型對(duì)象包含視頻流播放地址的鏈接和失效時(shí)間availabledeadline;使用函數(shù)語(yǔ)句if([_currentvideosource.availabledeadlinetimeintervalsincedate:[nsdatedate]]<=120),將視頻流的失效時(shí)間和當(dāng)前的時(shí)間進(jìn)行比較,[nsdatedate]是獲取當(dāng)前的時(shí)間,時(shí)間比較函數(shù)是timeintervalsincedate,如果兩者的時(shí)間差小于預(yù)設(shè)的時(shí)間間隔,例如120秒,則請(qǐng)求新的視頻流的地址;d2、調(diào)用視頻流請(qǐng)求接口,獲取視頻流播放地址_currentvideosource;獲得視頻流播放地址_currentvideosource后,使用函數(shù)-(nsstring*)getvideour:(definition)definition,根據(jù)用戶選擇的清晰度,生成和用戶選擇的清晰度相關(guān)的拉流地址;拉流地址的生成過(guò)程是:使用視頻流播放地址_currentvideosource,拼接上清晰度的字符串,高清是@“high”,普清是@“normal”,超清是@“super”,生成和用戶選擇的清晰度相關(guān)的拉流地址。獲得拉流地址后,使用播放器的setoptionvalue函數(shù),拉起最新的視頻流;d3、調(diào)用視頻流請(qǐng)求接口,如果不能獲得最新的視頻流播放地址,就使用函數(shù)releaseplayer,銷毀視頻播放器,釋放播放器內(nèi)存,告知用戶視頻流錯(cuò)誤,在播放器上給用戶提供一個(gè)重置按鈕,刷新直播間的數(shù)據(jù),重新開始播放;在整個(gè)視頻的播放過(guò)程中,定期重復(fù)執(zhí)行d1~d3,例如,每5秒重復(fù)一次d1~d3,保證獲取的拉流地址的正確性,同時(shí)保證了視頻播放。步驟d1實(shí)現(xiàn)了視頻流播放地址分割,分割為120秒的視頻流,每5秒檢查一下視頻流的有效性,120秒的視頻共用一個(gè)視頻流資地址的方法,保證獲取的單個(gè)視頻流較小,保證播放的時(shí)候拉取的視頻流不是很大,避免用戶看一秒拉取過(guò)多的視頻流,5秒檢查一次地址的有效性,快過(guò)期前去拉取最新的留地址,保證了視頻播放的有效性。步驟d2根據(jù)用戶選擇的清晰度,拼接一個(gè)視頻流播放地址,利用這個(gè)視頻流播放地址去加載對(duì)應(yīng)清晰度的視頻流,實(shí)現(xiàn)了簡(jiǎn)單、快捷地根據(jù)用戶清晰度去拉取對(duì)應(yīng)的視頻流。步驟d3中,如果視頻流錯(cuò)誤,及時(shí)釋放播放器,在直播功能中,占用內(nèi)存最大的是視頻播放器,如果加載視頻流錯(cuò)誤,去釋放播放器,保證有效的降低直播間控制器的內(nèi)存占用。整個(gè)步驟d是一個(gè)循環(huán)的過(guò)程,能夠?qū)崿F(xiàn)有效、方便地播放視頻。綜上所述,本發(fā)明實(shí)施例搭建線路切換的界面,在直播或點(diǎn)播中,用戶點(diǎn)擊線路切換的中的某一個(gè)線路和清晰度的按鈕后,系統(tǒng)根據(jù)這個(gè)按鈕所攜帶的清晰度信息去拉取對(duì)應(yīng)的視頻流。本發(fā)明能夠根據(jù)視頻流的清晰度,實(shí)現(xiàn)靈活切換線路來(lái)加載視頻流,提高用戶的觀看體驗(yàn)。在直播或點(diǎn)播中,如果用戶的網(wǎng)速比較慢,觀看高清視頻或者超清視頻可能會(huì)比較卡,用戶需要切換清晰度,如果切換到普清,可能可以消除播放的時(shí)候的卡頓現(xiàn)象;如果用戶網(wǎng)速比較快,可以切換到高清或者超清,觀看更清晰的視頻,提高觀看體驗(yàn)。本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。說(shuō)明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12