- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的应用程序使用 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/
Posical duplicate MediaRecorder start failed: -16 MediaRecorder 启动失败:-16 当将 CamcorderProfile.QUALITY
我的代码: mediaRecorder = new MediaRecorder(); mediaRecorder.setCamera(camera); mediaRecorder.setVideoSo
我在尝试使用 CamcorderProfile.hasProfile(xyz) 时收到运行时 NoSuchMethodError。在我的应用 list 中指定了正确的 API 这是我想使用的 blo
这是我的问题,我正在开发一个使用摄像头和录制视频的软件,一切正常,但我不知道如何管理设置,例如我有一个三星 galaxy S 可以录制视频1280x720,但当我将此分辨率设置为: Camcorder
根据docs , 你可以使用 CamcorderProfile 获取设备默认的视频编解码器格式,然后将其设置为 MediaRecorder,如下所示: CamcorderProfile mProfil
我正尝试在我的 Nexus 5x 上拍摄慢动作视频。这就是我配置媒体记录器的方式: CamcorderProfile profile = CamcorderProfile.get(CamcorderP
到目前为止,我还没有找到任何解释。基本上我有一个视频录制类,当我的三星 Galaxy S2 上的 setVideoSize() 设置为 720 x 480 时,它的效果非常好。 我希望它以尽可能高的分
我有一个代码示例: mediaRecorder = new MediaRecorder(); mediaRecorder.setPreviewDisplay(surfaceHolder.getSurf
我的应用程序使用 HLS 从服务器流式传输视频,但是当我从服务器请求 HLS 流时,我需要将设备可以处理的最大视频比特率传递给它。在Android API guides它说“设备的可用视频录制配置文件
由于我想通过 CamcorderProfiles (CamcorderProfile.QUALITY_HIGH/LOW) 设置 Android 摄像机录制质量,我还需要相应地设置相机预览尺寸(和布局)
我在 Nexus 7 2012 上使用自定义摄像头录制视频时遇到了这个问题,而其他设备,如 Zenfone 2、Galaxy S3、S6、HTC One M7、Oppo N1、Sony Xperia
我是一名优秀的程序员,十分优秀!