本發(fā)明涉及信息技術領域,尤其涉及一種播放多媒體文件的方法及裝置。
背景技術:
多媒體文件的封裝格式包括MP4、MOV、FLV、AVI、MKV、RMVB和F4V等。針對不同的封裝格式,其編碼規(guī)則和文件封裝協議存在諸多不同。
多媒體文件通常按照不同的封裝協議進行基本媒體單元的封裝。例如,FLV文件由基礎FLV標識(0x46 0x4C 0x56)開頭,后跟元數據,元數據中包括是否含有音頻的信息、是否含有視頻的信息、關鍵幀信息以及視頻幀的寬高等必要的多媒體文件信息,如圖1所示。再例如,MP4文件由多個容器(box)進行排列封裝,并通過各個容器表示該文件的基礎信息,如圖2所示。結合圖1和圖2可知,不同的封裝協議之間存在著巨大的差異,且?guī)缀趺糠N封裝格式都擁有其自身的顯著特點。
多媒體文件的編碼格式包括H264、RV30、RV40、H263和AAC(Advanced Audio Coding,高級音頻編碼)等。文件編碼格式出現在文件封裝協議的下層,由封裝協議頭Header所包裹。Header字段明確指出該多媒體文件由何種編碼協議進行編碼壓縮,如圖3所示。
現有的多媒體文件的播放模式主要分為完全軟解模式、完全硬解模式和混合解碼模式。以Android操作系統(tǒng)為例,完全軟解模式由NDK(Native Development Kit,原生開發(fā)工具包)層獨立進行解碼和渲染處理;完全硬解模式由SDK(Software Development Kit,軟件開發(fā)工具包)層獨立進行解碼和渲染處理;混合解碼模式由SDK層與NDK層共同完成解碼和渲染處理。其中,NDK層為Android框架底層,位于Android系統(tǒng)的核心層位置,通常以C語言或者C++語言編寫,更接近系統(tǒng)內核層;SDK層為Android框架上層,位于Android系統(tǒng)頂層,通常使用Java語言開發(fā),處理UI(User Interface,用戶界面)和Android標準系統(tǒng)API(Application Programming Interface,應用程序編程接口)等。
現有的播放器在播放多媒體文件時,通常根據多媒體文件的后綴名選擇播放模式?,F有的播放器播放多媒體文件具有以下共同點:第一,無論該多媒體文件采用何種格式,默認播放模式為完全軟解模式,從而占用大量系統(tǒng)內存和CPU(Central Processing Unit,中央處理器)等資源,導致對設備產生了較高的負載;第二,播放模式的切換均為用戶手動切換,導致操作便捷性較低;第三,如果用戶手動選擇的播放模式不被該多媒體文件所支持,則將提示無法播放,并直接退出播放界面,從而影響用戶體驗。
技術實現要素:
技術問題
有鑒于此,本發(fā)明要解決的技術問題是,現有的多媒體文件的播放技術占用大量的系統(tǒng)內存和CPU資源,且切換播放模式的操作便捷性較低。
解決方案
為了解決上述技術問題,根據本發(fā)明的一實施例,提供了一種播放多媒體文件的方法,包括:
在接收到播放多媒體文件的請求信息的情況下,獲取待播放的所述多媒體文件;
獲取所述多媒體文件對應的指定信息,所述指定信息包括所述多媒體文件的封裝格式;
在所述請求信息未攜帶指定播放模式,或者所述指定播放模式不能用于播放所述多媒體文件的情況下,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,其中,所述最優(yōu)播放模式為硬件解碼模式、軟件解碼模式或者混合解碼模式;
采用所述最優(yōu)播放模式播放所述多媒體文件。
對于上述方法,在一種可能的實現方式中,在獲取所述多媒體文件對應的指定信息之后,所述方法還包括:
在所述請求信息攜帶所述指定播放模式,且所述指定播放模式能夠用于播放所述多媒體文件的情況下,采用所述指定播放模式播放所述多媒體文件。
對于上述方法,在一種可能的實現方式中,所述指定信息還包括以下至少一項:
所述多媒體文件的編碼格式、所述多媒體文件的擴展名和播放所述多媒體文件的操作系統(tǒng)信息。
對于上述方法,在一種可能的實現方式中,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,包括:
在所述封裝格式屬于第一預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述封裝格式屬于第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述方法,在一種可能的實現方式中,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,包括:
在所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述方法,在一種可能的實現方式中,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,包括:
在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述方法,在一種可能的實現方式中,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,包括:
在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合,所述編碼格式屬于預設編碼格式集合且所述操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合,所述編碼格式屬于所述預設編碼格式集合且所述操作系統(tǒng)信息屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,所述編碼格式不屬于所述預設編碼格式集合,或者所述操作系統(tǒng)信息不屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
為了解決上述技術問題,根據本發(fā)明的另一實施例,提供了一種播放多媒體文件的裝置,包括:
多媒體文件獲取模塊,用于在接收到播放多媒體文件的請求信息的情況下,獲取待播放的所述多媒體文件;
指定信息獲取模塊,用于獲取所述多媒體文件對應的指定信息,所述指定信息包括所述多媒體文件的封裝格式;
最優(yōu)播放模式確定模塊,用于在所述請求信息未攜帶指定播放模式,或者所述指定播放模式不能用于播放所述多媒體文件的情況下,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,其中,所述最優(yōu)播放模式為硬件解碼模式、軟件解碼模式或者混合解碼模式;
第一播放模塊,用于采用所述最優(yōu)播放模式播放所述多媒體文件。
對于上述裝置,在一種可能的實現方式中,所述裝置還包括:
第二播放模塊,用于在所述請求信息攜帶所述指定播放模式,且所述指定播放模式能夠用于播放所述多媒體文件的情況下,采用所述指定播放模式播放所述多媒體文件。
對于上述裝置,在一種可能的實現方式中,所述指定信息還包括以下至少一項:
所述多媒體文件的編碼格式、所述多媒體文件的擴展名和播放所述多媒體文件的操作系統(tǒng)信息。
對于上述裝置,在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊包括第一最優(yōu)播放模式確定子模塊,所述第一最優(yōu)播放模式確定子模塊具體用于:
在所述封裝格式屬于第一預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述封裝格式屬于第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述裝置,在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊包括第二最優(yōu)播放模式確定子模塊,所述第二最優(yōu)播放模式確定子模塊具體用于:
在所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述裝置,在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊包括第三最優(yōu)播放模式確定子模塊,所述第三最優(yōu)播放模式確定子模塊具體用于:
在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
對于上述裝置,在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊包括第四最優(yōu)播放模式確定子模塊,所述第四最優(yōu)播放模式確定子模塊具體用于:
在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合,所述編碼格式屬于預設編碼格式集合且所述操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;
在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合,所述編碼格式屬于所述預設編碼格式集合且所述操作系統(tǒng)信息屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;
在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,所述編碼格式不屬于所述預設編碼格式集合,或者所述操作系統(tǒng)信息不屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
有益效果
通過在接收到播放多媒體文件的請求信息的情況下,若請求信息未攜帶指定播放模式,或者請求信息中攜帶的指定播放模式不能用于播放該多媒體文件,則根據該多媒體文件對應的指定信息確定該多媒體文件對應的最優(yōu)播放模式,并采用該最優(yōu)播放模式播放該多媒體文件,根據本發(fā)明實施例的播放多媒體文件的方法及裝置能夠從硬件解碼模式、軟件解碼模式和混合解碼模式中自動為用戶選擇最優(yōu)播放模式,由此在硬件解碼模式或者混合解碼模式能夠用于播放用戶請求播放的多媒體文件時,采用硬件解碼模式或者混合解碼模式替代軟件解碼模式,從而能夠降低系統(tǒng)內存開銷、設備負載和CPU占用率,并且在用戶手動選擇的指定播放模式不能用于播放該多媒體文件時,自動為用戶選擇能夠用于播放該多媒體文件的播放模式,從而大大提高了用戶體驗。
根據下面參考附圖對示例性實施例的詳細說明,本發(fā)明的其它特征及方面將變得清楚。
附圖說明
包含在說明書中并且構成說明書的一部分的附圖與說明書一起示出了本發(fā)明的示例性實施例、特征和方面,并且用于解釋本發(fā)明的原理。
圖1示出了FLV文件的封裝格式的示意圖;
圖2示出了MP4文件的封裝格式的示意圖;
圖3示出了Header字段的示意圖;
圖4示出根據本發(fā)明一實施例的播放多媒體文件的方法的實現流程圖;
圖5示出根據本發(fā)明一實施例的播放多媒體文件的方法的一示例性的實現流程圖;
圖6示出根據本發(fā)明另一實施例的播放多媒體文件的裝置的結構框圖;
圖7示出根據本發(fā)明另一實施例的播放多媒體文件的裝置的一示例性的結構框圖;
圖8示出了本發(fā)明的另一個實施例的一種播放多媒體文件的設備的結構框圖。
具體實施方式
以下將參考附圖詳細說明本發(fā)明的各種示例性實施例、特征和方面。附圖中相同的附圖標記表示功能相同或相似的元件。盡管在附圖中示出了實施例的各種方面,但是除非特別指出,不必按比例繪制附圖。
在這里專用的詞“示例性”意為“用作例子、實施例或說明性”。這里作為“示例性”所說明的任何實施例不必解釋為優(yōu)于或好于其它實施例。
另外,為了更好的說明本發(fā)明,在下文的具體實施方式中給出了眾多的具體細節(jié)。本領域技術人員應當理解,沒有某些具體細節(jié),本發(fā)明同樣可以實施。在一些實例中,對于本領域技術人員熟知的方法、手段、元件和電路未作詳細描述,以便于凸顯本發(fā)明的主旨。
實施例1
圖4示出根據本發(fā)明一實施例的播放多媒體文件的方法的實現流程圖。如圖4所示,該方法主要包括:
在步驟S401中,在接收到播放多媒體文件的請求信息的情況下,獲取待播放的多媒體文件。
在步驟S402中,獲取該多媒體文件對應的指定信息,該指定信息包括該多媒體文件的封裝格式。
其中,多媒體文件的封裝格式可以從多媒體文件的數據頭中獲取。
在步驟S403中,在請求信息未攜帶指定播放模式,或者指定播放模式不能用于播放該多媒體文件的情況下,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,其中,最優(yōu)播放模式為硬件解碼模式、軟件解碼模式或者混合解碼模式。
在步驟S404中,采用最優(yōu)播放模式播放該多媒體文件。
作為本發(fā)明實施例的一個示例,在最優(yōu)播放模式為硬件解碼模式的情況下,采用最優(yōu)播放模式播放該多媒體文件包括:對硬件解碼器進行初始化,采用硬件解碼器進行解碼,采用硬件渲染器進行渲染。以Android操作系統(tǒng)為例,硬件解碼模式可以調用Android的系統(tǒng)播放器的API來進行播放。若在Android操作系統(tǒng)上采用硬件解碼模式,則由SDK層獨立進行解碼和渲染,由此節(jié)約NDK層的代碼運行開銷。硬件解碼模式由于舍棄了框架層的計算,從而降低了系統(tǒng)內存使用量。
作為本發(fā)明實施例的另一個示例,在最優(yōu)播放模式為軟件解碼模式的情況下,采用最優(yōu)播放模式播放該多媒體文件包括:對軟件解碼器進行初始化,采用軟件解碼器進行解碼,采用軟件渲染器進行渲染。
作為本發(fā)明實施例的另一個示例,在最優(yōu)播放模式為混合解碼模式的情況下,采用最優(yōu)播放模式播放該多媒體文件包括:對硬件解碼器和軟件解碼器進行初始化,采用硬件解碼器和軟件解碼器進行解碼,采用軟件渲染器進行渲染。混合解碼模式可以采用工廠模式作為內部接口,從而使使用者與實現者低耦合。
圖5示出根據本發(fā)明一實施例的播放多媒體文件的方法的一示例性的實現流程圖。如圖5所示,該方法主要包括:
在步驟S501中,在接收到播放多媒體文件的請求信息的情況下,獲取待播放的該多媒體文件。
在步驟S502中,獲取該多媒體文件對應的指定信息,指定信息包括該多媒體文件的封裝格式。
在步驟S503中,在請求信息未攜帶指定播放模式,或者指定播放模式不能用于播放該多媒體文件的情況下,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,其中,最優(yōu)播放模式為硬件解碼模式、軟件解碼模式或者混合解碼模式。
在步驟S504中,采用最優(yōu)播放模式播放該多媒體文件。
在步驟S505中,在請求信息攜帶指定播放模式,且指定播放模式能夠用于播放該多媒體文件的情況下,采用指定播放模式播放該多媒體文件。
作為本發(fā)明實施例的一個示例,在接收到播放多媒體文件的請求信息的情況下,判斷該請求信息中是否攜帶指定播放模式。該指定播放模式可以為用戶指定的播放模式。該指定播放模式可以為硬件解碼模式、軟件解碼模式或者混合解碼模式。若請求信息中攜帶指定播放模式,則根據該多媒體文件對應的指定信息判斷該指定播放模式是否能用于播放該多媒體文件。若該指定播放模式能夠用于播放該多媒體文件,則采用指定播放模式播放該多媒體文件。若請求信息中攜帶的指定播放模式不能用于播放該多媒體文件,則通過消息機制通知SDK層,SDK接收到消息后,重新傳入矯正后的參數給NDK層,再自動為用戶選擇最優(yōu)播放模式,并采用最優(yōu)播放模式播放該多媒體文件。在該示例中,雖然用戶選擇的指定播放模式不能用于播放該多媒體文件,但該示例為用戶主動選擇能夠用于播放該多媒體文件的播放模式,從而不影響用戶的播放體驗。
其中,根據該多媒體文件對應的指定信息判斷該指定播放模式是否能用于播放該多媒體文件,可以為:若指定播放模式為軟件解碼模式,則判定該指定播放模式能夠用于播放該多媒體文件;若指定播放模式為硬件解碼模式,且該多媒體文件的封裝格式屬于第一預設封裝格式集合,則判定該指定播放模式能夠用于播放該多媒體文件;若指定播放模式為硬件解碼模式,且該多媒體文件的封裝格式不屬于第一預設封裝格式集合,則判定該指定播放模式不能用于播放該多媒體文件;若該指定播放模式為混合解碼模式,且該多媒體文件的封裝格式屬于第一預設封裝格式集合或者第二預設封裝格式集合,則判定該指定播放模式能夠用于播放該多媒體文件;若該指定播放模式為混合解碼模式,且該多媒體文件的封裝格式既不屬于第一預設封裝格式集合也不屬于第二預設封裝格式集合,則判定該指定播放模式不能用于播放該多媒體文件。
根據該多媒體文件對應的指定信息判斷該指定播放模式是否能用于播放該多媒體文件,還可以為:若指定播放模式為軟件解碼模式,則判定該指定播放模式能夠用于播放該多媒體文件;若指定播放模式為硬件解碼模式,該多媒體文件的擴展名屬于預設擴展名集合,封裝格式屬于第一預設封裝格式集合,編碼格式屬于預設編碼格式集合且操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合,則判定該指定播放模式能夠用于播放該多媒體文件;若指定播放模式為硬件解碼模式,但以下至少一項不滿足,則判定該指定播放模式不能用于播放該多媒體文件:擴展名屬于預設擴展名集合,封裝格式屬于第一預設封裝格式集合,編碼格式屬于預設編碼格式集合和操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合;若指定播放模式為混合解碼模式,該多媒體文件的擴展名屬于預設擴展名集合,封裝格式屬于第一預設封裝格式集合或者第二預設封裝格式集合,編碼格式屬于預設編碼格式集合且操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合,則判定該指定播放模式能夠用于播放該多媒體文件;若指定播放模式為混合解碼模式,但以下至少一項不滿足,則判定該指定播放模式不能用于播放該多媒體文件:擴展名屬于預設擴展名集合,封裝格式屬于第一預設封裝格式集合或者第二預設封裝格式集合,編碼格式屬于預設編碼格式集合且操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合。
需要說明的是,在根據該多媒體文件對應的指定信息判斷該指定播放模式是否能用于播放該多媒體文件時,指定信息包括多媒體文件的封裝格式,還可以包括該多媒體文件的編碼格式、該多媒體文件的擴展名和播放該多媒體文件的操作系統(tǒng)信息中的至少一項。為了便于說明,在此不再在指定信息所包含的信息不同的情況下,分別對根據該多媒體文件對應的指定信息判斷該指定播放模式是否能用于播放該多媒體文件的具體判斷過程進行贅述。
在一種可能的實現方式中,指定信息還包括以下至少一項:該多媒體文件的編碼格式、該多媒體文件的擴展名和播放該多媒體文件的操作系統(tǒng)信息。其中,多媒體文件的編碼格式可以從多媒體文件的metadata(元數據)中獲取。
在一種可能的實現方式中,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,包括:在封裝格式屬于第一預設封裝格式集合的情況下,確定最優(yōu)播放模式為硬件解碼模式;在封裝格式屬于第二預設封裝格式集合的情況下,確定最優(yōu)播放模式為混合解碼模式;在封裝格式既不屬于第一預設封裝格式集合也不屬于第二預設封裝格式集合的情況下,確定最優(yōu)播放模式為軟件解碼模式。其中,第一預設封裝格式集合可以包括MP4和MOV;第二預設封裝格式集合可以包括FLV、AVI和MKV;第一預設封裝格式集合和第二預設封裝格式集合均不包括RMVB。
在一種可能的實現方式中,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,包括:在封裝格式屬于第一預設封裝格式集合且編碼格式屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為硬件解碼模式;在封裝格式屬于第二預設封裝格式集合且編碼格式屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為混合解碼模式;在封裝格式既不屬于第一預設封裝格式集合也不屬于第二預設封裝格式集合,或者編碼格式不屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為軟件解碼模式。其中,預設編碼格式集合可以包括H264。
在一種可能的實現方式中,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,包括:在擴展名屬于預設擴展名集合、封裝格式屬于第一預設封裝格式集合且編碼格式屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為硬件解碼模式;在擴展名屬于預設擴展名集合、封裝格式屬于第二預設封裝格式集合且編碼格式屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為混合解碼模式;在擴展名不屬于預設擴展名集合,封裝格式既不屬于第一預設封裝格式集合也不屬于第二預設封裝格式集合,或者編碼格式不屬于預設編碼格式集合的情況下,確定最優(yōu)播放模式為軟件解碼模式。其中,預設擴展名集合可以包括avi和mkv。
在一種可能的實現方式中,根據指定信息確定該多媒體文件對應的最優(yōu)播放模式,包括:在擴展名屬于預設擴展名集合、封裝格式屬于第一預設封裝格式集合,編碼格式屬于預設編碼格式集合且操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合的情況下,確定最優(yōu)播放模式為硬件解碼模式;在擴展名屬于預設擴展名集合、封裝格式屬于第二預設封裝格式集合,編碼格式屬于預設編碼格式集合且操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合的情況下,確定最優(yōu)播放模式為混合解碼模式;在擴展名不屬于預設擴展名集合,封裝格式既不屬于第一預設封裝格式集合也不屬于第二預設封裝格式集合,編碼格式不屬于預設編碼格式集合,或者操作系統(tǒng)信息不屬于預設操作系統(tǒng)信息集合的情況下,確定最優(yōu)播放模式為軟件解碼模式。其中,預設操作系統(tǒng)信息集合可以包括Android 4.0以上的操作系統(tǒng)。
需要說明的是,在本發(fā)明實施例中,指定信息包括多媒體文件的封裝格式,還可以包括該多媒體文件的編碼格式、該多媒體文件的擴展名和播放該多媒體文件的操作系統(tǒng)信息中的至少一項。為了便于說明,在此不再在指定信息所包含的信息不同的情況下,分別對根據指定信息確定該多媒體文件對應的最優(yōu)播放模式的具體過程進行贅述。
這樣,通過在接收到播放多媒體文件的請求信息的情況下,若請求信息未攜帶指定播放模式,或者請求信息中攜帶的指定播放模式不能用于播放該多媒體文件,則根據該多媒體文件對應的指定信息確定該多媒體文件對應的最優(yōu)播放模式,并采用該最優(yōu)播放模式播放該多媒體文件,根據本發(fā)明實施例的播放多媒體文件的方法能夠從硬件解碼模式、軟件解碼模式和混合解碼模式中自動為用戶選擇最優(yōu)播放模式,由此在硬件解碼模式或者混合解碼模式能夠用于播放用戶請求播放的多媒體文件時,采用硬件解碼模式或者混合解碼模式替代軟件解碼模式,從而能夠降低系統(tǒng)內存開銷、設備負載和CPU占用率,并且在用戶手動選擇的指定播放模式不能用于播放該多媒體文件時,自動為用戶選擇能夠用于播放該多媒體文件的播放模式,從而大大提高了用戶體驗。
實施例2
圖6示出根據本發(fā)明另一實施例的播放多媒體文件的裝置的結構框圖。該裝置可以用于運行圖4或圖5所示的播放多媒體文件的方法。為了便于說明,僅示出了與本發(fā)明實施例相關的部分。
如圖6所示,該裝置包括:多媒體文件獲取模塊61,用于在接收到播放多媒體文件的請求信息的情況下,獲取待播放的所述多媒體文件;指定信息獲取模塊62,用于獲取所述多媒體文件對應的指定信息,所述指定信息包括所述多媒體文件的封裝格式;最優(yōu)播放模式確定模塊63,用于在所述請求信息未攜帶指定播放模式,或者所述指定播放模式不能用于播放所述多媒體文件的情況下,根據所述指定信息確定所述多媒體文件對應的最優(yōu)播放模式,其中,所述最優(yōu)播放模式為硬件解碼模式、軟件解碼模式或者混合解碼模式;第一播放模塊64,用于采用所述最優(yōu)播放模式播放所述多媒體文件。
圖7示出根據本發(fā)明另一實施例的播放多媒體文件的裝置的一示例性的結構框圖。圖7中標號與圖6相同的組件具有相同的功能,為簡明起見,省略對這些組件的詳細說明。為了便于說明,僅示出了與本發(fā)明實施例相關的部分。如圖7所示:
在一種可能的實現方式中,所述裝置還包括:第二播放模塊65,用于在所述請求信息攜帶所述指定播放模式,且所述指定播放模式能夠用于播放所述多媒體文件的情況下,采用所述指定播放模式播放所述多媒體文件。
在一種可能的實現方式中,所述指定信息還包括以下至少一項:所述多媒體文件的編碼格式、所述多媒體文件的擴展名和播放所述多媒體文件的操作系統(tǒng)信息。
在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊63包括第一最優(yōu)播放模式確定子模塊631,所述第一最優(yōu)播放模式確定子模塊631具體用于:在所述封裝格式屬于第一預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;在所述封裝格式屬于第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊63包括第二最優(yōu)播放模式確定子模塊632,所述第二最優(yōu)播放模式確定子模塊632具體用于:在所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;在所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;在所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊63包括第三最優(yōu)播放模式確定子模塊633,所述第三最優(yōu)播放模式確定子模塊633具體用于:在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合且所述編碼格式屬于預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合且所述編碼格式屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,或者所述編碼格式不屬于所述預設編碼格式集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
在一種可能的實現方式中,所述最優(yōu)播放模式確定模塊63包括第四最優(yōu)播放模式確定子模塊634,所述第四最優(yōu)播放模式確定子模塊634具體用于:在所述擴展名屬于預設擴展名集合、所述封裝格式屬于第一預設封裝格式集合,所述編碼格式屬于預設編碼格式集合且所述操作系統(tǒng)信息屬于預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為硬件解碼模式;在所述擴展名屬于所述預設擴展名集合、所述封裝格式屬于第二預設封裝格式集合,所述編碼格式屬于所述預設編碼格式集合且所述操作系統(tǒng)信息屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為混合解碼模式;在所述擴展名不屬于所述預設擴展名集合,所述封裝格式既不屬于所述第一預設封裝格式集合也不屬于所述第二預設封裝格式集合,所述編碼格式不屬于所述預設編碼格式集合,或者所述操作系統(tǒng)信息不屬于所述預設操作系統(tǒng)信息集合的情況下,確定所述最優(yōu)播放模式為軟件解碼模式。
需要說明的是,這樣,通過在接收到播放多媒體文件的請求信息的情況下,若請求信息未攜帶指定播放模式,或者請求信息中攜帶的指定播放模式不能用于播放該多媒體文件,則根據該多媒體文件對應的指定信息確定該多媒體文件對應的最優(yōu)播放模式,并采用該最優(yōu)播放模式播放該多媒體文件,根據本發(fā)明實施例的播放多媒體文件的裝置能夠從硬件解碼模式、軟件解碼模式和混合解碼模式中自動為用戶選擇最優(yōu)播放模式,由此在硬件解碼模式或者混合解碼模式能夠用于播放用戶請求播放的多媒體文件時,采用硬件解碼模式或者混合解碼模式替代軟件解碼模式,從而能夠降低系統(tǒng)內存開銷、設備負載和CPU占用率,并且在用戶手動選擇的指定播放模式不能用于播放該多媒體文件時,自動為用戶選擇能夠用于播放該多媒體文件的播放模式,從而大大提高了用戶體驗。
實施例3
圖8示出了本發(fā)明的另一個實施例的一種播放多媒體文件的設備的結構框圖。所述播放多媒體文件的設備1100可以是具備計算能力的主機服務器、個人計算機PC、或者可攜帶的便攜式計算機或終端等。本發(fā)明具體實施例并不對計算節(jié)點的具體實現做限定。
所述播放多媒體文件的設備1100包括處理器(processor)1110、通信接口(Communications Interface)1120、存儲器(memory)1130和總線1140。其中,處理器1110、通信接口1120、以及存儲器1130通過總線1140完成相互間的通信。
通信接口1120用于與網絡設備通信,其中網絡設備包括例如虛擬機管理中心、共享存儲等。
處理器1110用于執(zhí)行程序。處理器1110可能是一個中央處理器CPU,或者是專用集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
存儲器1130用于存放文件。存儲器1130可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器1130也可以是存儲器陣列。存儲器1130還可能被分塊,并且所述塊可按一定的規(guī)則組合成虛擬卷。
在一種可能的實施方式中,上述程序可為包括計算機操作指令的程序代碼。該程序具體可用于:實現實施例1中各步驟的操作。
本領域普通技術人員可以意識到,本文所描述的實施例中的各示例性單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現。這些功能究竟以硬件還是軟件形式來實現,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以針對特定的應用選擇不同的方法來實現所描述的功能,但是這種實現不應認為超出本發(fā)明的范圍。
如果以計算機軟件的形式來實現所述功能并作為獨立的產品銷售或使用時,則在一定程度上可認為本發(fā)明的技術方案的全部或部分(例如對現有技術做出貢獻的部分)是以計算機軟件產品的形式體現的。該計算機軟件產品通常存儲在計算機可讀取的非易失性存儲介質中,包括若干指令用以使得計算機設備(可以是個人計算機、服務器、或者網絡設備等)執(zhí)行本發(fā)明各實施例方法的全部或部分步驟。而前述的存儲介質包括U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以所述權利要求的保護范圍為準。