openharmony 鸿蒙 changelogs-media

2023-02-03 浏览 (686)

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

ClassDeclaration
mediacreateAVPlayer(callback: AsyncCallback<AVPlayer>): void
mediacreateAVPlayer() : Promise<AVPlayer>
media.AVPlayerinterface AVPlayer
media.AVPlayervideoScaleType ?: VideoScaleType
media.AVPlayerurl ?: string
media.AVPlayersurfaceId ?: string
media.AVPlayerstop(callback: AsyncCallback<void>): void
media.AVPlayerstop(): Promise<void>
media.AVPlayersetVolume(volume: number): void
media.AVPlayersetSpeed(speed: PlaybackSpeed): void
media.AVPlayersetBitrate(bitrate: number): void
media.AVPlayerseek(timeMs: number, mode?:SeekMode): void
media.AVPlayerreset(callback: AsyncCallback<void>): void
media.AVPlayerreset(): Promise<void>
media.AVPlayerrelease(callback: AsyncCallback<void>): void
media.AVPlayerrelease(): Promise<void>
media.AVPlayerreadonly width: number
media.AVPlayerreadonly state: AVPlayerState
media.AVPlayerreadonly height: number
media.AVPlayerreadonly duration: number
media.AVPlayerreadonly currentTime: number
media.AVPlayerprepare(callback: AsyncCallback<void>): void
media.AVPlayerprepare(): Promise<void>
media.AVPlayerplay(callback: AsyncCallback<void>): void
media.AVPlayerplay(): Promise<void>
media.AVPlayerpause(callback: AsyncCallback<void>): void
media.AVPlayerpause(): Promise<void>
media.AVPlayeron(type: 'volumeChange', callback: Callback<number>): void
media.AVPlayeron(type: 'videoSizeChange', callback: (width: number, height: number) => void): void
media.AVPlayeron(type: 'timeUpdate', callback: Callback<number>): void
media.AVPlayeron(type: 'stateChange', callback: (state: AVPlayerState, reason: StateChangeReason) => void): void
media.AVPlayeron(type: 'startRenderFrame', callback: Callback<void>): void
media.AVPlayeron(type: 'speedDone', callback: Callback<number>): void
media.AVPlayeron(type: 'seekDone', callback: Callback<number>): void
media.AVPlayeron(type: 'error', callback: ErrorCallback): void
media.AVPlayeron(type: 'endOfStream', callback: Callback<void>): void
media.AVPlayeron(type: 'durationUpdate', callback: Callback<number>): void
media.AVPlayeron(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
media.AVPlayeron(type: 'bitrateDone', callback: Callback<number>): void
media.AVPlayeron(type: 'availableBitrates', callback: (bitrates: Array<number>) => void): void
media.AVPlayeron(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
media.AVPlayeroff(type: 'volumeChange'): void
media.AVPlayeroff(type: 'videoSizeChange'): void
media.AVPlayeroff(type: 'timeUpdate'): void
media.AVPlayeroff(type: 'stateChange'): void
media.AVPlayeroff(type: 'startRenderFrame'): void
media.AVPlayeroff(type: 'speedDone'): void
media.AVPlayeroff(type: 'seekDone'): void
media.AVPlayeroff(type: 'error'): void
media.AVPlayeroff(type: 'endOfStream'): void
media.AVPlayeroff(type: 'durationUpdate'): void
media.AVPlayeroff(type: 'bufferingUpdate'): void
media.AVPlayeroff(type: 'bitrateDone'): void
media.AVPlayeroff(type: 'availableBitrates'): void
media.AVPlayeroff(type: 'audioInterrupt'): void
media.AVPlayerloop: boolean
media.AVPlayergetTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void
media.AVPlayergetTrackDescription() : Promise<Array<MediaDescription>>
media.AVPlayerfdSrc ?: AVFileDescriptor
media.AVPlayeraudioInterruptMode ?: audio.InterruptMode
unnamedtype AVPlayerState = 'idle' |'initialized' |'prepared' |'playing' |'paused' |'completed' |'stopped' |'released' |'error'

APIs no longer maintained

ClassDeclaration
mediacreateVideoPlayer(callback: AsyncCallback<VideoPlayer>): void
mediacreateVideoPlayer() : Promise<VideoPlayer>
mediacreateAudioPlayer(): AudioPlayer
media.AudioPlayerinterface AudioPlayer
media.AudioPlayerplay(): void
media.AudioPlayerrelease(): void
media.AudioPlayeraudioInterruptMode ?: audio.InterruptMode
media.AudioPlayerfdSrc: AVFileDescriptor
media.AudioPlayerseek(timeMs: number): void
media.AudioPlayerreadonly duration: number
media.AudioPlayerloop: boolean
media.AudioPlayerreadonly state: AudioState
media.AudioPlayergetTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void
media.AudioPlayergetTrackDescription() : Promise<Array<MediaDescription>>
media.AudioPlayeron(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
media.AudioPlayeron(type: 'play' |'pause' |'stop' |'reset' |'dataLoad' |'finish' |'volumeChange', callback: () => void): void
media.AudioPlayeron(type: 'timeUpdate', callback: Callback<number>): void
media.AudioPlayeron(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
media.AudioPlayeron(type: 'error', callback: ErrorCallback): void
media.AudioPlayersetVolume(vol: number): void
media.AudioPlayerpause(): void
media.AudioPlayerreadonly currentTime: number
media.AudioPlayerstop(): void
media.AudioPlayerreset(): void
media.AudioPlayersrc: string
media.VideoPlayerinterface VideoPlayer
media.VideoPlayerplay(callback: AsyncCallback<void>): void
media.VideoPlayerplay(): Promise<void>
media.VideoPlayerprepare(callback: AsyncCallback<void>): void
media.VideoPlayerprepare(): Promise<void>
media.VideoPlayerrelease(callback: AsyncCallback<void>): void
media.VideoPlayerrelease(): Promise<void>
media.VideoPlayeraudioInterruptMode ?: audio.InterruptMode
media.VideoPlayerfdSrc: AVFileDescriptor
media.VideoPlayerseek(timeMs: number, callback: AsyncCallback<number>): void
media.VideoPlayerseek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void
media.VideoPlayerseek(timeMs: number, mode?:SeekMode): Promise<number>
media.VideoPlayerreadonly duration: number
media.VideoPlayerloop: boolean
media.VideoPlayervideoScaleType ?: VideoScaleType
media.VideoPlayerreadonly state: VideoPlayState
media.VideoPlayergetTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void
media.VideoPlayergetTrackDescription() : Promise<Array<MediaDescription>>
media.VideoPlayerreadonly height: number
media.VideoPlayeron(type: 'playbackCompleted', callback: Callback<void>): void
media.VideoPlayeron(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
media.VideoPlayeron(type: 'startRenderFrame', callback: Callback<void>): void
media.VideoPlayeron(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void
media.VideoPlayeron(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
media.VideoPlayeron(type: 'error', callback: ErrorCallback): void
media.VideoPlayersetDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void
media.VideoPlayersetDisplaySurface(surfaceId: string): Promise<void>
media.VideoPlayersetVolume(vol: number, callback: AsyncCallback<void>): void
media.VideoPlayersetVolume(vol: number): Promise<void>
media.VideoPlayerurl: string
media.VideoPlayerpause(callback: AsyncCallback<void>): void
media.VideoPlayerpause(): Promise<void>
media.VideoPlayerreadonly currentTime: number
media.VideoPlayersetSpeed(speed:number, callback: AsyncCallback<number>): void
media.VideoPlayersetSpeed(speed:number): Promise<number>
media.VideoPlayerstop(callback: AsyncCallback<void>): void
media.VideoPlayerstop(): Promise<void>
media.VideoPlayerreadonly width: number
media.VideoPlayerreset(callback: AsyncCallback<void>): void
media.VideoPlayerreset(): Promise<void>
unnamedtype AudioState = 'idle' |'playing' |'paused' |'stopped' |'error'
unnamedtype 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

ClassDeclaration
mediacreateAVRecorder(callback: AsyncCallback<AVRecorder>): void
mediacreateAVRecorder() : Promise<AVRecorder>
media.AVRecorderinterface AVRecorder
media.AVRecorderprepare(config: AVRecorderConfig, callback: AsyncCallback<void>): void
media.AVRecorderprepare(config: AVRecorderConfig): Promise<void>
media.AVRecorderrelease(callback: AsyncCallback<void>): void
media.AVRecorderrelease(): Promise<void>
media.AVRecorderreadonly state: AVRecorderState
media.AVRecorderon(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void
media.AVRecorderon(type: 'error', callback: ErrorCallback): void
media.AVRecorderresume(callback: AsyncCallback<void>): void
media.AVRecorderresume(): Promise<void>
media.AVRecorderstart(callback: AsyncCallback<void>): void
media.AVRecorderstart(): Promise<void>
media.AVRecorderoff(type: 'stateChange'): void
media.AVRecorderoff(type: 'error'): void
media.AVRecorderpause(callback: AsyncCallback<void>): void
media.AVRecorderpause(): Promise<void>
media.AVRecorderstop(callback: AsyncCallback<void>): void
media.AVRecorderstop(): Promise<void>
media.AVRecorderreset(callback: AsyncCallback<void>): void
media.AVRecorderreset(): Promise<void>
media.AVRecordergetInputSurface(callback: AsyncCallback<string>): void
media.AVRecordergetInputSurface(): Promise<string>
media.AVRecorderConfigvideoSourceType?: VideoSourceType
media.AVRecorderConfigaudioSourceType?: AudioSourceType
media.AVRecorderConfigprofile: AVRecorderProfile
media.AVRecorderConfigrotation?: number
media.AVRecorderConfigurl: string
media.AVRecorderConfiglocation?: Location
media.AVRecorderConfiginterface AVRecorderConfig
media.AVRecorderProfilevideoBitrate?: number
media.AVRecorderProfilevideoCodec?: CodecMimeType
media.AVRecorderProfileaudioCodec?: CodecMimeType
media.AVRecorderProfilevideoFrameRate?: number
media.AVRecorderProfilevideoFrameHeight?: number
media.AVRecorderProfileaudioSampleRate?: number
media.AVRecorderProfileaudioBitrate?: number
media.AVRecorderProfilevideoFrameWidth?: number
media.AVRecorderProfileaudioChannels?: number
media.AVRecorderProfilefileFormat: ContainerFormatType
media.AVRecorderProfileinterface AVRecorderProfile
unnamedtype AVRecorderState = 'idle' |'prepared' |'started' |'paused' |'stopped' |'released' |'error'

APIs no longer maintained

ClassDeclaration
mediacreateVideoRecorder(callback: AsyncCallback<VideoRecorder>): void
mediacreateVideoRecorder(): Promise<VideoRecorder>
mediacreateAudioRecorder(): AudioRecorder
media.AudioRecorderinterface AudioRecorder
media.AudioRecorderprepare(config: AudioRecorderConfig): void
media.AudioRecorderrelease(): void
media.AudioRecorderon(type: 'prepare' |'start' |'pause' |'resume' |'stop' |'release' |'reset', callback: () => void): void
media.AudioRecorderon(type: 'error', callback: ErrorCallback): void
media.AudioRecorderresume(): void
media.AudioRecorderstart(): void
media.AudioRecorderpause(): void
media.AudioRecorderstop(): void
media.AudioRecorderreset(): void
media.AudioRecorderConfigaudioSampleRate?: number
media.AudioRecorderConfiglocation?: Location
media.AudioRecorderConfigfileFormat?: ContainerFormatType
media.AudioRecorderConfiginterface AudioRecorderConfig
media.AudioRecorderConfigaudioEncoder?: AudioEncoder
media.AudioRecorderConfigaudioEncodeBitRate?: number
media.AudioRecorderConfignumberOfChannels?: number
media.AudioRecorderConfigformat?: AudioOutputFormat
media.AudioRecorderConfiguri: string
media.AudioRecorderConfigaudioEncoderMime?: CodecMimeType
media.VideoRecorderinterface VideoRecorder
media.VideoRecorderprepare(config: VideoRecorderConfig, callback: AsyncCallback<void>): void
media.VideoRecorderprepare(config: VideoRecorderConfig): Promise<void>
media.VideoRecorderrelease(callback: AsyncCallback<void>): void
media.VideoRecorderrelease(): Promise<void>
media.VideoRecorderreadonly state: VideoRecordState
media.VideoRecorderon(type: 'error', callback: ErrorCallback): void
media.VideoRecorderresume(callback: AsyncCallback<void>): void
media.VideoRecorderresume(): Promise<void>
media.VideoRecorderstart(callback: AsyncCallback<void>): void
media.VideoRecorderstart(): Promise<void>
media.VideoRecorderpause(callback: AsyncCallback<void>): void
media.VideoRecorderpause(): Promise<void>
media.VideoRecorderstop(callback: AsyncCallback<void>): void
media.VideoRecorderstop(): Promise<void>
media.VideoRecorderreset(callback: AsyncCallback<void>): void
media.VideoRecorderreset(): Promise<void>
media.VideoRecordergetInputSurface(callback: AsyncCallback<string>): void
media.VideoRecordergetInputSurface(): Promise<string>
media.VideoRecorderConfigvideoSourceType: VideoSourceType
media.VideoRecorderConfigaudioSourceType?: AudioSourceType
media.VideoRecorderConfigprofile: VideoRecorderProfile
media.VideoRecorderConfigrotation?: number
media.VideoRecorderConfigurl: string
media.VideoRecorderConfiglocation?: Location
media.VideoRecorderConfiginterface VideoRecorderConfig
media.VideoRecorderProfilereadonly videoBitrate: number
media.VideoRecorderProfilereadonly videoCodec: CodecMimeType
media.VideoRecorderProfilereadonly audioCodec: CodecMimeType
media.VideoRecorderProfilereadonly videoFrameRate: number
media.VideoRecorderProfilereadonly videoFrameHeight: number
media.VideoRecorderProfilereadonly audioSampleRate: number
media.VideoRecorderProfilereadonly audioBitrate: number
media.VideoRecorderProfilereadonly videoFrameWidth: number
media.VideoRecorderProfilereadonly audioChannels: number
media.VideoRecorderProfilereadonly fileFormat: ContainerFormatType
media.VideoRecorderProfileinterface VideoRecorderProfile
unnamedtype VideoRecordState = 'idle' |'prepared' |'playing' |'paused' |'stopped' |'error'

Changed APIs

ClassDeclarationCapability Before ChangeCapability After ChangeWhether a System API Before ChangeWhether a System API After Change
media.AudioSourceTypeenum 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.VideoRecorderSystemCapability.Multimedia.Media.AVRecorderYesNo
media.VideoSourceTypeenum 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.VideoRecorderSystemCapability.Multimedia.Media.AVRecorderYesNo

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

ClassDeclaration
media.AVErrorCodeenum 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

ClassDeclaration
media.MediaErrorCodeenum 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

harmony 鸿蒙Test Subsystem ChangeLog

harmony 鸿蒙USB Subsystem API Changelog

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/fdc7056cd0834bf2aee28ea321b61610