Most visited

Recently visited

Added in API level 8

CamcorderProfile

public class CamcorderProfile
extends Object

java.lang.Object
   ↳ android.media.CamcorderProfile


Retrieves the predefined camcorder profile settings for camcorder applications. These settings are read-only.

The compressed output from a recording session with a given CamcorderProfile contains two tracks: one for audio and one for video.

Each profile specifies the following set of parameters:

Summary

Constants

int QUALITY_1080P

Quality level corresponding to the 1080p (1920 x 1080) resolution.

int QUALITY_2160P

Quality level corresponding to the 2160p (3840x2160) resolution.

int QUALITY_480P

Quality level corresponding to the 480p (720 x 480) resolution.

int QUALITY_720P

Quality level corresponding to the 720p (1280 x 720) resolution.

int QUALITY_CIF

Quality level corresponding to the cif (352 x 288) resolution.

int QUALITY_HIGH

Quality level corresponding to the highest available resolution.

int QUALITY_HIGH_SPEED_1080P

High speed ( >= 100fps) quality level corresponding to the 1080p (1920 x 1080 or 1920x1088) resolution.

int QUALITY_HIGH_SPEED_2160P

High speed ( >= 100fps) quality level corresponding to the 2160p (3840 x 2160) resolution.

int QUALITY_HIGH_SPEED_480P

High speed ( >= 100fps) quality level corresponding to the 480p (720 x 480) resolution.

int QUALITY_HIGH_SPEED_720P

High speed ( >= 100fps) quality level corresponding to the 720p (1280 x 720) resolution.

int QUALITY_HIGH_SPEED_HIGH

High speed ( >= 100fps) quality level corresponding to the highest available resolution.

int QUALITY_HIGH_SPEED_LOW

High speed ( >= 100fps) quality level corresponding to the lowest available resolution.

int QUALITY_LOW

Quality level corresponding to the lowest available resolution.

int QUALITY_QCIF

Quality level corresponding to the qcif (176 x 144) resolution.

int QUALITY_QVGA

Quality level corresponding to the QVGA (320x240) resolution.

int QUALITY_TIME_LAPSE_1080P

Time lapse quality level corresponding to the 1080p (1920 x 1088) resolution.

int QUALITY_TIME_LAPSE_2160P

Time lapse quality level corresponding to the 2160p (3840 x 2160) resolution.

int QUALITY_TIME_LAPSE_480P

Time lapse quality level corresponding to the 480p (720 x 480) resolution.

int QUALITY_TIME_LAPSE_720P

Time lapse quality level corresponding to the 720p (1280 x 720) resolution.

int QUALITY_TIME_LAPSE_CIF

Time lapse quality level corresponding to the cif (352 x 288) resolution.

int QUALITY_TIME_LAPSE_HIGH

Time lapse quality level corresponding to the highest available resolution.

int QUALITY_TIME_LAPSE_LOW

Time lapse quality level corresponding to the lowest available resolution.

int QUALITY_TIME_LAPSE_QCIF

Time lapse quality level corresponding to the qcif (176 x 144) resolution.

int QUALITY_TIME_LAPSE_QVGA

Time lapse quality level corresponding to the QVGA (320 x 240) resolution.

Fields

public int audioBitRate

The target audio output bit rate in bits per second

public int audioChannels

The number of audio channels used for the audio track

public int audioCodec

The audio encoder being used for the audio track.

public int audioSampleRate

The audio sampling rate used for the audio track

public int duration

Default recording duration in seconds before the session is terminated.

public int fileFormat

The file output format of the camcorder profile

public int quality

The quality level of the camcorder profile

public int videoBitRate

The target video output bit rate in bits per second

This is the target recorded video output bit rate if the application configures the video recording via setProfile(CamcorderProfile) without specifying any other MediaRecorder encoding parameters.

public int videoCodec

The video encoder being used for the video track

public int videoFrameHeight

The target video frame height in pixels

public int videoFrameRate

The target video frame rate in frames per second.

public int videoFrameWidth

The target video frame width in pixels

Public methods

static CamcorderProfile get(int quality)

Returns the camcorder profile for the first back-facing camera on the device at the given quality level.

static CamcorderProfile get(int cameraId, int quality)

Returns the camcorder profile for the given camera at the given quality level.

static boolean hasProfile(int cameraId, int quality)

Returns true if camcorder profile exists for the given camera at the given quality level.

static boolean hasProfile(int quality)

Returns true if camcorder profile exists for the first back-facing camera at the given quality level.

Inherited methods

From class java.lang.Object

Constants

QUALITY_1080P

Added in API level 11
int QUALITY_1080P

Quality level corresponding to the 1080p (1920 x 1080) resolution. Note that the vertical resolution for 1080p can also be 1088, instead of 1080 (used by some vendors to avoid cropping during video playback).

Constant Value: 6 (0x00000006)

QUALITY_2160P

Added in API level 21
int QUALITY_2160P

Quality level corresponding to the 2160p (3840x2160) resolution.

Constant Value: 8 (0x00000008)

QUALITY_480P

Added in API level 11
int QUALITY_480P

Quality level corresponding to the 480p (720 x 480) resolution. Note that the horizontal resolution for 480p can also be other values, such as 640 or 704, instead of 720.

Constant Value: 4 (0x00000004)

QUALITY_720P

Added in API level 11
int QUALITY_720P

Quality level corresponding to the 720p (1280 x 720) resolution.

Constant Value: 5 (0x00000005)

QUALITY_CIF

Added in API level 11
int QUALITY_CIF

Quality level corresponding to the cif (352 x 288) resolution.

Constant Value: 3 (0x00000003)

QUALITY_HIGH

Added in API level 8
int QUALITY_HIGH

Quality level corresponding to the highest available resolution.

Constant Value: 1 (0x00000001)

QUALITY_HIGH_SPEED_1080P

Added in API level 21
int QUALITY_HIGH_SPEED_1080P

High speed ( >= 100fps) quality level corresponding to the 1080p (1920 x 1080 or 1920x1088) resolution.

Constant Value: 2004 (0x000007d4)

QUALITY_HIGH_SPEED_2160P

Added in API level 21
int QUALITY_HIGH_SPEED_2160P

High speed ( >= 100fps) quality level corresponding to the 2160p (3840 x 2160) resolution.

Constant Value: 2005 (0x000007d5)

QUALITY_HIGH_SPEED_480P

Added in API level 21
int QUALITY_HIGH_SPEED_480P

High speed ( >= 100fps) quality level corresponding to the 480p (720 x 480) resolution. Note that the horizontal resolution for 480p can also be other values, such as 640 or 704, instead of 720.

Constant Value: 2002 (0x000007d2)

QUALITY_HIGH_SPEED_720P

Added in API level 21
int QUALITY_HIGH_SPEED_720P

High speed ( >= 100fps) quality level corresponding to the 720p (1280 x 720) resolution.

Constant Value: 2003 (0x000007d3)

QUALITY_HIGH_SPEED_HIGH

Added in API level 21
int QUALITY_HIGH_SPEED_HIGH

High speed ( >= 100fps) quality level corresponding to the highest available resolution.

Constant Value: 2001 (0x000007d1)

QUALITY_HIGH_SPEED_LOW

Added in API level 21
int QUALITY_HIGH_SPEED_LOW

High speed ( >= 100fps) quality level corresponding to the lowest available resolution.

For all the high speed profiles defined below ((from QUALITY_HIGH_SPEED_LOW to QUALITY_HIGH_SPEED_2160P), they are similar as normal recording profiles, with just higher output frame rate and bit rate. Therefore, setting these profiles with setProfile(CamcorderProfile) without specifying any other encoding parameters will produce high speed videos rather than slow motion videos that have different capture and output (playback) frame rates. To record slow motion videos, the application must set video output (playback) frame rate and bit rate appropriately via setVideoFrameRate(int) and setVideoEncodingBitRate(int) based on the slow motion factor. If the application intends to do the video recording with MediaCodec encoder, it must set each individual field of MediaFormat similarly according to this CamcorderProfile.

See also:

Constant Value: 2000 (0x000007d0)

QUALITY_LOW

Added in API level 8
int QUALITY_LOW

Quality level corresponding to the lowest available resolution.

Constant Value: 0 (0x00000000)

QUALITY_QCIF

Added in API level 11
int QUALITY_QCIF

Quality level corresponding to the qcif (176 x 144) resolution.

Constant Value: 2 (0x00000002)

QUALITY_QVGA

Added in API level 15
int QUALITY_QVGA

Quality level corresponding to the QVGA (320x240) resolution.

Constant Value: 7 (0x00000007)

QUALITY_TIME_LAPSE_1080P

Added in API level 11
int QUALITY_TIME_LAPSE_1080P

Time lapse quality level corresponding to the 1080p (1920 x 1088) resolution.

Constant Value: 1006 (0x000003ee)

QUALITY_TIME_LAPSE_2160P

Added in API level 21
int QUALITY_TIME_LAPSE_2160P

Time lapse quality level corresponding to the 2160p (3840 x 2160) resolution.

Constant Value: 1008 (0x000003f0)

QUALITY_TIME_LAPSE_480P

Added in API level 11
int QUALITY_TIME_LAPSE_480P

Time lapse quality level corresponding to the 480p (720 x 480) resolution.

Constant Value: 1004 (0x000003ec)

QUALITY_TIME_LAPSE_720P

Added in API level 11
int QUALITY_TIME_LAPSE_720P

Time lapse quality level corresponding to the 720p (1280 x 720) resolution.

Constant Value: 1005 (0x000003ed)

QUALITY_TIME_LAPSE_CIF

Added in API level 11
int QUALITY_TIME_LAPSE_CIF

Time lapse quality level corresponding to the cif (352 x 288) resolution.

Constant Value: 1003 (0x000003eb)

QUALITY_TIME_LAPSE_HIGH

Added in API level 11
int QUALITY_TIME_LAPSE_HIGH

Time lapse quality level corresponding to the highest available resolution.

Constant Value: 1001 (0x000003e9)

QUALITY_TIME_LAPSE_LOW

Added in API level 11
int QUALITY_TIME_LAPSE_LOW

Time lapse quality level corresponding to the lowest available resolution.

Constant Value: 1000 (0x000003e8)

QUALITY_TIME_LAPSE_QCIF

Added in API level 11
int QUALITY_TIME_LAPSE_QCIF

Time lapse quality level corresponding to the qcif (176 x 144) resolution.

Constant Value: 1002 (0x000003ea)

QUALITY_TIME_LAPSE_QVGA

Added in API level 15
int QUALITY_TIME_LAPSE_QVGA

Time lapse quality level corresponding to the QVGA (320 x 240) resolution.

Constant Value: 1007 (0x000003ef)

Fields

audioBitRate

Added in API level 8
int audioBitRate

The target audio output bit rate in bits per second

audioChannels

Added in API level 8
int audioChannels

The number of audio channels used for the audio track

audioCodec

Added in API level 8
int audioCodec

The audio encoder being used for the audio track.

See also:

audioSampleRate

Added in API level 8
int audioSampleRate

The audio sampling rate used for the audio track

duration

Added in API level 8
int duration

Default recording duration in seconds before the session is terminated. This is useful for applications like MMS has limited file size requirement.

fileFormat

Added in API level 8
int fileFormat

The file output format of the camcorder profile

See also:

quality

Added in API level 8
int quality

The quality level of the camcorder profile

videoBitRate

Added in API level 8
int videoBitRate

The target video output bit rate in bits per second

This is the target recorded video output bit rate if the application configures the video recording via setProfile(CamcorderProfile) without specifying any other MediaRecorder encoding parameters. For example, for high speed quality profiles (from QUALITY_HIGH_SPEED_LOW to QUALITY_HIGH_SPEED_2160P), this is the bit rate where the video is recorded with. If the application intends to record slow motion videos with the high speed quality profiles, it must set a different video bit rate that is corresponding to the desired recording output bit rate (i.e., the encoded video bit rate during normal playback) via setVideoEncodingBitRate(int). For example, if QUALITY_HIGH_SPEED_720P advertises 240fps videoFrameRate and 64Mbps videoBitRate in the high speed CamcorderProfile, and the application intends to record 1/8 factor slow motion recording videos, the application must set 30fps via setVideoFrameRate(int) and 8Mbps ( videoBitRate * slow motion factor) via setVideoEncodingBitRate(int). Failing to do so will result in videos with unexpected frame rate and bit rate, or MediaRecorder error if the output bit rate exceeds the encoder limit. If the application intends to do the video recording with MediaCodec encoder, it must set each individual field of MediaFormat similarly according to this CamcorderProfile.

See also:

videoCodec

Added in API level 8
int videoCodec

The video encoder being used for the video track

See also:

videoFrameHeight

Added in API level 8
int videoFrameHeight

The target video frame height in pixels

videoFrameRate

Added in API level 8
int videoFrameRate

The target video frame rate in frames per second.

This is the target recorded video output frame rate per second if the application configures the video recording via setProfile(CamcorderProfile) without specifying any other MediaRecorder encoding parameters. For example, for high speed quality profiles (from QUALITY_HIGH_SPEED_LOW to QUALITY_HIGH_SPEED_2160P), this is the frame rate where the video is recorded and played back with. If the application intends to create slow motion use case with the high speed quality profiles, it must set a different video frame rate that is corresponding to the desired output (playback) frame rate via setVideoFrameRate(int). For example, if QUALITY_HIGH_SPEED_720P advertises 240fps videoFrameRate in the CamcorderProfile, and the application intends to create 1/8 factor slow motion recording videos, the application must set 30fps via setVideoFrameRate(int). Failing to do so will result in high speed videos with normal speed playback frame rate (240fps for above example). If the application intends to do the video recording with MediaCodec encoder, it must set each individual field of MediaFormat similarly according to this CamcorderProfile.

See also:

videoFrameWidth

Added in API level 8
int videoFrameWidth

The target video frame width in pixels

Public methods

get

Added in API level 8
CamcorderProfile get (int quality)

Returns the camcorder profile for the first back-facing camera on the device at the given quality level. If the device has no back-facing camera, this returns null.

Parameters
quality int: the target quality level for the camcorder profile
Returns
CamcorderProfile

See also:

get

Added in API level 9
CamcorderProfile get (int cameraId, 
                int quality)

Returns the camcorder profile for the given camera at the given quality level. Quality levels QUALITY_LOW, QUALITY_HIGH are guaranteed to be supported, while other levels may or may not be supported. The supported levels can be checked using hasProfile(int, int). QUALITY_LOW refers to the lowest quality available, while QUALITY_HIGH refers to the highest quality available. QUALITY_LOW/QUALITY_HIGH have to match one of qcif, cif, 480p, 720p, 1080p or 2160p. E.g. if the device supports 480p, 720p, 1080p and 2160p, then low is 480p and high is 2160p. The same is true for time lapse quality levels, i.e. QUALITY_TIME_LAPSE_LOW, QUALITY_TIME_LAPSE_HIGH are guaranteed to be supported and have to match one of qcif, cif, 480p, 720p, 1080p, or 2160p. For high speed quality levels, they may or may not be supported. If a subset of the levels are supported, QUALITY_HIGH_SPEED_LOW and QUALITY_HIGH_SPEED_HIGH are guaranteed to be supported and have to match one of 480p, 720p, or 1080p. A camcorder recording session with higher quality level usually has higher output bit rate, better video and/or audio recording quality, larger video frame resolution and higher audio sampling rate, etc, than those with lower quality level.

Parameters
cameraId int: the id for the camera
quality int: the target quality level for the camcorder profile.
Returns
CamcorderProfile

See also:

hasProfile

Added in API level 11
boolean hasProfile (int cameraId, 
                int quality)

Returns true if camcorder profile exists for the given camera at the given quality level.

When using the Camera 2 API in LEGACY mode (i.e. when INFO_SUPPORTED_HARDWARE_LEVEL is set to INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY), hasProfile(int) may return true for unsupported resolutions. To ensure a a given resolution is supported in LEGACY mode, the configuration given in SCALER_STREAM_CONFIGURATION_MAP must contain the the resolution in the supported output sizes. The recommended way to check this is with getOutputSizes(Class) with the class of the desired recording endpoint, and check that the desired resolution is contained in the list returned.

Parameters
cameraId int: the id for the camera
quality int: the target quality level for the camcorder profile
Returns
boolean

See also:

hasProfile

Added in API level 11
boolean hasProfile (int quality)

Returns true if camcorder profile exists for the first back-facing camera at the given quality level.

When using the Camera 2 API in LEGACY mode (i.e. when INFO_SUPPORTED_HARDWARE_LEVEL is set to INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY), hasProfile(int) may return true for unsupported resolutions. To ensure a a given resolution is supported in LEGACY mode, the configuration given in SCALER_STREAM_CONFIGURATION_MAP must contain the the resolution in the supported output sizes. The recommended way to check this is with getOutputSizes(Class) with the class of the desired recording endpoint, and check that the desired resolution is contained in the list returned.

Parameters
quality int: the target quality level for the camcorder profile
Returns
boolean

See also:

Hooray!