harmony 鸿蒙Media Subsystem ChangeLog
Media Subsystem ChangeLog
cl.media.1 API Change of the Playback Function
Added the AVPlayer9+ 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: AudioPlayer6+ and VideoPlayer8+.
Change Impacts
The original APIs can still be used but are no longer maintained. You are advised to use the new API instead.
Key API/Component Changes
Added APIs
Class | Declaration |
---|---|
media | createAVPlayer(callback: AsyncCallback<AVPlayer>): void |
media | createAVPlayer() : Promise<AVPlayer> |
media.AVPlayer | interface AVPlayer |
media.AVPlayer | videoScaleType ?: VideoScaleType |
media.AVPlayer | url ?: string |
media.AVPlayer | surfaceId ?: string |
media.AVPlayer | stop(callback: AsyncCallback<void>): void |
media.AVPlayer | stop(): Promise<void> |
media.AVPlayer | setVolume(volume: number): void |
media.AVPlayer | setSpeed(speed: PlaybackSpeed): void |
media.AVPlayer | setBitrate(bitrate: number): void |
media.AVPlayer | seek(timeMs: number, mode?:SeekMode): void |
media.AVPlayer | reset(callback: AsyncCallback<void>): void |
media.AVPlayer | reset(): Promise<void> |
media.AVPlayer | release(callback: AsyncCallback<void>): void |
media.AVPlayer | release(): Promise<void> |
media.AVPlayer | readonly width: number |
media.AVPlayer | readonly state: AVPlayerState |
media.AVPlayer | readonly height: number |
media.AVPlayer | readonly duration: number |
media.AVPlayer | readonly currentTime: number |
media.AVPlayer | prepare(callback: AsyncCallback<void>): void |
media.AVPlayer | prepare(): Promise<void> |
media.AVPlayer | play(callback: AsyncCallback<void>): void |
media.AVPlayer | play(): Promise<void> |
media.AVPlayer | pause(callback: AsyncCallback<void>): void |
media.AVPlayer | pause(): Promise<void> |
media.AVPlayer | on(type: ‘volumeChange’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘videoSizeChange’, callback: (width: number, height: number) => void): void |
media.AVPlayer | on(type: ‘timeUpdate’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘stateChange’, callback: (state: AVPlayerState, reason: StateChangeReason) => void): void |
media.AVPlayer | on(type: ‘startRenderFrame’, callback: Callback<void>): void |
media.AVPlayer | on(type: ‘speedDone’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘seekDone’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘error’, callback: ErrorCallback): void |
media.AVPlayer | on(type: ‘endOfStream’, callback: Callback<void>): void |
media.AVPlayer | on(type: ‘durationUpdate’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘bufferingUpdate’, callback: (infoType: BufferingInfoType, value: number) => void): void |
media.AVPlayer | on(type: ‘bitrateDone’, callback: Callback<number>): void |
media.AVPlayer | on(type: ‘availableBitrates’, callback: (bitrates: Array<number>) => void): void |
media.AVPlayer | on(type: ‘audioInterrupt’, callback: (info: audio.InterruptEvent) => void): void |
media.AVPlayer | off(type: ‘volumeChange’): void |
media.AVPlayer | off(type: ‘videoSizeChange’): void |
media.AVPlayer | off(type: ‘timeUpdate’): void |
media.AVPlayer | off(type: ‘stateChange’): void |
media.AVPlayer | off(type: ‘startRenderFrame’): void |
media.AVPlayer | off(type: ‘speedDone’): void |
media.AVPlayer | off(type: ‘seekDone’): void |
media.AVPlayer | off(type: ‘error’): void |
media.AVPlayer | off(type: ‘endOfStream’): void |
media.AVPlayer | off(type: ‘durationUpdate’): void |
media.AVPlayer | off(type: ‘bufferingUpdate’): void |
media.AVPlayer | off(type: ‘bitrateDone’): void |
media.AVPlayer | off(type: ‘availableBitrates’): void |
media.AVPlayer | off(type: ‘audioInterrupt’): void |
media.AVPlayer | loop: boolean |
media.AVPlayer | getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void |
media.AVPlayer | getTrackDescription() : Promise<Array<MediaDescription>> |
media.AVPlayer | fdSrc ?: AVFileDescriptor |
media.AVPlayer | audioInterruptMode ?: audio.InterruptMode |
unnamed | type AVPlayerState = ‘idle’ |‘initialized’ |‘prepared’ |‘playing’ |‘paused’ |‘completed’ |‘stopped’ |‘released’ |‘error’ |
APIs no longer maintained
Class | Declaration |
---|---|
media | createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void |
media | createVideoPlayer() : Promise<VideoPlayer> |
media | createAudioPlayer(): AudioPlayer |
media.AudioPlayer | interface AudioPlayer |
media.AudioPlayer | play(): void |
media.AudioPlayer | release(): void |
media.AudioPlayer | audioInterruptMode ?: audio.InterruptMode |
media.AudioPlayer | fdSrc: AVFileDescriptor |
media.AudioPlayer | seek(timeMs: number): void |
media.AudioPlayer | readonly duration: number |
media.AudioPlayer | loop: boolean |
media.AudioPlayer | readonly state: AudioState |
media.AudioPlayer | getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void |
media.AudioPlayer | getTrackDescription() : Promise<Array<MediaDescription>> |
media.AudioPlayer | on(type: ‘bufferingUpdate’, callback: (infoType: BufferingInfoType, value: number) => void): void |
media.AudioPlayer | on(type: ‘play’ |‘pause’ |‘stop’ |‘reset’ |‘dataLoad’ |‘finish’ |‘volumeChange’, callback: () => void): void |
media.AudioPlayer | on(type: ‘timeUpdate’, callback: Callback<number>): void |
media.AudioPlayer | on(type: ‘audioInterrupt’, callback: (info: audio.InterruptEvent) => void): void |
media.AudioPlayer | on(type: ‘error’, callback: ErrorCallback): void |
media.AudioPlayer | setVolume(vol: number): void |
media.AudioPlayer | pause(): void |
media.AudioPlayer | readonly currentTime: number |
media.AudioPlayer | stop(): void |
media.AudioPlayer | reset(): void |
media.AudioPlayer | src: string |
media.VideoPlayer | interface VideoPlayer |
media.VideoPlayer | play(callback: AsyncCallback<void>): void |
media.VideoPlayer | play(): Promise<void> |
media.VideoPlayer | prepare(callback: AsyncCallback<void>): void |
media.VideoPlayer | prepare(): Promise<void> |
media.VideoPlayer | release(callback: AsyncCallback<void>): void |
media.VideoPlayer | release(): Promise<void> |
media.VideoPlayer | audioInterruptMode ?: audio.InterruptMode |
media.VideoPlayer | fdSrc: AVFileDescriptor |
media.VideoPlayer | seek(timeMs: number, callback: AsyncCallback<number>): void |
media.VideoPlayer | seek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void |
media.VideoPlayer | seek(timeMs: number, mode?:SeekMode): Promise<number> |
media.VideoPlayer | readonly duration: number |
media.VideoPlayer | loop: boolean |
media.VideoPlayer | videoScaleType ?: VideoScaleType |
media.VideoPlayer | readonly state: VideoPlayState |
media.VideoPlayer | getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void |
media.VideoPlayer | getTrackDescription() : Promise<Array<MediaDescription>> |
media.VideoPlayer | readonly height: number |
media.VideoPlayer | on(type: ‘playbackCompleted’, callback: Callback<void>): void |
media.VideoPlayer | on(type: ‘bufferingUpdate’, callback: (infoType: BufferingInfoType, value: number) => void): void |
media.VideoPlayer | on(type: ‘startRenderFrame’, callback: Callback<void>): void |
media.VideoPlayer | on(type: ‘videoSizeChanged’, callback: (width: number, height: number) => void): void |
media.VideoPlayer | on(type: ‘audioInterrupt’, callback: (info: audio.InterruptEvent) => void): void |
media.VideoPlayer | on(type: ‘error’, callback: ErrorCallback): void |
media.VideoPlayer | setDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void |
media.VideoPlayer | setDisplaySurface(surfaceId: string): Promise<void> |
media.VideoPlayer | setVolume(vol: number, callback: AsyncCallback<void>): void |
media.VideoPlayer | setVolume(vol: number): Promise<void> |
media.VideoPlayer | url: string |
media.VideoPlayer | pause(callback: AsyncCallback<void>): void |
media.VideoPlayer | pause(): Promise<void> |
media.VideoPlayer | readonly currentTime: number |
media.VideoPlayer | setSpeed(speed:number, callback: AsyncCallback<number>): void |
media.VideoPlayer | setSpeed(speed:number): Promise<number> |
media.VideoPlayer | stop(callback: AsyncCallback<void>): void |
media.VideoPlayer | stop(): Promise<void> |
media.VideoPlayer | readonly width: number |
media.VideoPlayer | reset(callback: AsyncCallback<void>): void |
media.VideoPlayer | reset(): Promise<void> |
unnamed | type AudioState = ‘idle’ |‘playing’ |‘paused’ |‘stopped’ |‘error’ |
unnamed | type VideoPlayState = ‘idle’ |‘prepared’ |‘playing’ |‘paused’ |‘stopped’ |‘error’ |
Adaptation Guide
For details, see the reference for each API.
cl.media.2 API Change of the Recording Function
Added the AVRecorder9+ 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: AudioRecorder6+ and VideoRecorder9+.
The AudioSourceType and VideoSourceType APIs shared by the old and new recording APIs are changed to non-system APIs.
Change Impacts
The AudioRecorder6+ and VideoRecorder9+ APIs can still be used but are no longer maintained. You are advised to use the AVRecorder9+ API instead.
Key API/Component Changes
Added APIs
Class | Declaration |
---|---|
media | createAVRecorder(callback: AsyncCallback<AVRecorder>): void |
media | createAVRecorder() : Promise<AVRecorder> |
media.AVRecorder | interface AVRecorder |
media.AVRecorder | prepare(config: AVRecorderConfig, callback: AsyncCallback<void>): void |
media.AVRecorder | prepare(config: AVRecorderConfig): Promise<void> |
media.AVRecorder | release(callback: AsyncCallback<void>): void |
media.AVRecorder | release(): Promise<void> |
media.AVRecorder | readonly state: AVRecorderState |
media.AVRecorder | on(type: ‘stateChange’, callback: (state: AVRecorderState, reason: StateChangeReason) => void): void |
media.AVRecorder | on(type: ‘error’, callback: ErrorCallback): void |
media.AVRecorder | resume(callback: AsyncCallback<void>): void |
media.AVRecorder | resume(): Promise<void> |
media.AVRecorder | start(callback: AsyncCallback<void>): void |
media.AVRecorder | start(): Promise<void> |
media.AVRecorder | off(type: ‘stateChange’): void |
media.AVRecorder | off(type: ‘error’): void |
media.AVRecorder | pause(callback: AsyncCallback<void>): void |
media.AVRecorder | pause(): Promise<void> |
media.AVRecorder | stop(callback: AsyncCallback<void>): void |
media.AVRecorder | stop(): Promise<void> |
media.AVRecorder | reset(callback: AsyncCallback<void>): void |
media.AVRecorder | reset(): Promise<void> |
media.AVRecorder | getInputSurface(callback: AsyncCallback<string>): void |
media.AVRecorder | getInputSurface(): Promise<string> |
media.AVRecorderConfig | videoSourceType?: VideoSourceType |
media.AVRecorderConfig | audioSourceType?: AudioSourceType |
media.AVRecorderConfig | profile: AVRecorderProfile |
media.AVRecorderConfig | rotation?: number |
media.AVRecorderConfig | url: string |
media.AVRecorderConfig | location?: Location |
media.AVRecorderConfig | interface AVRecorderConfig |
media.AVRecorderProfile | videoBitrate?: number |
media.AVRecorderProfile | videoCodec?: CodecMimeType |
media.AVRecorderProfile | audioCodec?: CodecMimeType |
media.AVRecorderProfile | videoFrameRate?: number |
media.AVRecorderProfile | videoFrameHeight?: number |
media.AVRecorderProfile | audioSampleRate?: number |
media.AVRecorderProfile | audioBitrate?: number |
media.AVRecorderProfile | videoFrameWidth?: number |
media.AVRecorderProfile | audioChannels?: number |
media.AVRecorderProfile | fileFormat: ContainerFormatType |
media.AVRecorderProfile | interface AVRecorderProfile |
unnamed | type AVRecorderState = ‘idle’ |‘prepared’ |‘started’ |‘paused’ |‘stopped’ |‘released’ |‘error’ |
APIs no longer maintained
Class | Declaration |
---|---|
media | createVideoRecorder(callback: AsyncCallback<VideoRecorder>): void |
media | createVideoRecorder(): Promise<VideoRecorder> |
media | createAudioRecorder(): AudioRecorder |
media.AudioRecorder | interface AudioRecorder |
media.AudioRecorder | prepare(config: AudioRecorderConfig): void |
media.AudioRecorder | release(): void |
media.AudioRecorder | on(type: ‘prepare’ |‘start’ |‘pause’ |‘resume’ |‘stop’ |‘release’ |‘reset’, callback: () => void): void |
media.AudioRecorder | on(type: ‘error’, callback: ErrorCallback): void |
media.AudioRecorder | resume(): void |
media.AudioRecorder | start(): void |
media.AudioRecorder | pause(): void |
media.AudioRecorder | stop(): void |
media.AudioRecorder | reset(): void |
media.AudioRecorderConfig | audioSampleRate?: number |
media.AudioRecorderConfig | location?: Location |
media.AudioRecorderConfig | fileFormat?: ContainerFormatType |
media.AudioRecorderConfig | interface AudioRecorderConfig |
media.AudioRecorderConfig | audioEncoder?: AudioEncoder |
media.AudioRecorderConfig | audioEncodeBitRate?: number |
media.AudioRecorderConfig | numberOfChannels?: number |
media.AudioRecorderConfig | format?: AudioOutputFormat |
media.AudioRecorderConfig | uri: string |
media.AudioRecorderConfig | audioEncoderMime?: CodecMimeType |
media.VideoRecorder | interface VideoRecorder |
media.VideoRecorder | prepare(config: VideoRecorderConfig, callback: AsyncCallback<void>): void |
media.VideoRecorder | prepare(config: VideoRecorderConfig): Promise<void> |
media.VideoRecorder | release(callback: AsyncCallback<void>): void |
media.VideoRecorder | release(): Promise<void> |
media.VideoRecorder | readonly state: VideoRecordState |
media.VideoRecorder | on(type: ‘error’, callback: ErrorCallback): void |
media.VideoRecorder | resume(callback: AsyncCallback<void>): void |
media.VideoRecorder | resume(): Promise<void> |
media.VideoRecorder | start(callback: AsyncCallback<void>): void |
media.VideoRecorder | start(): Promise<void> |
media.VideoRecorder | pause(callback: AsyncCallback<void>): void |
media.VideoRecorder | pause(): Promise<void> |
media.VideoRecorder | stop(callback: AsyncCallback<void>): void |
media.VideoRecorder | stop(): Promise<void> |
media.VideoRecorder | reset(callback: AsyncCallback<void>): void |
media.VideoRecorder | reset(): Promise<void> |
media.VideoRecorder | getInputSurface(callback: AsyncCallback<string>): void |
media.VideoRecorder | getInputSurface(): Promise<string> |
media.VideoRecorderConfig | videoSourceType: VideoSourceType |
media.VideoRecorderConfig | audioSourceType?: AudioSourceType |
media.VideoRecorderConfig | profile: VideoRecorderProfile |
media.VideoRecorderConfig | rotation?: number |
media.VideoRecorderConfig | url: string |
media.VideoRecorderConfig | location?: Location |
media.VideoRecorderConfig | interface VideoRecorderConfig |
media.VideoRecorderProfile | readonly videoBitrate: number |
media.VideoRecorderProfile | readonly videoCodec: CodecMimeType |
media.VideoRecorderProfile | readonly audioCodec: CodecMimeType |
media.VideoRecorderProfile | readonly videoFrameRate: number |
media.VideoRecorderProfile | readonly videoFrameHeight: number |
media.VideoRecorderProfile | readonly audioSampleRate: number |
media.VideoRecorderProfile | readonly audioBitrate: number |
media.VideoRecorderProfile | readonly videoFrameWidth: number |
media.VideoRecorderProfile | readonly audioChannels: number |
media.VideoRecorderProfile | readonly fileFormat: ContainerFormatType |
media.VideoRecorderProfile | interface VideoRecorderProfile |
unnamed | type VideoRecordState = ‘idle’ |‘prepared’ |‘playing’ |‘paused’ |‘stopped’ |‘error’ |
Changed APIs
Class | Declaration | Capability Before Change | Capability After Change | Whether a System API Before Change | Whether a System API After Change |
---|---|---|---|---|---|
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 |
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 |
Adaptation Guide
For details, see the reference for each API.
cl.media.3 Error Code Change
Added the standard error code enumeration type AVErrorCode99+ that replaces the original error code enumeration type MediaErrorCode8+.
Change Impacts
The error code enumeration type MediaErrorCode8+ is still used for original APIs. AVErrorCode99+ is used for newly added APIs.
Key API/Component Changes
Added API
Class | Declaration |
---|---|
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, } |
API no longer maintained
Class | Declaration |
---|---|
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, } |
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Web Subsystem ChangeLog
harmony 鸿蒙Ability Subsystem ChangeLog
harmony 鸿蒙Bluetooth Subsystem ChangeLog
harmony 鸿蒙Distributed Data Management Subsystem JS API Changelog
harmony 鸿蒙File Management Subsystem ChangeLog
harmony 鸿蒙Globalization Subsystem ChangeLog
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦