一種下載直播流的方法及下載服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)的音視頻技術(shù),尤指一種下載直播流的方法及下載服務(wù)器。
【背景技術(shù)】
[0002]實時消息傳輸協(xié)議(Real Time Messaging Protocol,RTMP)是現(xiàn)在主流的直播流協(xié)議。隨著RTMP被廣泛使用,對于直播流的下載需求也隨之增加。
[0003]當(dāng)前的應(yīng)用和視頻網(wǎng)站均只能下載已經(jīng)錄制好的音視頻文件,不支持直播音視頻的下載功能,用戶僅能使用錄屏或錄音軟件進(jìn)行錄制。
【發(fā)明內(nèi)容】
[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種下載直播流的方法及下載服務(wù)器,能夠支持音視頻直播流下載且支持多個頻道同時下載。
[0005]為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種下載直播流的方法,包括:
[0006]主線程接收直播流下載請求,向下載任務(wù)分配線程維護(hù)的任務(wù)列表中添加直播流下載任務(wù);
[0007]所述下載任務(wù)分配線程在發(fā)現(xiàn)所述任務(wù)列表中存在直播流下載任務(wù)時,從所述任務(wù)列表中取出直播流下載任務(wù),查看所維護(hù)的空閑線程列表中是否存在空閑的下載線程,如果存在空閑的下載線程,則分配空閑的下載線程處理取出的直播流下載任務(wù),由分配的空閑的下載線程執(zhí)行直播流下載任務(wù)進(jìn)行直播流的下載。
[0008]進(jìn)一步地,所述方法還包括:
[0009]所述下載任務(wù)分配線程在所述空閑線程列表中不存在空閑的下載線程時,判斷當(dāng)前下載線程的總數(shù)量是否達(dá)到線程數(shù)量閾值,如果未達(dá)到,則創(chuàng)建下載線程處理取出的直播流下載任務(wù)。
[0010]進(jìn)一步地,所述方法還包括:
[0011]所述下載任務(wù)分配線程如果判斷當(dāng)前下載線程的總數(shù)量達(dá)到所述線程數(shù)量閾值,則將取出的下載任務(wù)加入等待隊列,等待有直播流下載任務(wù)完成后,分配空閑的下載線程進(jìn)行處理。
[0012]進(jìn)一步地,所述下載任務(wù)分配線程在初始階段不存在直播流下載任務(wù)的情況下,并不創(chuàng)建下載線程,在存在直播流下載任務(wù)且無下載線程的情況下,才創(chuàng)建下載線程。
[0013]進(jìn)一步地,所述分配空閑的下載線程處理取出的直播流下載任務(wù),包括:
[0014]所述下載任務(wù)分配線程分配一個下載線程處理一個直播流下載任務(wù)。
[0015]進(jìn)一步地,一種下載服務(wù)器,包括:下載任務(wù)創(chuàng)建單元和下載任務(wù)分配單元,其中:
[0016]所述下載任務(wù)創(chuàng)建單元,用于控制主線程接收直播流下載請求,向下載任務(wù)分配線程維護(hù)的任務(wù)列表中添加直播流下載任務(wù);
[0017]所述下載任務(wù)分配單元,用于控制所述下載任務(wù)分配線程在發(fā)現(xiàn)所述任務(wù)列表中存在直播流下載任務(wù)時,從所述任務(wù)列表中取出直播流下載任務(wù),查看所維護(hù)的空閑線程列表中是否存在空閑的下載線程,如果存在空閑的下載線程,則分配空閑的下載線程處理取出的直播流下載任務(wù),由分配的空閑的下載線程執(zhí)行直播流下載任務(wù)進(jìn)行直播流的下載。
[0018]進(jìn)一步地,所述下載任務(wù)分配單元,還用于控制所述下載任務(wù)分配線程在所述空閑線程列表中不存在空閑的下載線程時,判斷當(dāng)前下載線程的總數(shù)量是否達(dá)到線程數(shù)量閾值,如果未達(dá)到,則創(chuàng)建下載線程處理取出的直播流下載任務(wù)。
[0019]進(jìn)一步地,所述下載任務(wù)分配單元,還用于控制所述下載任務(wù)分配線程在判斷當(dāng)前下載線程的總數(shù)量達(dá)到所述線程數(shù)量閾值時,將取出的下載任務(wù)加入等待隊列,等待有直播流下載任務(wù)完成后,分配空閑的下載線程進(jìn)行處理。
[0020]進(jìn)一步地,所述下載任務(wù)分配單元,還用于控制所述下載任務(wù)分配線程在初始階段不存在直播流下載任務(wù)的情況下,不創(chuàng)建下載線程,在存在直播流下載任務(wù)且無下載線程的情況下,才創(chuàng)建下載線程。
[0021]進(jìn)一步地,所述下載任務(wù)分配單元控制所述下載任務(wù)分配線程分配空閑的下載線程處理取出的直播流下載任務(wù),包括:
[0022]控制所述下載任務(wù)分配線程分配一個下載線程處理一個直播流下載任務(wù)。
[0023]與現(xiàn)有技術(shù)相比,本發(fā)明包括主線程接收直播流下載請求,向下載任務(wù)分配線程維護(hù)的任務(wù)列表中添加直播流下載任務(wù);下載任務(wù)分配線程在發(fā)現(xiàn)任務(wù)列表中存在直播流下載任務(wù)時,從任務(wù)列表中取出直播流下載任務(wù),查看所維護(hù)的空閑線程列表中是否存在空閑的下載線程,如果存在空閑的下載線程,則分配空閑的下載線程處理取出的直播流下載任務(wù),由分配的空閑的下載線程執(zhí)行直播流下載任務(wù)進(jìn)行直播流的下載。本發(fā)明能夠滿足用戶對直播流的下載需求,并且可以同時下載多個直播音視頻。
[0024]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
【附圖說明】
[0025]附圖用來提供對本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
[0026]圖1為本發(fā)明的下載直播流的方法的流程圖;
[0027]圖2為本發(fā)明的下載直播流的服務(wù)器的架構(gòu)圖。
【具體實施方式】
[0028]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0029]在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0030]如圖1所示,本發(fā)明的下載直播流的方法,包括:
[0031]步驟101:主線程接收直播流下載請求,向下載任務(wù)分配線程維護(hù)的任務(wù)列表中添加直播流下載任務(wù);
[0032]主線程主要是接收下載請求及處理下載完成后的操作。
[0033]步驟102:下載任務(wù)分配線程在發(fā)現(xiàn)任務(wù)列表中存在直播流下載任務(wù)時,從任務(wù)列表中取出直播流下載任務(wù),查看所維護(hù)的空閑線程列表中是否存在空閑的下載線程,如果存在空閑的下載線程,則分配空閑的下載線程處理取出的直播流下載任務(wù),由分配的空閑的下載線程執(zhí)行直播流下載任務(wù)進(jìn)行直播流的下載。
[0034]下載任務(wù)分配線程維護(hù)一個任務(wù)列表和一個空閑線程列表。
[0035]主線程會向任務(wù)列表中添加直播流下載任務(wù),當(dāng)下載任務(wù)分配線程發(fā)現(xiàn)有直播流下載任務(wù)時,從任務(wù)列表中取出下載任務(wù),并查看空閑線程列表中是否有空閑的下載線程,如果有空閑的下載線程,則取出一個空閑的下載線程用于處理直播流下載任務(wù)。分配的下載線程執(zhí)行直播流下載任務(wù)完成直播流的下載。
[0036]下載線程是指用于處理直播流下載任務(wù)的線程,該類線程可以有多個。
[0037]進(jìn)一步,下載任務(wù)分配線程在查看到空閑線程列表中沒有空閑的下載線程時,判斷當(dāng)前下載線程的總數(shù)量是否達(dá)到線程數(shù)量閾值,如果未達(dá)到,則創(chuàng)建下載線程處理取出的直播流下載任務(wù)。
[0038]進(jìn)一步,下載任務(wù)分配線程如果判斷當(dāng)前下載線程的總數(shù)量達(dá)到線程數(shù)量閾值,則將取出的下載任務(wù)加入等待隊列,等待有直播流下載任務(wù)完成后,分配空閑的下載線程進(jìn)行處理。
[0039]下載任務(wù)分配線程在查看到空閑線程列表中不存在空閑的下載線程,并且判斷當(dāng)前下載線程的總數(shù)量達(dá)到限定的線程數(shù)量閾值時,則需要等待其它下載任務(wù)完成,等待空閑的下載線程處理該任務(wù)。
[0040]進(jìn)一步,下載任務(wù)分配線程在初始階段不存在直播流下載任務(wù)的情況下,并不創(chuàng)建下載線程,在存在直播流下載任務(wù),并且無下載線程的情況下,才創(chuàng)建下載線程。
[0041]下載線程并不是在服務(wù)器一啟動的初始階段就創(chuàng)建多個,而是在有下載任務(wù)后才由下載任務(wù)分配線程創(chuàng)建。
[0042]下載線程的數(shù)量限制與服務(wù)器硬件相關(guān),可根據(jù)服務(wù)器硬件進(jìn)行配置。
[0043]下載線程的創(chuàng)建規(guī)則如下:
[0044]1)服務(wù)器啟動后,無下載任務(wù),下載線程