public class CamcorderProfile
extends Object
| java.lang.Object | |
| android.media.CamcorderProfile | |
检索摄像机应用程序的预定义摄像机配置文件设置。 这些设置是只读的。
来自具有给定CamcorderProfile的记录会话的压缩输出包含两个音轨:一个用于音频,另一个用于视频。
每个配置文件都指定了以下一组参数:
常量(Constants) |
|
|---|---|
int |
QUALITY_1080P 质量水平对应于1080p(1920 x 1080)分辨率。 |
int |
QUALITY_2160P 质量水平对应于2160p(3840x2160)分辨率。 |
int |
QUALITY_480P 质量水平对应于480p(720 x 480)分辨率。 |
int |
QUALITY_720P 质量水平对应720p(1280 x 720)分辨率。 |
int |
QUALITY_CIF 质量水平对应于CIF(352 x 288)分辨率。 |
int |
QUALITY_HIGH 质量水平对应于最高可用分辨率。 |
int |
QUALITY_HIGH_SPEED_1080P 与1080p(1920 x 1080或1920x1088)分辨率相对应的高速(> = 100fps)质量等级。 |
int |
QUALITY_HIGH_SPEED_2160P 与2160p(3840 x 2160)分辨率相对应的高速(> = 100fps)质量级别。 |
int |
QUALITY_HIGH_SPEED_480P 与480p(720 x 480)分辨率相对应的高速(> = 100fps)质量等级。 |
int |
QUALITY_HIGH_SPEED_720P 与720p(1280 x 720)分辨率相对应的高速(> = 100fps)质量等级。 |
int |
QUALITY_HIGH_SPEED_HIGH 与最高可用分辨率相对应的高速(> = 100fps)质量级别。 |
int |
QUALITY_HIGH_SPEED_LOW 与最低可用分辨率相对应的高速(> = 100fps)质量级别。 |
int |
QUALITY_LOW 质量水平对应于最低的可用分辨率。 |
int |
QUALITY_QCIF 质量水平对应于qcif(176 x 144)分辨率。 |
int |
QUALITY_QVGA 质量水平对应于QVGA(320x240)分辨率。 |
int |
QUALITY_TIME_LAPSE_1080P 时间质量水平对应于1080p(1920 x 1088)分辨率。 |
int |
QUALITY_TIME_LAPSE_2160P 时间推移质量水平对应于2160p(3840 x 2160)分辨率。 |
int |
QUALITY_TIME_LAPSE_480P 时间推移质量水平对应于480p(720 x 480)分辨率。 |
int |
QUALITY_TIME_LAPSE_720P 时间质量水平对应于720p(1280 x 720)分辨率。 |
int |
QUALITY_TIME_LAPSE_CIF 时间质量水平对应于CIF(352 x 288)分辨率。 |
int |
QUALITY_TIME_LAPSE_HIGH 时间推移质量水平对应于最高可用分辨率。 |
int |
QUALITY_TIME_LAPSE_LOW 时间流逝质量水平对应于最低可用分辨率。 |
int |
QUALITY_TIME_LAPSE_QCIF 与qcif(176 x 144)分辨率对应的时间流逝质量水平。 |
int |
QUALITY_TIME_LAPSE_QVGA 时间质量水平对应于QVGA(320 x 240)分辨率。 |
Fields |
|
|---|---|
public int |
audioBitRate 目标音频输出比特率,以每秒位数为单位 |
public int |
audioChannels 用于音轨的音频通道数量 |
public int |
audioCodec 音频编码器用于音轨。 |
public int |
audioSampleRate 用于音轨的音频采样率 |
public int |
duration 会话终止前的默认记录持续时间(秒)。 |
public int |
fileFormat 摄像机配置文件的文件输出格式 |
public int |
quality 摄像机配置文件的质量等级 |
public int |
videoBitRate 目标视频输出比特率,以每秒位数为单位 如果应用程序通过 |
public int |
videoCodec 视频编码器用于视频轨道 |
public int |
videoFrameHeight 目标视频帧高度(以像素为单位) |
public int |
videoFrameRate 目标视频帧速率,以每秒帧数为单位。 |
public int |
videoFrameWidth 目标视频帧宽度(以像素为单位) |
公共方法(Public methods) |
|
|---|---|
static CamcorderProfile |
get(int quality) 以给定质量级别返回设备上第一台背面照相机的摄像机配置文件。 |
static CamcorderProfile |
get(int cameraId, int quality) 以给定质量等级返回给定摄像机的摄像机配置文件。 |
static boolean |
hasProfile(int cameraId, int quality) 如果摄像机配置文件对于给定质量级别的给定摄像机存在,则返回true。 |
static boolean |
hasProfile(int quality) 如果摄像机配置文件存在给定质量等级的第一台后置摄像头,则返回true。 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
int QUALITY_1080P
质量水平对应于1080p(1920 x 1080)分辨率。 请注意,1080p的垂直分辨率也可以是1088,而不是1080(某些供应商用于避免在视频播放期间裁剪)。
常数值:6(0x00000006)
int QUALITY_480P
质量水平对应于480p(720 x 480)分辨率。 请注意,480p的水平分辨率也可以是其他值,例如640或704,而不是720。
常量值:4(0x00000004)
int QUALITY_HIGH_SPEED_1080P
与1080p(1920 x 1080或1920x1088)分辨率相对应的高速(> = 100fps)质量等级。
常量值:2004(0x000007d4)
int QUALITY_HIGH_SPEED_2160P
与2160p(3840 x 2160)分辨率相对应的高速(> = 100fps)质量级别。
常量值:2005(0x000007d5)
int QUALITY_HIGH_SPEED_480P
与480p(720 x 480)分辨率相对应的高速(> = 100fps)质量等级。 请注意,480p的水平分辨率也可以是其他值,例如640或704,而不是720。
常量值:2002(0x000007d2)
int QUALITY_HIGH_SPEED_720P
与720p(1280 x 720)分辨率相对应的高速(> = 100fps)质量等级。
常量值:2003(0x000007d3)
int QUALITY_HIGH_SPEED_HIGH
与最高可用分辨率相对应的高速(> = 100fps)质量级别。
常量值:2001(0x000007d1)
int QUALITY_HIGH_SPEED_LOW
与最低可用分辨率相对应的高速(> = 100fps)质量级别。
对于以下定义的所有高速配置文件((从 QUALITY_HIGH_SPEED_LOW到 QUALITY_HIGH_SPEED_2160P ),它们与正常记录配置文件类似,只有较高的输出帧速率和比特率。因此,在不指定任何其他编码参数的情况下将这些配置文件设置为 setProfile(CamcorderProfile)将产生高如果要记录慢动作视频,应用程序必须通过基于慢动作因子 setVideoFrameRate(int)和 setVideoEncodingBitRate(int)适当设置视频输出(回放)帧速率和比特率。如果应用程序打算使用 MediaCodec编码器进行视频录制,则它必须根据此CamcorderProfile类似地设置每个单独的字段 MediaFormat 。
常量值:2000(0x000007d0)
int QUALITY_TIME_LAPSE_1080P
时间质量水平对应于1080p(1920 x 1088)分辨率。
常量值:1006(0x000003ee)
int QUALITY_TIME_LAPSE_2160P
时间推移质量水平对应于2160p(3840 x 2160)分辨率。
常数值:1008(0x000003f0)
int QUALITY_TIME_LAPSE_480P
时间推移质量水平对应于480p(720 x 480)分辨率。
常量值:1004(0x000003ec)
int QUALITY_TIME_LAPSE_720P
时间质量水平对应于720p(1280 x 720)分辨率。
常量值:1005(0x000003ed)
int QUALITY_TIME_LAPSE_CIF
时间质量水平对应于CIF(352 x 288)分辨率。
常量值:1003(0x000003eb)
int QUALITY_TIME_LAPSE_HIGH
时间推移质量水平对应于最高可用分辨率。
常量值:1001(0x000003e9)
int QUALITY_TIME_LAPSE_LOW
时间流逝质量水平对应于最低可用分辨率。
常量值:1000(0x000003e8)
int QUALITY_TIME_LAPSE_QCIF
与qcif(176 x 144)分辨率对应的时间流逝质量水平。
常量值:1002(0x000003ea)
int QUALITY_TIME_LAPSE_QVGA
时间质量水平对应于QVGA(320 x 240)分辨率。
常量值:1007(0x000003ef)
int videoBitRate
目标视频输出比特率,以每秒位数为单位
如果应用程序通过setProfile(CamcorderProfile)配置视频录制而不指定任何其他MediaRecorder编码参数,则这是目标录制的视频输出比特率。 例如,对于高速品质配置文件(从QUALITY_HIGH_SPEED_LOW到QUALITY_HIGH_SPEED_2160P ),这是录制视频的比特率。 如果应用程序打算使用高速品质配置文件记录慢动作视频,则必须通过setVideoEncodingBitRate(int)设置与所需记录输出比特率(即正常播放期间的编码视频比特率)对应的不同视频比特率。 例如,如果QUALITY_HIGH_SPEED_720P通告240fps的videoFrameRate和64Mbps videoBitRate在高速CamcorderProfile,并且应用程序打算记录1/8因子缓慢记录视频,应用程序必须通过设置30fps的setVideoFrameRate(int)和8Mbps的( videoBitRate经由*慢动作因子) setVideoEncodingBitRate(int) 。 如果输出比特率超过编码器限制,则不这样做将导致视频具有意外的帧速率和比特率,或MediaRecorder错误。 如果应用程序打算使用MediaCodec编码器进行视频录制,则必须根据此CamcorderProfile类似地设置每个单独的字段MediaFormat 。
int videoFrameRate
目标视频帧速率,以每秒帧数为单位。
如果应用程序通过setProfile(CamcorderProfile)配置视频录制而不指定任何其他MediaRecorder编码参数,则这是每秒记录的目标视频输出帧速率。 例如,对于高速品质配置文件(从QUALITY_HIGH_SPEED_LOW到QUALITY_HIGH_SPEED_2160P ),这是录制和播放视频的帧速率。 如果应用程序打算创建具有高速品质配置文件的慢动作用例,则它必须通过setVideoFrameRate(int)设置与所需输出(回放)帧速率对应的不同视频帧速率。 例如,如果QUALITY_HIGH_SPEED_720P在CamcorderProfile中公告240fps videoFrameRate ,并且该应用程序打算创建1/8因素慢动作录制视频,则应用程序必须通过setVideoFrameRate(int)设置30fps。 如果不这样做,会导致正常速度播放帧速率的高速视频(以上例子为240fps)。 如果应用程序打算使用MediaCodec编码器进行视频录制,则它必须根据此CamcorderProfile类似地设置每个单独的字段MediaFormat 。
CamcorderProfile get (int quality)
以给定质量级别返回设备上第一台背面照相机的摄像机配置文件。 如果设备没有后置摄像头,则返回null。
| 参数(Parameters) | |
|---|---|
quality |
int: the target quality level for the camcorder profile |
| 返回(Returns) | |
|---|---|
CamcorderProfile |
|
也可以看看:
CamcorderProfile get (int cameraId, int quality)
以给定质量等级返回给定摄像机的摄像机配置文件。 质量等级QUALITY_LOW,QUALITY_HIGH保证被支持,而其他等级可能被支持也可能不被支持。 支持的级别可以使用hasProfile(int, int)进行检查。 QUALITY_LOW是指可用的最低质量,而QUALITY_HIGH是指可用的最高质量。 QUALITY_LOW / QUALITY_HIGH必须与qcif,cif,480p,720p,1080p或2160p中的一个匹配。 例如,如果该设备支持480p,720p,1080p和2160p,那么低为480p,高为2160p。 时间质量水平也是如此,即QUALITY_TIME_LAPSE_LOW,QUALITY_TIME_LAPSE_HIGH保证被支持并且必须匹配qcif,cif,480p,720p,1080p或2160p中的一个。 对于高速的质量水平,他们可能会或可能不会被支持。 如果支持一个级别的子集,则QUALITY_HIGH_SPEED_LOW和QUALITY_HIGH_SPEED_HIGH保证受支持,并且必须匹配480p,720p或1080p中的一个。 与具有较低质量等级的摄像机相比,具有较高质量等级的摄像机记录通常具有更高的输出比特率,更好的视频和/或音频录制质量,更大的视频帧分辨率和更高的音频采样率等。
| 参数(Parameters) | |
|---|---|
cameraId |
int: the id for the camera |
quality |
int: the target quality level for the camcorder profile. |
| 返回(Returns) | |
|---|---|
CamcorderProfile |
|
也可以看看:
QUALITY_LOWQUALITY_HIGHQUALITY_QCIFQUALITY_CIFQUALITY_480PQUALITY_720PQUALITY_1080PQUALITY_2160PQUALITY_TIME_LAPSE_LOWQUALITY_TIME_LAPSE_HIGHQUALITY_TIME_LAPSE_QCIFQUALITY_TIME_LAPSE_CIFQUALITY_TIME_LAPSE_480PQUALITY_TIME_LAPSE_720PQUALITY_TIME_LAPSE_1080PQUALITY_TIME_LAPSE_2160PQUALITY_HIGH_SPEED_LOWQUALITY_HIGH_SPEED_HIGHQUALITY_HIGH_SPEED_480PQUALITY_HIGH_SPEED_720PQUALITY_HIGH_SPEED_1080PQUALITY_HIGH_SPEED_2160Pboolean hasProfile (int cameraId,
int quality)
如果摄像机配置文件对于给定质量级别的给定摄像机存在,则返回true。
在LEGACY模式下使用Camera 2 API时(即当INFO_SUPPORTED_HARDWARE_LEVEL设置为INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY ), hasProfile(int)可能会返回true以获得不支持的分辨率。 为了确保在LEGACY模式下支持给定的分辨率, SCALER_STREAM_CONFIGURATION_MAP给出的配置必须包含支持的输出尺寸中的分辨率。 推荐的方法是使用getOutputSizes(Class)和所需记录端点的类别,并检查返回的列表中是否包含所需的分辨率。
| 参数(Parameters) | |
|---|---|
cameraId |
int: the id for the camera |
quality |
int: the target quality level for the camcorder profile |
| 返回(Returns) | |
|---|---|
boolean |
|
boolean hasProfile (int quality)
如果摄像机配置文件存在给定质量等级的第一台后置摄像头,则返回true。
在LEGACY模式(即INFO_SUPPORTED_HARDWARE_LEVEL设置为INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY )使用相机2 API时, hasProfile(int)可能会返回true不支持的分辨率。 要确保在LEGACY模式下支持给定的分辨率, SCALER_STREAM_CONFIGURATION_MAP给出的配置必须包含支持的输出尺寸中的分辨率。 推荐的方法是使用getOutputSizes(Class)与所需记录终点的类别进行检查,并检查返回的列表中是否包含所需的分辨率。
| 参数(Parameters) | |
|---|---|
quality |
int: the target quality level for the camcorder profile |
| 返回(Returns) | |
|---|---|
boolean |
|