openharmony 鸿蒙 changelogs-media

2023-02-03 浏览 (807)

媒体子系统ChangeLog

cl.media.1 播放功能接口变更

新增音视频播放接口AVPlayer9+, 升级了状态机和错误码,推荐用户使用。旧版音频播放接口AudioPlayer6+和视频播放接口VideoPlayer8+停止维护。

变更影响

原有的接口暂时可继续使用,但是停止维护,建议使用新接口进行开发。

关键的接口/组件变更

新增接口如下:

类名新增接口声明
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'

停止维护接口如下:

类名停止维护接口声明
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'

适配指导

请参考各接口的API参考

cl.media.2 录制功能接口变更

新增音视频录制接口AVRecorder9+, 升级了状态机和错误码,推荐用户使用。旧版音频录制接口AudioRecorder6+和视频录制接口VideoRecorder9+停止维护。

新旧录制接口共用的AudioSourceTypeVideoSourceType接口,变更为非系统接口。

变更影响

原有的接口AudioRecorder6+VideoRecorder9+暂时可继续使用,但是停止维护,建议使用新接口进行开发AVRecorder9+

关键的接口/组件变更

新增接口如下:

类名新增接口声明
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'

停止维护接口如下:

类名停止维护接口声明
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'

变更接口如下:

类名接口声明变更前能力变更后能力变更前是否为系统接口变更后是否为系统接口
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.AVRecorder
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.AVRecorder

适配指导

请参考各接口的API参考

cl.media.3 错误码变更

新增标准的错误枚举类型AVErrorCode99+替代原有错误枚举类型MediaErrorCode8+

变更影响

以往接口返回错误码枚举类型为MediaErrorCode8+不变。新增接口错误码类型均采用AVErrorCode99+

关键的接口/组件变更

新增接口如下:

类名新增错误码声明
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, }

停止维护接口如下:

类名停止维护错误码声明
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子系统ChangeLog

harmony 鸿蒙元能力子系统ChangeLog

harmony 鸿蒙蓝牙服务子系统ChangeLog

harmony 鸿蒙分布式数据管理子系统JS API变更Changelog

harmony 鸿蒙文件管理子系统ChangeLog

harmony 鸿蒙全球化子系统ChangeLog

harmony 鸿蒙测试子系统ChangeLog

harmony 鸿蒙USB服务子系统ChangeLog

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