前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TRTC硬编解码绿屏/黑屏之编码器分辨率支持

TRTC硬编解码绿屏/黑屏之编码器分辨率支持

原创
作者头像
Sumn
发布2022-01-18 10:57:42
9100
发布2022-01-18 10:57:42
举报
文章被收录于专栏:TRTC_DemoTRTC_Demo

背景

在一些低端机型,或者定制设备上,会出现硬编硬解黑屏/绿屏,有一种情况就是因为设备自身的编解码器分辨率不支持设置的分辨率导致的,此时需要去获取下设备的支持分辨率来验证是否是该问题导致的

如何获取当前手机支持的解码最大分辨率

每个手机下都有这样一个文件,/system/etc/media_codecs.xml (your path)。这是一个xml文件,可以直接看到MediaCodecs–>Decoders节点下的各个视频格式的支持情况,以**华为荣耀7x Android 8.0 **为例

获取解码视频的宽和高

代码语言:javascript
复制
//获得音视频的配置器MediaFormat
private static MediaFormat getFormat(String path,boolean isVideo) {
	try {
	     MediaExtractor mediaExtractor = new MediaExtractor();
	     mediaExtractor.setDataSource(path);
	     int trackCount = mediaExtractor.getTrackCount();
	     for (int i = 0; i < trackCount; i++) {
	         MediaFormat trackFormat = mediaExtractor.getTrackFormat(i);
	         if (trackFormat.getString(MediaFormat.KEY_MIME).startsWith(isVideo ? "video/" :"audio/")) {
	             return mediaExtractor.getTrackFormat(i);
	         }
	     }
	 } catch (IOException e) {
	     e.printStackTrace();
	 }
	 return null;
}
//单独获取宽高
MediaFormat newFormat =  getFormat(path,true);
int videoWidth = newFormat.getInteger(MediaFormat.KEY_WIDTH);
int videoHeight = newFormat.getInteger(MediaFormat.KEY_HEIGHT);
//结合编码时获取宽高
MediaFormat newFormat = mMediaCodec.getOutputFormat();
int videoWidth = newFormat.getInteger(MediaFormat.KEY_WIDTH);
int videoHeight = newFormat.getInteger(MediaFormat.KEY_HEIGHT);

如果证实了确实是不支持的分辨率,可以告知系统层去处理该问题

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 如何获取当前手机支持的解码最大分辨率
  • 获取解码视频的宽和高
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档