Interface (VideoSession)
VideoSession inherits from Session, Flash, AutoExposure, WhiteBalance, Focus, Zoom, Stabilization, ColorManagement, AutoDeviceSwitch, Macro, and ControlCenter.
It implements a video session, which provides operations on the flash, exposure, white balance, focus, zoom, video stabilization, color space, macro mode, and controller.
VideoSession is provided for the default video recording mode. It applies to common scenarios. It supports recording at various resolutions (such as 720p and 1080p) and frame rates (such as 30 fps and 60 fps).
NOTE
- The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
- The initial APIs of this interface are supported since API version 11.
Modules to Import
import { camera } from '@kit.CameraKit';
canPreconfig12+
canPreconfig(preconfigType: PreconfigType, preconfigRatio?: PreconfigRatio): boolean
Checks whether this session supports a preconfigured resolution.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| preconfigType | PreconfigType | Yes | Resolution type. |
| preconfigRatio | PreconfigRatio | No | Aspect ratio. The default value is 16:9. |
Return value
| Type | Description |
|---|---|
| boolean | true: The preconfigured resolution is supported. false: The preconfigured resolution is not supported. |
Error codes
For details about the error codes, see Camera Error Codes.
| ID | Error Message |
|---|---|
| 7400201 | Camera service fatal error. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function testCanPreconfig(videoSession: camera.VideoSession, preconfigType: camera.PreconfigType,
preconfigRatio: camera.PreconfigRatio): void {
try {
let result = videoSession.canPreconfig(preconfigType, preconfigRatio);
console.info(`canPreconfig ${preconfigType} ${preconfigRatio} result is : ${result}`);
} catch (error) {
let err = error as BusinessError;
console.error(`The canPreconfig call failed. error code: ${err.code}`);
}
}
preconfig12+
preconfig(preconfigType: PreconfigType, preconfigRatio?: PreconfigRatio): void
Preconfigures this session.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| preconfigType | PreconfigType | Yes | Resolution type. |
| preconfigRatio | PreconfigRatio | No | Aspect ratio. The default value is 16:9. |
Error codes
For details about the error codes, see Camera Error Codes.
| ID | Error Message |
|---|---|
| 7400201 | Camera service fatal error. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function testPreconfig(videoSession: camera.VideoSession, preconfigType: camera.PreconfigType,
preconfigRatio: camera.PreconfigRatio): void {
try {
videoSession.preconfig(preconfigType, preconfigRatio);
console.info(`preconfig ${preconfigType} ${preconfigRatio} success`);
} catch (error) {
let err = error as BusinessError;
console.error(`The preconfig call failed. error code: ${err.code}`);
}
}
on('error')11+
on(type: 'error', callback: ErrorCallback): void
Subscribes to VideoSession error events. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'error'. The event can be listened for when a session is created. This event is triggered and the error message is returned when an error occurs during the calling of a session-related API such as beginConfig, commitConfig, and addInput. |
| callback | ErrorCallback | Yes | Callback used to return an error code defined in CameraErrorCode. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError): void {
console.error(`Video session error code: ${err.code}`);
}
function registerSessionError(videoSession: camera.VideoSession): void {
videoSession.on('error', callback);
}
off('error')11+
off(type: 'error', callback?: ErrorCallback): void
Unsubscribes from VideoSession error events. This API uses a callback to return the result.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'error'. The event can be listened for when a session is created. |
| callback | ErrorCallback | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterSessionError(videoSession: camera.VideoSession): void {
videoSession.off('error');
}
on('focusStateChange')11+
on(type: 'focusStateChange', callback: AsyncCallback<FocusState>): void
Subscribes to focus state change events. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'focusStateChange'. The event can be listened for when a session is created. This event is triggered only when the camera focus state changes in auto focus mode. |
| callback | AsyncCallback<FocusState> | Yes | Callback used to return the focus state change. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, focusState: camera.FocusState): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`Focus state: ${focusState}`);
}
function registerFocusStateChange(videoSession: camera.VideoSession): void {
videoSession.on('focusStateChange', callback);
}
off('focusStateChange')11+
off(type: 'focusStateChange', callback?: AsyncCallback<FocusState>): void
Unsubscribes from focus state change events.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'focusStateChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<FocusState> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterFocusStateChange(videoSession: camera.VideoSession): void {
videoSession.off('focusStateChange');
}
on('smoothZoomInfoAvailable')11+
on(type: 'smoothZoomInfoAvailable', callback: AsyncCallback<SmoothZoomInfo>): void
Subscribes to smooth zoom state change events. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'smoothZoomInfoAvailable'. The event can be listened for when a session is created. |
| callback | AsyncCallback<SmoothZoomInfo> | Yes | Callback used to return the smooth zoom state change. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, smoothZoomInfo: camera.SmoothZoomInfo): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`The duration of smooth zoom: ${smoothZoomInfo.duration}`);
}
function registerSmoothZoomInfo(videoSession: camera.VideoSession): void {
videoSession.on('smoothZoomInfoAvailable', callback);
}
off('smoothZoomInfoAvailable')11+
off(type: 'smoothZoomInfoAvailable', callback?: AsyncCallback<SmoothZoomInfo>): void
Unsubscribes from smooth zoom state change events.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'smoothZoomInfoAvailable'. The event can be listened for when a session is created. |
| callback | AsyncCallback<SmoothZoomInfo> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterSmoothZoomInfo(videoSession: camera.VideoSession): void {
videoSession.off('smoothZoomInfoAvailable');
}
on('autoDeviceSwitchStatusChange')13+
on(type: 'autoDeviceSwitchStatusChange', callback: AsyncCallback<AutoDeviceSwitchStatus>): void
Subscribes to automatic camera switch status change events. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'autoDeviceSwitchStatusChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<AutoDeviceSwitchStatus> | Yes | Callback used to obtain the status of automatic camera switch. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, autoDeviceSwitchStatus: camera.AutoDeviceSwitchStatus): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`isDeviceSwitched: ${autoDeviceSwitchStatus.isDeviceSwitched}, isDeviceCapabilityChanged: ${autoDeviceSwitchStatus.isDeviceCapabilityChanged}`);
}
function registerAutoDeviceSwitchStatus(videoSession: camera.VideoSession): void {
videoSession.on('autoDeviceSwitchStatusChange', callback);
}
off('autoDeviceSwitchStatusChange')13+
off(type: 'autoDeviceSwitchStatusChange', callback?: AsyncCallback<AutoDeviceSwitchStatus>): void
Unsubscribes from automatic camera switch status change events.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'autoDeviceSwitchStatusChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<AutoDeviceSwitchStatus> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterSmoothZoomInfo(videoSession: camera.VideoSession): void {
videoSession.off('autoDeviceSwitchStatusChange');
}
setQualityPrioritization14+
setQualityPrioritization(quality : QualityPrioritization) : void;
Sets the priority level for video recording quality.
NOTE
- The default value is HIGH_QUALITY. Switching to POWER_BALANCE will compromise video recording quality to achieve lower power usage. The extent of power conservation achieved varies depending on the platform.
- It is recommended that this API be called between commitConfig and start.
Atomic service API: This API can be used in atomic services since API version 19.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| quality | QualityPrioritization | Yes | Priority level to set. The default value is HIGH_QUALITY. |
Error codes
For details about the error codes, see Universal Error Codes and Camera Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
| 7400103 | Session not config. The session has not been committed or configured. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function setQualityPrioritization(videoSession: camera.VideoSession): void {
try {
videoSession.setQualityPrioritization(camera.QualityPrioritization.POWER_BALANCE);
} catch (error) {
// If the operation fails, error.code is returned and processed.
let err = error as BusinessError;
console.error(`The setQualityPrioritization call failed. error code: ${err.code}`);
}
}
on('systemPressureLevelChange')20+
on(type: 'systemPressureLevelChange', callback: AsyncCallback<SystemPressureLevel>): void
Subscribes to system pressure level change events. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'systemPressureLevelChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<SystemPressureLevel> | Yes | Callback used to return the current system pressure level. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, systemPressureLevel: camera.SystemPressureLevel): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`systemPressureLevel: ${systemPressureLevel}`);
}
function registerSystemPressureLevelChangeCallback(videoSession: camera.VideoSession): void {
videoSession.on('systemPressureLevelChange', callback);
}
off('systemPressureLevelChange')20+
off(type: 'systemPressureLevelChange', callback?: AsyncCallback<SystemPressureLevel>): void
Unsubscribes from system pressure level change events.
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'systemPressureLevelChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<SystemPressureLevel> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterSystemPressureLevelChangeCallback(videoSession: camera.VideoSession): void {
videoSession.off('systemPressureLevelChange');
}
on('controlCenterEffectStatusChange')20+
on(type: 'controlCenterEffectStatusChange', callback: AsyncCallback<ControlCenterStatusInfo>): void
Subscribes to events indicating that the camera controller effect status changes. This API uses an asynchronous callback to return the result.
NOTE
Currently, you cannot use off() to unregister the callback in the callback method of on().
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'controlCenterEffectStatusChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<ControlCenterStatusInfo> | Yes | Callback used to return the effect status of the current controller. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, status: camera.ControlCenterStatusInfo): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`controlCenterEffectStatusChange: ${status}`);
}
function registerControlCenterEffectStatusChangeCallback(videoSession: camera.VideoSession): void {
videoSession.on('controlCenterEffectStatusChange', callback);
}
off('controlCenterEffectStatusChange')20+
off(type: 'controlCenterEffectStatusChange', callback?: AsyncCallback<ControlCenterStatusInfo>): void
Unsubscribes from events indicating that the camera controller effect status changes.
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'controlCenterEffectStatusChange'. The event can be listened for when a session is created. |
| callback | AsyncCallback<ControlCenterStatusInfo> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function unregisterControlCenterEffectStatusChange(videoSession: camera.VideoSession): void {
videoSession.off('controlCenterEffectStatusChange');
}
on('macroStatusChanged')20+
on(type: 'macroStatusChanged', callback: AsyncCallback<boolean>): void
Subscribes to macro state change events. This API uses an asynchronous callback to return the result.
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'macroStatusChanged'. The event can be listened for when a session is created. |
| callback | AsyncCallback<boolean> | Yes | Callback used to return the macro state. true if enabled, false otherwise. |
Example
import { BusinessError } from '@kit.BasicServicesKit';
function callback(err: BusinessError, macroStatus: boolean): void {
if (err !== undefined && err.code !== 0) {
console.error(`Callback Error, errorCode: ${err.code}`);
return;
}
console.info(`Macro state: ${macroStatus}`);
}
function registerMacroStatusChanged(videoSession: camera.VideoSession): void {
videoSession.on('macroStatusChanged', callback);
}
off('macroStatusChanged')20+
off(type: 'macroStatusChanged', callback?: AsyncCallback<boolean>): void
Unsubscribes from macro state change events.
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is fixed at 'macroStatusChanged'. The event can be listened for when a session is created. |
| callback | AsyncCallback<boolean> | No | Callback used to return the result. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. If true is returned, the unsubscription is successful. If false is returned, the unsubscription fails. |
Example
function unregisterMacroStatusChanged(videoSession: camera.VideoSession): void {
videoSession.off('macroStatusChanged');
}
onIsoInfoChange22+
onIsoInfoChange(callback: Callback<IsoInfo>): void
Subscribes to sensitivity (ISO) state change events and obtains the latest ISO value through a callback.
Model restriction: This API can be used only in the stage model.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| callback | Callback<IsoInfo> | Yes | Callback used to obtain the current ISO value of the camera. |
Example
function callback(isoInfo: camera.IsoInfo): void {
console.info(`Iso : ${isoInfo}`);
}
function registerIsoInfoChanged(videoSession: camera.VideoSession): void {
videoSession.onIsoInfoChange(callback);
}
offIsoInfoChange22+
offIsoInfoChange(callback?: Callback<IsoInfo>): void
Unsubscribes from ISO state change events.
Model restriction: This API can be used only in the stage model.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Multimedia.Camera.Core
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| callback | Callback<IsoInfo> | No | Callback used for unsubscription. If this parameter is specified, the subscription to the specified event with the specified callback is canceled. (The callback object cannot be an anonymous function.) Otherwise, the subscriptions to the specified event with all the callbacks are canceled. |
Example
function callback(isoInfo: camera.IsoInfo): void {
console.info(`Iso : ${isoInfo}`);
}
function unregisterIsoInfoChanged(videoSession: camera.VideoSession): void {
videoSession.offIsoInfoChange(callback);
}
function unregisterAllIsoInfoChanged(videoSession: camera.VideoSession): void {
videoSession.offIsoInfoChange();
}