閱讀268 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【短視頻SDK】Android如何使用硬編硬解?

為什麼要使用硬編硬解?

音頻和視頻編碼時有兩種選擇:軟件編碼和硬件編碼。軟編的效果更好但會占用更多的資源,硬編的效果差一些但占用的資源較少.
同樣解碼也有兩種選擇:硬件解碼和軟件解碼.硬解的效果相比軟解的速度有更大的優勢.由於Android設備和係統的多樣性,並非每一台設備都直接支持硬編,硬解,正確的使用硬編、硬解可以極大的提高性能.

內部硬編硬解策略?

短視頻SDK關於硬編硬解的默認策略是:默認開啟硬編,硬解,因為Android的多樣性問題為提升阿裏雲短視頻SDK使用硬編硬解的成功率和覆蓋率,阿裏雲短視頻SDK依靠阿裏機型庫top 300的Android機型進行測試之後,收集形成了內部的硬編黑名單和硬解白名單.如果硬編或者硬解失敗了,就會轉為軟編和軟解.

接口說明

為了方便用戶使用,阿裏雲短視頻SDK提供接口來擴展支持硬編黑名單和硬解白名單.關鍵接口:

    /**
     * 添加硬解碼器白名單,model和versions的順序必須對應起來
     * 白名單中的機型將使用硬解,白名單外的機型將使用軟解
     * @param models 機型model
     * @param versions 機型係統版本號,如果不需要適配到版本號,則version填0即可
     */
    public static void decoderAdaptiveList(String[] models, int[] versions);

    /**
     * 添加硬編黑名單,model和versions的順序必須對應起來
     * 黑名單內的機型將使用軟編,黑名單外的機型都使用硬編
     * @param models 機型model
     * @param versions
     */
    public static void encoderAdaptiveList(String[] models,int[] versions);

當然雖然默認是硬編硬解,開發者依然可以根據業務設置為軟編軟解,SDK提供了強製設置硬編、硬解的接口:

    /**
     * 設置強製開啟硬解,建議在開發階段debug的時候可以強製開啟硬解,正式環境下不建議強製開啟。
     * 開發者可以在開發階段強製開啟硬解,適配測試後,將通過的機型使用{@link NativeAdaptiveUtil#decoderAdaptiveList(String[], int[])}接口
     * 添加到白名單中。
     * @param hwDecoderEnable
     */
    public static void setHWDecoderEnable(boolean hwDecoderEnable);

        /**
     * 設置強製開啟硬編,建議在開發階段debug的時候可以強製開啟硬編,正式環境下不建議強製開啟。
     * 開發者可以在開發階段強製開啟硬編,適配測試後,將不通過的機型使用{@link NativeAdaptiveUtil#encoderAdaptiveList(String[], int[])}接口
     * 添加到黑名單中。
     * @param hwEncoderEnable
     */
    public static void setHWEncoderEnable(boolean hwEncoderEnable);

擴展白名單

如果您發現您的機器不支持硬編,或者您發現您的機器支持硬解,歡迎聯係我們告知我們。我們會在1~2個工作日內將您的信息加入硬編黑名單和硬解白名單中.您需要提供如下信息:
發送至:videosdk@service.aliyun.com 郵件主題:擴展硬編黑名單/硬解白名單.

手機型號:通過Build.MODEL來獲取
手機係統版本:通過Build.VERSION.RELEASE來獲取
是否支持硬編:XXX
是否支持硬解:通過接口isDeviceDecoderEnable來獲得是否支持硬解

最後更新:2017-09-20 15:32:55

  上一篇:go  《VMware Virtual SAN權威指南》一3.9.1 vSphere HA通信網絡
  下一篇:go  Facebook開源PyTorch版本fairseq翻譯模型,訓練速度提高50%