1e41f4b71Sopenharmony_ci# Media Subsystem ChangeLog 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## cl.media.1 API Change of the Playback Function 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciAdded the [AVPlayer](../../../application-dev/reference/apis/js-apis-media.md#avplayer9)<sup>9+</sup> API for audio and video playback, with the updated state machine and error codes, which is recommended. The following APIs for audio playback and video playback are no longer maintained: [AudioPlayer](../../../application-dev/reference/apis/js-apis-media.md#audioplayer)<sup>6+</sup> and [VideoPlayer](../../../application-dev/reference/apis/js-apis-media.md#videoplayer)<sup>8+</sup>. 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci**Change Impacts** 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciThe original APIs can still be used but are no longer maintained. You are advised to use the new API instead. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci**Key API/Component Changes** 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ciAdded APIs 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci| Class | Declaration | 16e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------------------------ | 17e41f4b71Sopenharmony_ci| media | createAVPlayer(callback: AsyncCallback\<AVPlayer>): void | 18e41f4b71Sopenharmony_ci| media | createAVPlayer() : Promise\<AVPlayer> | 19e41f4b71Sopenharmony_ci| media.AVPlayer | interface AVPlayer | 20e41f4b71Sopenharmony_ci| media.AVPlayer | videoScaleType ?: VideoScaleType | 21e41f4b71Sopenharmony_ci| media.AVPlayer | url ?: string | 22e41f4b71Sopenharmony_ci| media.AVPlayer | surfaceId ?: string | 23e41f4b71Sopenharmony_ci| media.AVPlayer | stop(callback: AsyncCallback\<void>): void | 24e41f4b71Sopenharmony_ci| media.AVPlayer | stop(): Promise\<void> | 25e41f4b71Sopenharmony_ci| media.AVPlayer | setVolume(volume: number): void | 26e41f4b71Sopenharmony_ci| media.AVPlayer | setSpeed(speed: PlaybackSpeed): void | 27e41f4b71Sopenharmony_ci| media.AVPlayer | setBitrate(bitrate: number): void | 28e41f4b71Sopenharmony_ci| media.AVPlayer | seek(timeMs: number, mode?:SeekMode): void | 29e41f4b71Sopenharmony_ci| media.AVPlayer | reset(callback: AsyncCallback\<void>): void | 30e41f4b71Sopenharmony_ci| media.AVPlayer | reset(): Promise\<void> | 31e41f4b71Sopenharmony_ci| media.AVPlayer | release(callback: AsyncCallback\<void>): void | 32e41f4b71Sopenharmony_ci| media.AVPlayer | release(): Promise\<void> | 33e41f4b71Sopenharmony_ci| media.AVPlayer | readonly width: number | 34e41f4b71Sopenharmony_ci| media.AVPlayer | readonly state: AVPlayerState | 35e41f4b71Sopenharmony_ci| media.AVPlayer | readonly height: number | 36e41f4b71Sopenharmony_ci| media.AVPlayer | readonly duration: number | 37e41f4b71Sopenharmony_ci| media.AVPlayer | readonly currentTime: number | 38e41f4b71Sopenharmony_ci| media.AVPlayer | prepare(callback: AsyncCallback\<void>): void | 39e41f4b71Sopenharmony_ci| media.AVPlayer | prepare(): Promise\<void> | 40e41f4b71Sopenharmony_ci| media.AVPlayer | play(callback: AsyncCallback\<void>): void | 41e41f4b71Sopenharmony_ci| media.AVPlayer | play(): Promise\<void> | 42e41f4b71Sopenharmony_ci| media.AVPlayer | pause(callback: AsyncCallback\<void>): void | 43e41f4b71Sopenharmony_ci| media.AVPlayer | pause(): Promise\<void> | 44e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'volumeChange', callback: Callback\<number>): void | 45e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'videoSizeChange', callback: (width: number, height: number) => void): void | 46e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'timeUpdate', callback: Callback\<number>): void | 47e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'stateChange', callback: (state: AVPlayerState, reason: StateChangeReason) => void): void | 48e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'startRenderFrame', callback: Callback\<void>): void | 49e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'speedDone', callback: Callback\<number>): void | 50e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'seekDone', callback: Callback\<number>): void | 51e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'error', callback: ErrorCallback): void | 52e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'endOfStream', callback: Callback\<void>): void | 53e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'durationUpdate', callback: Callback\<number>): void | 54e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void | 55e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'bitrateDone', callback: Callback\<number>): void | 56e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'availableBitrates', callback: (bitrates: Array\<number>) => void): void | 57e41f4b71Sopenharmony_ci| media.AVPlayer | on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void | 58e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'volumeChange'): void | 59e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'videoSizeChange'): void | 60e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'timeUpdate'): void | 61e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'stateChange'): void | 62e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'startRenderFrame'): void | 63e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'speedDone'): void | 64e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'seekDone'): void | 65e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'error'): void | 66e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'endOfStream'): void | 67e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'durationUpdate'): void | 68e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'bufferingUpdate'): void | 69e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'bitrateDone'): void | 70e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'availableBitrates'): void | 71e41f4b71Sopenharmony_ci| media.AVPlayer | off(type: 'audioInterrupt'): void | 72e41f4b71Sopenharmony_ci| media.AVPlayer | loop: boolean | 73e41f4b71Sopenharmony_ci| media.AVPlayer | getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void | 74e41f4b71Sopenharmony_ci| media.AVPlayer | getTrackDescription() : Promise\<Array\<MediaDescription>> | 75e41f4b71Sopenharmony_ci| media.AVPlayer | fdSrc ?: AVFileDescriptor | 76e41f4b71Sopenharmony_ci| media.AVPlayer | audioInterruptMode ?: audio.InterruptMode | 77e41f4b71Sopenharmony_ci| unnamed | type AVPlayerState = 'idle' \| 'initialized' \| 'prepared' \| 'playing' \| 'paused' \| 'completed' \| 'stopped' \| 'released' \| 'error' | 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ciAPIs no longer maintained 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci| Class | Declaration | 82e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------------------------ | 83e41f4b71Sopenharmony_ci| media | createVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void | 84e41f4b71Sopenharmony_ci| media | createVideoPlayer() : Promise\<VideoPlayer> | 85e41f4b71Sopenharmony_ci| media | createAudioPlayer(): AudioPlayer | 86e41f4b71Sopenharmony_ci| media.AudioPlayer | interface AudioPlayer | 87e41f4b71Sopenharmony_ci| media.AudioPlayer | play(): void | 88e41f4b71Sopenharmony_ci| media.AudioPlayer | release(): void | 89e41f4b71Sopenharmony_ci| media.AudioPlayer | audioInterruptMode ?: audio.InterruptMode | 90e41f4b71Sopenharmony_ci| media.AudioPlayer | fdSrc: AVFileDescriptor | 91e41f4b71Sopenharmony_ci| media.AudioPlayer | seek(timeMs: number): void | 92e41f4b71Sopenharmony_ci| media.AudioPlayer | readonly duration: number | 93e41f4b71Sopenharmony_ci| media.AudioPlayer | loop: boolean | 94e41f4b71Sopenharmony_ci| media.AudioPlayer | readonly state: AudioState | 95e41f4b71Sopenharmony_ci| media.AudioPlayer | getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void | 96e41f4b71Sopenharmony_ci| media.AudioPlayer | getTrackDescription() : Promise\<Array\<MediaDescription>> | 97e41f4b71Sopenharmony_ci| media.AudioPlayer | on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void | 98e41f4b71Sopenharmony_ci| media.AudioPlayer | on(type: 'play' \| 'pause' \| 'stop' \| 'reset' \| 'dataLoad' \| 'finish' \| 'volumeChange', callback: () => void): void | 99e41f4b71Sopenharmony_ci| media.AudioPlayer | on(type: 'timeUpdate', callback: Callback\<number>): void | 100e41f4b71Sopenharmony_ci| media.AudioPlayer | on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void | 101e41f4b71Sopenharmony_ci| media.AudioPlayer | on(type: 'error', callback: ErrorCallback): void | 102e41f4b71Sopenharmony_ci| media.AudioPlayer | setVolume(vol: number): void | 103e41f4b71Sopenharmony_ci| media.AudioPlayer | pause(): void | 104e41f4b71Sopenharmony_ci| media.AudioPlayer | readonly currentTime: number | 105e41f4b71Sopenharmony_ci| media.AudioPlayer | stop(): void | 106e41f4b71Sopenharmony_ci| media.AudioPlayer | reset(): void | 107e41f4b71Sopenharmony_ci| media.AudioPlayer | src: string | 108e41f4b71Sopenharmony_ci| media.VideoPlayer | interface VideoPlayer | 109e41f4b71Sopenharmony_ci| media.VideoPlayer | play(callback: AsyncCallback\<void>): void | 110e41f4b71Sopenharmony_ci| media.VideoPlayer | play(): Promise\<void> | 111e41f4b71Sopenharmony_ci| media.VideoPlayer | prepare(callback: AsyncCallback\<void>): void | 112e41f4b71Sopenharmony_ci| media.VideoPlayer | prepare(): Promise\<void> | 113e41f4b71Sopenharmony_ci| media.VideoPlayer | release(callback: AsyncCallback\<void>): void | 114e41f4b71Sopenharmony_ci| media.VideoPlayer | release(): Promise\<void> | 115e41f4b71Sopenharmony_ci| media.VideoPlayer | audioInterruptMode ?: audio.InterruptMode | 116e41f4b71Sopenharmony_ci| media.VideoPlayer | fdSrc: AVFileDescriptor | 117e41f4b71Sopenharmony_ci| media.VideoPlayer | seek(timeMs: number, callback: AsyncCallback\<number>): void | 118e41f4b71Sopenharmony_ci| media.VideoPlayer | seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void | 119e41f4b71Sopenharmony_ci| media.VideoPlayer | seek(timeMs: number, mode?:SeekMode): Promise\<number> | 120e41f4b71Sopenharmony_ci| media.VideoPlayer | readonly duration: number | 121e41f4b71Sopenharmony_ci| media.VideoPlayer | loop: boolean | 122e41f4b71Sopenharmony_ci| media.VideoPlayer | videoScaleType ?: VideoScaleType | 123e41f4b71Sopenharmony_ci| media.VideoPlayer | readonly state: VideoPlayState | 124e41f4b71Sopenharmony_ci| media.VideoPlayer | getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void | 125e41f4b71Sopenharmony_ci| media.VideoPlayer | getTrackDescription() : Promise\<Array\<MediaDescription>> | 126e41f4b71Sopenharmony_ci| media.VideoPlayer | readonly height: number | 127e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'playbackCompleted', callback: Callback\<void>): void | 128e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void | 129e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'startRenderFrame', callback: Callback\<void>): void | 130e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void | 131e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void | 132e41f4b71Sopenharmony_ci| media.VideoPlayer | on(type: 'error', callback: ErrorCallback): void | 133e41f4b71Sopenharmony_ci| media.VideoPlayer | setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void | 134e41f4b71Sopenharmony_ci| media.VideoPlayer | setDisplaySurface(surfaceId: string): Promise\<void> | 135e41f4b71Sopenharmony_ci| media.VideoPlayer | setVolume(vol: number, callback: AsyncCallback\<void>): void | 136e41f4b71Sopenharmony_ci| media.VideoPlayer | setVolume(vol: number): Promise\<void> | 137e41f4b71Sopenharmony_ci| media.VideoPlayer | url: string | 138e41f4b71Sopenharmony_ci| media.VideoPlayer | pause(callback: AsyncCallback\<void>): void | 139e41f4b71Sopenharmony_ci| media.VideoPlayer | pause(): Promise\<void> | 140e41f4b71Sopenharmony_ci| media.VideoPlayer | readonly currentTime: number | 141e41f4b71Sopenharmony_ci| media.VideoPlayer | setSpeed(speed:number, callback: AsyncCallback\<number>): void | 142e41f4b71Sopenharmony_ci| media.VideoPlayer | setSpeed(speed:number): Promise\<number> | 143e41f4b71Sopenharmony_ci| media.VideoPlayer | stop(callback: AsyncCallback\<void>): void | 144e41f4b71Sopenharmony_ci| media.VideoPlayer | stop(): Promise\<void> | 145e41f4b71Sopenharmony_ci| media.VideoPlayer | readonly width: number | 146e41f4b71Sopenharmony_ci| media.VideoPlayer | reset(callback: AsyncCallback\<void>): void | 147e41f4b71Sopenharmony_ci| media.VideoPlayer | reset(): Promise\<void> | 148e41f4b71Sopenharmony_ci| unnamed | type AudioState = 'idle' \| 'playing' \| 'paused' \| 'stopped' \| 'error' | 149e41f4b71Sopenharmony_ci| unnamed | type VideoPlayState = 'idle' \| 'prepared' \| 'playing' \| 'paused' \| 'stopped' \| 'error' | 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci**Adaptation Guide** 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ciFor details, see the [reference](../../../application-dev/reference/apis/js-apis-media.md) for each API. 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci## cl.media.2 API Change of the Recording Function 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ciAdded the [AVRecorder](../../../application-dev/reference/apis/js-apis-media.md#avrecorder9)<sup>9+</sup> API for audio and video recording, with the updated state machine and error codes, which is recommended. The following APIs for audio recording and video recording are no longer maintained: [AudioRecorder](../../../application-dev/reference/apis/js-apis-media.md#audiorecorder)<sup>6+</sup> and [VideoRecorder](../../../application-dev/reference/apis/js-apis-media.md#videorecorder9)<sup>9+</sup>. 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ciThe [AudioSourceType](../../../application-dev/reference/apis/js-apis-media.md#audiosourcetype9) and [VideoSourceType](../../../application-dev/reference/apis/js-apis-media.md#videosourcetype9) APIs shared by the old and new recording APIs are changed to non-system APIs. 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**Change Impacts** 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ciThe [AudioRecorder](../../../application-dev/reference/apis/js-apis-media.md#audiorecorder)<sup>6+</sup> and [VideoRecorder](../../../application-dev/reference/apis/js-apis-media.md#videorecorder9)<sup>9+</sup> APIs can still be used but are no longer maintained. You are advised to use the [AVRecorder](../../../application-dev/reference/apis/js-apis-media.md#avrecorder9)<sup>9+</sup> API instead. 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci**Key API/Component Changes** 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ciAdded APIs 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci| Class | Declaration | 170e41f4b71Sopenharmony_ci| ----------------------- | ------------------------------------------------------------ | 171e41f4b71Sopenharmony_ci| media | createAVRecorder(callback: AsyncCallback\<AVRecorder>): void | 172e41f4b71Sopenharmony_ci| media | createAVRecorder() : Promise\<AVRecorder> | 173e41f4b71Sopenharmony_ci| media.AVRecorder | interface AVRecorder | 174e41f4b71Sopenharmony_ci| media.AVRecorder | prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void | 175e41f4b71Sopenharmony_ci| media.AVRecorder | prepare(config: AVRecorderConfig): Promise\<void> | 176e41f4b71Sopenharmony_ci| media.AVRecorder | release(callback: AsyncCallback\<void>): void | 177e41f4b71Sopenharmony_ci| media.AVRecorder | release(): Promise\<void> | 178e41f4b71Sopenharmony_ci| media.AVRecorder | readonly state: AVRecorderState | 179e41f4b71Sopenharmony_ci| media.AVRecorder | on(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void | 180e41f4b71Sopenharmony_ci| media.AVRecorder | on(type: 'error', callback: ErrorCallback): void | 181e41f4b71Sopenharmony_ci| media.AVRecorder | resume(callback: AsyncCallback\<void>): void | 182e41f4b71Sopenharmony_ci| media.AVRecorder | resume(): Promise\<void> | 183e41f4b71Sopenharmony_ci| media.AVRecorder | start(callback: AsyncCallback\<void>): void | 184e41f4b71Sopenharmony_ci| media.AVRecorder | start(): Promise\<void> | 185e41f4b71Sopenharmony_ci| media.AVRecorder | off(type: 'stateChange'): void | 186e41f4b71Sopenharmony_ci| media.AVRecorder | off(type: 'error'): void | 187e41f4b71Sopenharmony_ci| media.AVRecorder | pause(callback: AsyncCallback\<void>): void | 188e41f4b71Sopenharmony_ci| media.AVRecorder | pause(): Promise\<void> | 189e41f4b71Sopenharmony_ci| media.AVRecorder | stop(callback: AsyncCallback\<void>): void | 190e41f4b71Sopenharmony_ci| media.AVRecorder | stop(): Promise\<void> | 191e41f4b71Sopenharmony_ci| media.AVRecorder | reset(callback: AsyncCallback\<void>): void | 192e41f4b71Sopenharmony_ci| media.AVRecorder | reset(): Promise\<void> | 193e41f4b71Sopenharmony_ci| media.AVRecorder | getInputSurface(callback: AsyncCallback\<string>): void | 194e41f4b71Sopenharmony_ci| media.AVRecorder | getInputSurface(): Promise\<string> | 195e41f4b71Sopenharmony_ci| media.AVRecorderConfig | videoSourceType?: VideoSourceType | 196e41f4b71Sopenharmony_ci| media.AVRecorderConfig | audioSourceType?: AudioSourceType | 197e41f4b71Sopenharmony_ci| media.AVRecorderConfig | profile: AVRecorderProfile | 198e41f4b71Sopenharmony_ci| media.AVRecorderConfig | rotation?: number | 199e41f4b71Sopenharmony_ci| media.AVRecorderConfig | url: string | 200e41f4b71Sopenharmony_ci| media.AVRecorderConfig | location?: Location | 201e41f4b71Sopenharmony_ci| media.AVRecorderConfig | interface AVRecorderConfig | 202e41f4b71Sopenharmony_ci| media.AVRecorderProfile | videoBitrate?: number | 203e41f4b71Sopenharmony_ci| media.AVRecorderProfile | videoCodec?: CodecMimeType | 204e41f4b71Sopenharmony_ci| media.AVRecorderProfile | audioCodec?: CodecMimeType | 205e41f4b71Sopenharmony_ci| media.AVRecorderProfile | videoFrameRate?: number | 206e41f4b71Sopenharmony_ci| media.AVRecorderProfile | videoFrameHeight?: number | 207e41f4b71Sopenharmony_ci| media.AVRecorderProfile | audioSampleRate?: number | 208e41f4b71Sopenharmony_ci| media.AVRecorderProfile | audioBitrate?: number | 209e41f4b71Sopenharmony_ci| media.AVRecorderProfile | videoFrameWidth?: number | 210e41f4b71Sopenharmony_ci| media.AVRecorderProfile | audioChannels?: number | 211e41f4b71Sopenharmony_ci| media.AVRecorderProfile | fileFormat: ContainerFormatType | 212e41f4b71Sopenharmony_ci| media.AVRecorderProfile | interface AVRecorderProfile | 213e41f4b71Sopenharmony_ci| unnamed | type AVRecorderState = 'idle' \| 'prepared' \| 'started' \| 'paused' \| 'stopped' \| 'released' \| 'error' | 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ciAPIs no longer maintained 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci| Class | Declaration | 218e41f4b71Sopenharmony_ci| -------------------------- | ------------------------------------------------------------ | 219e41f4b71Sopenharmony_ci| media | createVideoRecorder(callback: AsyncCallback\<VideoRecorder>): void | 220e41f4b71Sopenharmony_ci| media | createVideoRecorder(): Promise\<VideoRecorder> | 221e41f4b71Sopenharmony_ci| media | createAudioRecorder(): AudioRecorder | 222e41f4b71Sopenharmony_ci| media.AudioRecorder | interface AudioRecorder | 223e41f4b71Sopenharmony_ci| media.AudioRecorder | prepare(config: AudioRecorderConfig): void | 224e41f4b71Sopenharmony_ci| media.AudioRecorder | release(): void | 225e41f4b71Sopenharmony_ci| media.AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void | 226e41f4b71Sopenharmony_ci| media.AudioRecorder | on(type: 'error', callback: ErrorCallback): void | 227e41f4b71Sopenharmony_ci| media.AudioRecorder | resume(): void | 228e41f4b71Sopenharmony_ci| media.AudioRecorder | start(): void | 229e41f4b71Sopenharmony_ci| media.AudioRecorder | pause(): void | 230e41f4b71Sopenharmony_ci| media.AudioRecorder | stop(): void | 231e41f4b71Sopenharmony_ci| media.AudioRecorder | reset(): void | 232e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | audioSampleRate?: number | 233e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | location?: Location | 234e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | fileFormat?: ContainerFormatType | 235e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | interface AudioRecorderConfig | 236e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | audioEncoder?: AudioEncoder | 237e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | audioEncodeBitRate?: number | 238e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | numberOfChannels?: number | 239e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | format?: AudioOutputFormat | 240e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | uri: string | 241e41f4b71Sopenharmony_ci| media.AudioRecorderConfig | audioEncoderMime?: CodecMimeType | 242e41f4b71Sopenharmony_ci| media.VideoRecorder | interface VideoRecorder | 243e41f4b71Sopenharmony_ci| media.VideoRecorder | prepare(config: VideoRecorderConfig, callback: AsyncCallback\<void>): void | 244e41f4b71Sopenharmony_ci| media.VideoRecorder | prepare(config: VideoRecorderConfig): Promise\<void> | 245e41f4b71Sopenharmony_ci| media.VideoRecorder | release(callback: AsyncCallback\<void>): void | 246e41f4b71Sopenharmony_ci| media.VideoRecorder | release(): Promise\<void> | 247e41f4b71Sopenharmony_ci| media.VideoRecorder | readonly state: VideoRecordState | 248e41f4b71Sopenharmony_ci| media.VideoRecorder | on(type: 'error', callback: ErrorCallback): void | 249e41f4b71Sopenharmony_ci| media.VideoRecorder | resume(callback: AsyncCallback\<void>): void | 250e41f4b71Sopenharmony_ci| media.VideoRecorder | resume(): Promise\<void> | 251e41f4b71Sopenharmony_ci| media.VideoRecorder | start(callback: AsyncCallback\<void>): void | 252e41f4b71Sopenharmony_ci| media.VideoRecorder | start(): Promise\<void> | 253e41f4b71Sopenharmony_ci| media.VideoRecorder | pause(callback: AsyncCallback\<void>): void | 254e41f4b71Sopenharmony_ci| media.VideoRecorder | pause(): Promise\<void> | 255e41f4b71Sopenharmony_ci| media.VideoRecorder | stop(callback: AsyncCallback\<void>): void | 256e41f4b71Sopenharmony_ci| media.VideoRecorder | stop(): Promise\<void> | 257e41f4b71Sopenharmony_ci| media.VideoRecorder | reset(callback: AsyncCallback\<void>): void | 258e41f4b71Sopenharmony_ci| media.VideoRecorder | reset(): Promise\<void> | 259e41f4b71Sopenharmony_ci| media.VideoRecorder | getInputSurface(callback: AsyncCallback\<string>): void | 260e41f4b71Sopenharmony_ci| media.VideoRecorder | getInputSurface(): Promise\<string> | 261e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | videoSourceType: VideoSourceType | 262e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | audioSourceType?: AudioSourceType | 263e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | profile: VideoRecorderProfile | 264e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | rotation?: number | 265e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | url: string | 266e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | location?: Location | 267e41f4b71Sopenharmony_ci| media.VideoRecorderConfig | interface VideoRecorderConfig | 268e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly videoBitrate: number | 269e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly videoCodec: CodecMimeType | 270e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly audioCodec: CodecMimeType | 271e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly videoFrameRate: number | 272e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly videoFrameHeight: number | 273e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly audioSampleRate: number | 274e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly audioBitrate: number | 275e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly videoFrameWidth: number | 276e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly audioChannels: number | 277e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | readonly fileFormat: ContainerFormatType | 278e41f4b71Sopenharmony_ci| media.VideoRecorderProfile | interface VideoRecorderProfile | 279e41f4b71Sopenharmony_ci| unnamed | type VideoRecordState = 'idle' \| 'prepared' \| 'playing' \| 'paused' \| 'stopped' \| 'error' | 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ciChanged APIs 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci| Class | Declaration | Capability Before Change | Capability After Change | Whether a System API Before Change| Whether a System API After Change| 284e41f4b71Sopenharmony_ci| --------------------- | ------------------------------------------------------------ | ----------------------------------------------- | -------------------------------------------- | -------------------- | -------------------- | 285e41f4b71Sopenharmony_ci| media.AudioSourceType | enum AudioSourceType { /** * default audio source type. * @since 9 * @syscap SystemCapability.Multimedia.Media.AVRecorder */ AUDIO_SOURCE_TYPE_DEFAULT = 0, /** * source type mic. * @since 9 * @syscap SystemCapability.Multimedia.Media.AVRecorder */ AUDIO_SOURCE_TYPE_MIC = 1, } | SystemCapability.Multimedia.Media.VideoRecorder | SystemCapability.Multimedia.Media.AVRecorder | Yes | No | 286e41f4b71Sopenharmony_ci| media.VideoSourceType | enum VideoSourceType { /** * surface raw data. * @since 9 * @syscap SystemCapability.Multimedia.Media.AVRecorder */ VIDEO_SOURCE_TYPE_SURFACE_YUV = 0, /** * surface ES data. * @since 9 * @syscap SystemCapability.Multimedia.Media.AVRecorder */ VIDEO_SOURCE_TYPE_SURFACE_ES = 1, } | SystemCapability.Multimedia.Media.VideoRecorder | SystemCapability.Multimedia.Media.AVRecorder | Yes | No | 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci**Adaptation Guide** 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ciFor details, see the [reference](../../../application-dev/reference/apis/js-apis-media.md) for each API. 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci## cl.media.3 Error Code Change 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ciAdded the standard error code enumeration type [AVErrorCode9](../../../application-dev/reference/apis/js-apis-media.md#averrorcode)<sup>9+</sup> that replaces the original error code enumeration type [MediaErrorCode](../../../application-dev/reference/apis/js-apis-media.md#mediaerrorcode)<sup>8+</sup>. 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci**Change Impacts** 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ciThe error code enumeration type [MediaErrorCode](../../../application-dev/reference/apis/js-apis-media.md#mediaerrorcode)<sup>8+</sup> is still used for original APIs. [AVErrorCode9](../../../application-dev/reference/apis/js-apis-media.md#averrorcode)<sup>9+</sup> is used for newly added APIs. 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci**Key API/Component Changes** 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ciAdded API 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci| Class | Declaration | 305e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------------------------ | 306e41f4b71Sopenharmony_ci| media.AVErrorCode | enum AVErrorCode { /** * operation success. * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_OK = 0, /** * permission denied. * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_NO_PERMISSION = 201, /** * invalid parameter. * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_INVALID_PARAMETER = 401, /** * the api is not supported in the current version * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_UNSUPPORT_CAPABILITY = 801, /** * the system memory is insufficient or the number of services reaches the upper limit * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_NO_MEMORY = 5400101, /** * current status does not allow or do not have permission to perform this operation * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_OPERATE_NOT_PERMIT = 5400102, /** * data flow exception information * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_IO = 5400103, /** * system or network response timeout. * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_TIMEOUT = 5400104, /** * service process died. * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_SERVICE_DIED = 5400105, /** * unsupported media format * @since 9 * @syscap SystemCapability.Multimedia.Media.Core */ AVERR_UNSUPPORT_FORMAT = 5400106, } | 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ciAPI no longer maintained 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci| Class | Declaration | 311e41f4b71Sopenharmony_ci| -------------------- | ------------------------------------------------------------ | 312e41f4b71Sopenharmony_ci| media.MediaErrorCode | enum MediaErrorCode { /** * operation success. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_OK = 0, /** * malloc or new memory failed. maybe system have no memory. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_NO_MEMORY = 1, /** * no permission for the operation. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_OPERATION_NOT_PERMIT = 2, /** * invalid argument. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_INVALID_VAL = 3, /** * an I/O error occurred. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_IO = 4, /** * operation time out. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_TIMEOUT = 5, /** * unknown error. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_UNKNOWN = 6, /** * media service died. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_SERVICE_DIED = 7, /** * operation is not permit in current state. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_INVALID_STATE = 8, /** * operation is not supported in current version. * @since 8 * @syscap SystemCapability.Multimedia.Media.Core */ MSERR_UNSUPPORTED = 9, } | 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci <!--no_check-->