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 |
|
---|---|
From class 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_LOW
QUALITY_HIGH
QUALITY_QCIF
QUALITY_CIF
QUALITY_480P
QUALITY_720P
QUALITY_1080P
QUALITY_2160P
QUALITY_TIME_LAPSE_LOW
QUALITY_TIME_LAPSE_HIGH
QUALITY_TIME_LAPSE_QCIF
QUALITY_TIME_LAPSE_CIF
QUALITY_TIME_LAPSE_480P
QUALITY_TIME_LAPSE_720P
QUALITY_TIME_LAPSE_1080P
QUALITY_TIME_LAPSE_2160P
QUALITY_HIGH_SPEED_LOW
QUALITY_HIGH_SPEED_HIGH
QUALITY_HIGH_SPEED_480P
QUALITY_HIGH_SPEED_720P
QUALITY_HIGH_SPEED_1080P
QUALITY_HIGH_SPEED_2160P
boolean 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 |