gpt4 book ai didi

android - 如何获取 Android 设备的 CamcorderProfile.videoBitRate?

转载 作者:可可西里 更新时间:2023-11-01 19:06:57 35 4
gpt4 key购买 nike

我的应用程序使用 HLS 从服务器流式传输视频,但是当我从服务器请求 HLS 流时,我需要将设备可以处理的最大视频比特率传递给它。在Android API guides它说“设备的可用视频录制配置文件可以用作媒体播放功能的代理”,但是当我尝试检索设备后置摄像头的 videoBitRate 时,无论设备如何,它总是返回 12Mb/s( Galaxy Nexus、Galaxy Tab Plus 7"、Galaxy Tab 8.9),尽管它们有 3 个不同的 GPU(PowerVR SGX540、Mali-400 MP、Tegra 250 T20)。这是我的代码,我做错了什么吗?

CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
targetVideoBitRate = camcorderProfile.videoBitRate;

如果我在 Galaxy Tab Plus 上尝试这个:

boolean hasProfile = CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_HIGH);

它返回 True,尽管 QUALITY_HIGH 用于 1080p 录制并且规范说它只能以 720p 录制。

最佳答案

看来我已经找到了我自己问题的答案。

我没有阅读 documentation非常接近,QUALITY_HIGH 不等同于 1080p,它只是一种指定设备支持的最高质量配置文件的方式。因此,根据定义,CamcorderProfile.hasProfile( CamcorderProfile.QUALITY_HIGH ) 始终为真。我应该写这样的东西:

public enum mVideoQuality { 
FullHD, HD, SD
}
mVideoQuality mMaxVideoQuality;
int mTargetVideoBitRate;

private void initVideoQuality {
if ( CamcorderProfile.hasProfile( CamcorderProfile.QUALITY_1080P ) ) {
mMaxVideoQuality = mVideoQuality.FullHD;
} else if ( CamcorderProfile.hasProfile( CamcorderProfile.QUALITY_720P ) ) {
mMaxVideoQuality = mVideoQuality.HD;
} else {
mMaxVideoQuality = mVideoQuality.SD;
}
CamcorderProfile cProfile = CamcorderProfile.get( CamcorderProfile.QUALITY_HIGH );
mTargetVideoBitRate = cProfile.videoBitRate;
}

我的大多数设备仍然报告支持 1080p 编码,对此我持怀疑态度,但是我在 Sony Experia Tipo(我的低端测试设备)上运行了这段代码,它报告了 480p 的最大编码质量和720Kb/s 的视频比特率。

正如我所说,我不确定是否每个设备都可以信任,但我已经看到了从 720Kb/s 到 17Mb/s 的一系列视频比特率和从 480p 到 1080p 的配置文件质量。希望其他人会发现此信息有用。

关于android - 如何获取 Android 设备的 CamcorderProfile.videoBitRate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638548/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com