【短视频SDK】Android如何使用硬编硬解?

简介: 由于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来获得是否支持硬解

本文为【问答合集】阿里视频云常见技术问题汇总——内含技术文档40+ 持续更新中 系列文章之一,如果本文还不能解决你的问题可以在汇总合集中查看,有任何问题也欢迎回复,谢谢.

目录
相关文章
|
3月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
83 0
|
13天前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
42 1
|
23天前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
43 7
|
3月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
166 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
3月前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
3月前
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
38 0
|
3月前
|
Java API 开发工具
Android项目架构设计问题之为SDK添加新的回调支持如何解决
Android项目架构设计问题之为SDK添加新的回调支持如何解决
24 0
|
6月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
1881 0
|
3月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
304 4