查看机器支持的编解码和HDR
文章目录
有的时候我们想知道机器支持哪些编解码,HDR视频又支持哪些?当然市面上有很多app可以辅助查看,但是作为一个合格的码农,从代码上我们应该怎么去获取这些信息呢,下面我们就来看看。
支持的编解码获取
废话不多说,直接上代码:
MediaCodecList list = new MediaCodecList(MediaCodecList.REGULAR_CODECS);
MediaCodecInfo[] supportCodes = list.getCodecInfos();
// 解码器列表
for (MediaCodecInfo codec : supportCodes) {
if (!codec.isEncoder()) {
String name = codec.getName();
if (name.startsWith("OMX.google")) {
Log.i(TAG, "软解->" + name);
}
}
}
for (MediaCodecInfo codec : supportCodes) {
if (!codec.isEncoder()) {
String name = codec.getName();
if (!name.startsWith("OMX.google")) {
Log.i(TAG, "硬解->" + name);
}
}
}
// 编码器列表
for (MediaCodecInfo codec : supportCodes) {
if (codec.isEncoder()) {
String name = codec.getName();
if (name.startsWith("OMX.google")) {
Log.i(TAG, "软编->" + name);
}
}
}
for (MediaCodecInfo codec : supportCodes) {
if (codec.isEncoder()) {
String name = codec.getName();
if (!name.startsWith("OMX.google")) {
Log.i(TAG, "硬编->" + name);
}
}
}
以上就是编解码支持的列表,赶快去试试吧。
HDR支持获取
HDR 相关的信息在 Display 类中,可以先看看里面都有哪些定义?
/**
* Dolby Vision high dynamic range (HDR) display.
*/
public static final int HDR_TYPE_DOLBY_VISION = 1;
/**
* HDR10 display.
*/
public static final int HDR_TYPE_HDR10 = 2;
/**
* Hybrid Log-Gamma HDR display.
*/
public static final int HDR_TYPE_HLG = 3;
/**
* HDR10+ display.
*/
public static final int HDR_TYPE_HDR10_PLUS = 4;
在里面可以看到 HDR10、DOLBY VISION、HDR10+、HLG 这 4 个,那如何去查看本机器支持哪些呢?不要着急,咱们马上上代码。
int[] getSupportedHdrTypes(Context context) {
int[] types = new int[0];
Display display;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
display = context.getDisplay();
} else {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = wm.getDefaultDisplay();
}
int[] types = display.getHdrCapabilities().getSupportedHdrTypes();
for (int t :
types) {
Log.i(TAG, "支持的HDR TYPE ->" + t);
}
return types;
}
参考官方文档说明:https://source.android.com/devices/tech/display/hdr
查看hdr的app:https://play.google.com/store/apps/details?id=com.miauhacks.hdrcheck&hl=en_IN&gl=US
以上就是 Android 获取编解码支持列表和 HDR支持列表的方式了。
文章作者 Brook
上次更新 2022-05-17