diff --git a/api/@ohos.multimedia.media.d.ts b/api/@ohos.multimedia.media.d.ts index 54d94dab6c71cec42212e1888ce1a2992b574c6e..c33f70bef3721965f684172ae32d90933aa3329b 100755 --- a/api/@ohos.multimedia.media.d.ts +++ b/api/@ohos.multimedia.media.d.ts @@ -18,15 +18,13 @@ import { ErrorCallback, AsyncCallback, Callback } from './basic'; /** * @name media * @since 6 - * @SysCap SystemCapability.Multimedia.Media * @import import media from '@ohos.multimedia.media' - * @devices phone, tablet, tv, wearable */ declare namespace media { /** * Creates an AudioPlayer instance. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @import import media from '@ohos.multimedia.media' * @return Returns an AudioPlayer instance if the operation is successful; returns null otherwise. */ @@ -35,124 +33,290 @@ declare namespace media { /** * Creates an AudioRecorder instance. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @import import media from '@ohos.multimedia.media' * @return Returns an AudioRecorder instance if the operation is successful; returns null otherwise. */ function createAudioRecorder(): AudioRecorder; + /** + * Creates an VideoPlayer instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @import import media from '@ohos.multimedia.media' + * @param callback Callback used to return AudioPlayer instance if the operation is successful; returns null otherwise. + */ + function createVideoPlayer(callback: AsyncCallback): void; + /** + * Creates an VideoPlayer instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @import import media from '@ohos.multimedia.media' + * @return A Promise instance used to return VideoPlayer instance if the operation is successful; returns null otherwise. + */ + function createVideoPlayer() : Promise; + + /** + * Creates an VideoRecorder instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @import import media from '@ohos.multimedia.media' + * @param callback Callback used to return AudioPlayer instance if the operation is successful; returns null otherwise. + */ + function createVideoRecorder(callback: AsyncCallback): void; + /** + * Creates an VideoRecorder instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @import import media from '@ohos.multimedia.media' + * @return A Promise instance used to return VideoRecorder instance if the operation is successful; returns null otherwise. + */ + function createVideoRecorder(): Promise; + + /** + * Enumerates ErrorCode types, return in BusinessError::code + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + 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 IO 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, + } + + /** + * Enumerates buffering info type, for network playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum BufferingInfoType { + /** + * begin to buffering + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + BUFFERING_START = 1, + + /** + * end to buffering + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + BUFFERING_END = 2, + + /** + * buffering percent + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + BUFFERING_PERCENT = 3, + + /** + * cached duration in milliseconds + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + CACHED_DURATION = 4, + } + /** * Describes audio playback states. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioPlayer + * @import import media from '@ohos.multimedia.media' */ - type AudioState = 'idle' | 'playing' | 'paused' | 'stopped'; + type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error'; /** - * Manages and plays audio. Before calling an AudioPlayer method, you must use createAudioPlayer() to create an AudioPlayer instance. + * Manages and plays audio. Before calling an AudioPlayer method, you must use createAudioPlayer() + * to create an AudioPlayer instance. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ interface AudioPlayer { /** * Starts audio playback. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ play(): void; /** * Pauses audio playback. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ pause(): void; /** * Stops audio playback. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ stop(): void; /** * Resets audio playback. - * @devices phone, tablet, tv, wearable * @since 7 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ reset(): void; /** * Jumps to the specified playback position. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @param timeMs Playback position to jump */ seek(timeMs: number): void; /** * Sets the volume. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%). */ setVolume(vol: number): void; /** * Releases resources used for audio playback. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ release(): void; + /** + * get all track infos in MediaDescription, should be called after data loaded callback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.AudioPlayer + * @param callback async callback return track info in MediaDescription. + */ + getTrackDescription(callback: AsyncCallback>): void; + + /** + * get all track infos in MediaDescription, should be called after data loaded callback.. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.AudioPlayer + * @param index track index. + * @return A Promise instance used to return the track info in MediaDescription. + */ + getTrackDescription() : Promise>; + /** + * Listens for audio playback buffering events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.AudioPlayer + * @param type Type of the playback buffering update event to listen for. + * @param callback Callback used to listen for the buffering update event, return BufferingInfoType and the value. + */ + on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void; /** * Audio media URI. Mainstream audio formats are supported. - * @devices phone, tablet, tv, wearable + * local:fd://XXX, file://XXX. network:http://xxx * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ src: string; /** * Whether to loop audio playback. The value true means to loop playback. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ loop: boolean; /** * Current playback position. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ readonly currentTime: number; /** - * Playback duration. When the data source does not support seek, it returns - 1, such as a live broadcast scenario. - * @devices phone, tablet, tv, wearable + * Playback duration, When the data source does not support seek, it returns - 1, such as a live broadcast scenario. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ readonly duration: number; /** * Playback state. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer */ readonly state: AudioState; /** * Listens for audio playback events. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @param type Type of the playback event to listen for. * @param callback Callback used to listen for the playback event. */ @@ -160,9 +324,8 @@ declare namespace media { /** * Listens for audio playback events. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @param type Type of the playback event to listen for. * @param callback Callback used to listen for the playback event. */ @@ -170,9 +333,8 @@ declare namespace media { /** * Listens for playback error events. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioPlayer * @param type Type of the playback error event to listen for. * @param callback Callback used to listen for the playback error event. */ @@ -180,94 +342,107 @@ declare namespace media { } /** - * Enumerates audio encoding formats. + * Enumerates audio encoding formats, it will be deprecated after API8, use @CodecMimeType to replace. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @import import media from '@ohos.multimedia.media' - * @devices phone, tablet, tv, wearable + * @deprecated since 8 */ enum AudioEncoder { /** * Advanced Audio Coding Low Complexity (AAC-LC). + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ AAC_LC = 3, } /** - * Enumerates audio output formats. + * Enumerates audio output formats, it will be deprecated after API8, use @ContainerFormatType to replace. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @import import media from '@ohos.multimedia.media' - * @devices phone, tablet, tv, wearable + * @deprecated since 8 */ enum AudioOutputFormat { /** * Indicates the Moving Picture Experts Group-4 (MPEG4) media format. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ MPEG_4 = 2, /** * Audio Data Transport Stream (ADTS), a transmission stream format of Advanced Audio Coding (AAC) audio. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ AAC_ADTS = 6 } + /** + * Provides the geographical location definitions for media resources. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.Core + */ interface Location { /** * Latitude. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.Core */ latitude: number; /** * Longitude. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.Core */ longitude: number; } + /** + * Provides the audio recorder configuration definitions. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + */ interface AudioRecorderConfig { /** - * Audio encoding format. The default value is DEFAULT. - * @devices phone, tablet, tv, wearable + * Audio encoding format. The default value is DEFAULT, it will be deprecated after API8. + * use "audioEncoderMime" instead. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + * @deprecated since 8 */ audioEncoder?: AudioEncoder; /** * Audio encoding bit rate. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ audioEncodeBitRate?: number; /** * Audio sampling rate. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ audioSampleRate?: number; /** * Number of audio channels. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ numberOfChannels?: number; /** - * Audio output format. The default value is DEFAULT. - * @devices phone, tablet, tv, wearable + * Audio output format. The default value is DEFAULT, it will be deprecated after API8. + * it will be replaced with "fileFormat". * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + * @deprecated since 8 */ format?: AudioOutputFormat; @@ -276,85 +451,95 @@ declare namespace media { * format like: scheme + "://" + "context". * file: file://path * fd: fd://fd - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ uri: string; /** * Geographical location information. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ location?: Location; + + /** + * audio encoding format MIME. it used to replace audioEncoder. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + */ + audioEncoderMime?: CodecMimeType; + /** + * output file format. see @ContainerFormatType , it used to replace "format". + * @since 8 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + */ + fileFormat?: ContainerFormatType; } + /** + * Manages and record audio. Before calling an AudioRecorder method, you must use createAudioRecorder() + * to create an AudioRecorder instance. + * @since 6 + * @syscap SystemCapability.Multimedia.Media.AudioRecorder + */ interface AudioRecorder { /** * Prepares for recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @param config Recording parameters. */ prepare(config: AudioRecorderConfig): void; /** * Starts audio recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ start(): void; /** * Pauses audio recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ pause(): void; /** * Resumes audio recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ resume(): void; /** * Stops audio recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ stop(): void; /** * Releases resources used for audio recording. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ release(): void; /** * Resets audio recording. - * Before resetting audio recording, you must call stop() to stop recording. After audio recording is reset, you must call prepare() to set the recording configurations for another recording. - * @devices phone, tablet, tv, wearable + * Before resetting audio recording, you must call stop() to stop recording. After audio recording is reset, + * you must call prepare() to set the recording configurations for another recording. * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder */ reset(): void; /** * Listens for audio recording events. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @param type Type of the audio recording event to listen for. * @param callback Callback used to listen for the audio recording event. */ @@ -362,14 +547,874 @@ declare namespace media { /** * Listens for audio recording error events. - * @devices phone, tablet, tv, wearable * @since 6 - * @SysCap SystemCapability.Multimedia.Media + * @syscap SystemCapability.Multimedia.Media.AudioRecorder * @param type Type of the audio recording error event to listen for. * @param callback Callback used to listen for the audio recording error event. */ on(type: 'error', callback: ErrorCallback): void; } -} -export default media; \ No newline at end of file + /** + * Describes video recorder states. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + type VideoRecordState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error'; + + /** + * Manages and record video. Before calling an VideoRecorder method, you must use createVideoRecorder() + * to create an VideoRecorder instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + interface VideoRecorder { + /** + * Prepares for recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param config Recording parameters. + * @param callback A callback instance used to return when prepare completed. + */ + prepare(config: VideoRecorderConfig, callback: AsyncCallback): void; + /** + * Prepares for recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param config Recording parameters. + * @return A Promise instance used to return when prepare completed. + */ + prepare(config: VideoRecorderConfig): Promise; + /** + * get input surface.it must be called between prepare completed and start. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback Callback used to return the input surface id in string. + */ + getInputSurface(callback: AsyncCallback): void; + /** + * get input surface. it must be called between prepare completed and start. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return the input surface id in string. + */ + getInputSurface(): Promise; + /** + * Starts video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when start completed. + */ + start(callback: AsyncCallback): void; + /** + * Starts video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when start completed. + */ + start(): Promise; + /** + * Pauses video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when pause completed. + */ + pause(callback: AsyncCallback): void; + /** + * Pauses video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when pause completed. + */ + pause(): Promise; + /** + * Resumes video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when resume completed. + */ + resume(callback: AsyncCallback): void; + /** + * Resumes video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when resume completed. + */ + resume(): Promise; + /** + * Stops video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when stop completed. + */ + stop(callback: AsyncCallback): void; + /** + * Stops video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when stop completed. + */ + stop(): Promise; + /** + * Releases resources used for video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when release completed. + */ + release(callback: AsyncCallback): void; + /** + * Releases resources used for video recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when release completed. + */ + release(): Promise; + /** + * Resets video recording. + * Before resetting video recording, you must call stop() to stop recording. After video recording is reset, + * you must call prepare() to set the recording configurations for another recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param callback A callback instance used to return when reset completed. + */ + reset(callback: AsyncCallback): void; + /** + * Resets video recording. + * Before resetting video recording, you must call stop() to stop recording. After video recording is reset, + * you must call prepare() to set the recording configurations for another recording. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @return A Promise instance used to return when reset completed. + */ + reset(): Promise; + /** + * Listens for video recording error events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @param type Type of the video recording error event to listen for. + * @param callback Callback used to listen for the video recording error event. + */ + on(type: 'error', callback: ErrorCallback): void; + + /** + * video recorder state. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly state: VideoRecordState; + } + + /** + * Describes video playback states. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error'; + + /** + * Enumerates playback speed. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + enum PlaybackSpeed { + /** + * playback at 0.75x normal speed + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + SPEED_FORWARD_0_75_X = 0, + /** + * playback at normal speed + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + SPEED_FORWARD_1_00_X = 1, + /** + * playback at 1.25x normal speed + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + SPEED_FORWARD_1_25_X = 2, + /** + * playback at 1.75x normal speed + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + SPEED_FORWARD_1_75_X = 3, + /** + * playback at 2.0x normal speed + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + SPEED_FORWARD_2_00_X = 4, + } + + /** + * Manages and plays video. Before calling an video method, you must use createVideoPlayer() to create an VideoPlayer + * instance. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @import import media from '@ohos.multimedia.media' + */ + interface VideoPlayer { + /** + * set display surface. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param surfaceId surface id, video player will use this id get a surface instance. + * @return A Promise instance used to return when release output buffer completed. + */ + setDisplaySurface(surfaceId: string, callback: AsyncCallback): void; + /** + * set display surface. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param surfaceId surface id, video player will use this id get a surface instance. + * @return A Promise instance used to return when release output buffer completed. + */ + setDisplaySurface(surfaceId: string): Promise; + /** + * prepare video playback, it will request resource for playing. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when prepare completed. + */ + prepare(callback: AsyncCallback): void; + /** + * prepare video playback, it will request resource for playing. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when prepare completed. + */ + prepare(): Promise; + /** + * Starts video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when start completed. + */ + play(callback: AsyncCallback): void; + /** + * Starts video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when start completed. + */ + play(): Promise; + /** + * Pauses video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when pause completed. + */ + pause(callback: AsyncCallback): void; + /** + * Pauses video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when pause completed. + */ + pause(): Promise; + /** + * Stops video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when stop completed. + */ + stop(callback: AsyncCallback): void; + /** + * Stops video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when stop completed. + */ + stop(): Promise; + /** + * Resets video playback, it will release the resource. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when reset completed. + */ + reset(callback: AsyncCallback): void; + /** + * Resets video playback, it will release the resource. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when reset completed. + */ + reset(): Promise; + /** + * Jumps to the specified playback position by default SeekMode(SEEK_CLOSEST), + * the performance may be not the best. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param timeMs Playback position to jump + * @param callback A callback instance used to return when seek completed + * and return the seeking position result. + */ + seek(timeMs: number, callback: AsyncCallback): void; + /** + * Jumps to the specified playback position. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param timeMs Playback position to jump + * @param mode seek mode, see @SeekMode . + * @param callback A callback instance used to return when seek completed + * and return the seeking position result. + */ + seek(timeMs: number, mode:SeekMode, callback: AsyncCallback): void; + /** + * Jumps to the specified playback position. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param timeMs Playback position to jump + * @param mode seek mode, see @SeekMode . + * @return A Promise instance used to return when seek completed + * and return the seeking position result. + */ + seek(timeMs: number, mode?:SeekMode): Promise; + /** + * Sets the volume. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%). + * @param callback A callback instance used to return when set volume completed. + */ + setVolume(vol: number, callback: AsyncCallback): void; + /** + * Sets the volume. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%). + * @return A Promise instance used to return when set volume completed. + */ + setVolume(vol: number): Promise; + /** + * Releases resources used for video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback A callback instance used to return when release completed. + */ + release(callback: AsyncCallback): void; + /** + * Releases resources used for video playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @return A Promise instance used to return when release completed. + */ + release(): Promise; + /** + * get all track infos in MediaDescription, should be called after data loaded callback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param callback async callback return track info in MediaDescription. + */ + getTrackDescription(callback: AsyncCallback>): void; + + /** + * get all track infos in MediaDescription, should be called after data loaded callback.. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param index track index. + * @return A Promise instance used to return the track info in MediaDescription. + */ + getTrackDescription() : Promise>; + + /** + * media url. Mainstream video formats are supported. + * local:fd://XXX, file://XXX. network:http://xxx + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + url: string; + + /** + * Whether to loop video playback. The value true means to loop playback. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + loop: boolean; + + /** + * Current playback position. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + readonly currentTime: number; + + /** + * Playback duration, if -1 means cannot seek. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + readonly duration: number; + + /** + * Playback state. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + readonly state: VideoPlayState; + + /** + * video width, valid after prepared. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + readonly width: number; + + /** + * video height, valid after prepared. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + */ + readonly height: number; + + /** + * set payback speed. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param speed playback speed, see @PlaybackSpeed . + * @param callback Callback used to return actually speed. + */ + setSpeed(speed:number, callback: AsyncCallback): void; + /** + * set output surface. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param speed playback speed, see @PlaybackSpeed . + * @return A Promise instance used to return actually speed. + */ + setSpeed(speed:number): Promise; + + /** + * Listens for video playback completed events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param type Type of the playback event to listen for. + * @param callback Callback used to listen for the playback event return . + */ + on(type: 'playbackCompleted', callback: Callback): void; + + /** + * Listens for video playback buffering events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param type Type of the playback buffering update event to listen for. + * @param callback Callback used to listen for the buffering update event, return BufferingInfoType and the value. + */ + on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void; + + /** + * Listens for start render video frame events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param type Type of the playback event to listen for. + * @param callback Callback used to listen for the playback event return . + */ + on(type: 'startRenderFrame', callback: Callback): void; + + /** + * Listens for video size changed event. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param type Type of the playback event to listen for. + * @param callback Callback used to listen for the playback event return video size. + */ + on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void; + + /** + * Listens for playback error events. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoPlayer + * @param type Type of the playback error event to listen for. + * @param callback Callback used to listen for the playback error event. + */ + on(type: 'error', callback: ErrorCallback): void; + } + + /** + * Enumerates container format type(The abbreviation for 'container format type' is CFT). + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum ContainerFormatType { + /** + * A video container format type mp4. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + CFT_MPEG_4 = "mp4", + + /** + * A audio container format type m4a. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + CFT_MPEG_4A = "m4a", + } + + /** + * Enumerates media data type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum MediaType { + /** + * track is audio. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MEDIA_TYPE_AUD = 0, + /** + * track is video. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MEDIA_TYPE_VID = 1, + } + + /** + * Enumerates media description key. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum MediaDescriptionKey { + /** + * key for track index, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_TRACK_INDEX = "track_index", + + /** + * key for track type, value type is number, see @MediaType. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_TRACK_TYPE = "track_type", + + /** + * key for codec mime type, value type is string. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_CODEC_MIME = "codec_mime", + + /** + * key for duration, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_DURATION = "duration", + + /** + * key for bitrate, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_BITRATE = "bitrate", + + /** + * key for video width, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_WIDTH = "width", + + /** + * key for video height, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_HEIGHT = "height", + + /** + * key for video frame rate, value type is number. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_FRAME_RATE = "frame_rate", + + /** + * key for audio channel count, value type is number + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_AUD_CHANNEL_COUNT = "channel_count", + + /** + * key for audio sample rate, value type is number + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + MD_KEY_AUD_SAMPLE_RATE = "sample_rate", + } + + /** + * Provides the video recorder profile definitions. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + interface VideoRecorderProfile { + /** + * Indicates the audio bit rate. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly audioBitrate: number; + + /** + * Indicates the number of audio channels. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly audioChannels: number; + + /** + * Indicates the audio encoding format. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly audioCodec: CodecMimeType; + + /** + * Indicates the audio sampling rate. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly audioSampleRate: number; + + /** + * Indicates the output file format. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly fileFormat: ContainerFormatType; + + /** + * Indicates the video bit rate. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly videoBitrate: number; + + /** + * Indicates the video encoding format. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly videoCodec: CodecMimeType; + + /** + * Indicates the video width. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly videoFrameWidth: number; + + /** + * Indicates the video height. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly videoFrameHeight: number; + + /** + * Indicates the video frame rate. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + readonly videoFrameRate: number; + } + + /** + * Enumerates audio source type for recorder. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @import import media from '@ohos.multimedia.media' + */ + enum AudioSourceType { + /** + * default audio source type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + AUDIO_SOURCE_TYPE_DEFAULT = 0, + /** + * source type mic. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + AUDIO_SOURCE_TYPE_MIC = 1, + } + + /** + * Enumerates video source type for recorder. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + * @import import media from '@ohos.multimedia.media' + */ + enum VideoSourceType { + /** + * surface raw data. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + VIDEO_SOURCE_TYPE_SURFACE_YUV = 0, + /** + * surface ES data. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + VIDEO_SOURCE_TYPE_SURFACE_ES = 1, + } + + /** + * Provides the video recorder configuration definitions. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + interface VideoRecorderConfig { + /** + * audio source type, details see @AudioSourceType . + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + audioSourceType: AudioSourceType; + /** + * video source type, details see @VideoSourceType . + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + videoSourceType: VideoSourceType; + /** + * video recorder profile, can get by "getVideoRecorderProfile", details see @VideoRecorderProfile . + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + profile:VideoRecorderProfile; + /** + * video output uri.support two kind of uri now. + * format like: scheme + "://" + "context". + * file: file://path + * fd: fd://fd + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + url: string; + /** + * Sets the video rotation angle in output file, and for the file to playback. mp4 support. + * the range of rotation angle should be {0, 90, 180, 270}, default is 0. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + rotation?: number; + /** + * geographical location information. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.VideoRecorder + */ + location?: Location; + } + + /** + * Provides the container definition for media description key-value pairs. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + interface MediaDescription { + /** + * key:value pair, key see @MediaDescriptionKey . + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + [key : string]: Object; + } + + /** + * Enumerates seek mode. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum SeekMode { + /** + * seek to the next sync frame of the given timestamp + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + SEEK_NEXT_SYNC = 0, + /** + * seek to the previous sync frame of the given timestamp + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + SEEK_PREV_SYNC = 1, + } + + /** + * Enumerates Codec MIME types. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + * @import import media from '@ohos.multimedia.media' + */ + enum CodecMimeType { + /** + * H.263 codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + VIDEO_H263 = 'video/h263', + /** + * H.264 codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + VIDEO_AVC = 'video/avc', + /** + * MPEG2 codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + VIDEO_MPEG2 = 'video/mpeg2', + /** + * MPEG4 codec MIME type + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + VIDEO_MPEG4 = 'video/mp4v-es', + + /** + * VP8 codec MIME type + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + VIDEO_VP8 = 'video/x-vnd.on2.vp8', + + /** + * AAC codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + AUDIO_AAC = 'audio/mp4a-latm', + + /** + * vorbis codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + AUDIO_VORBIS = 'audio/vorbis', + + /** + * flac codec MIME type. + * @since 8 + * @syscap SystemCapability.Multimedia.Media.Core + */ + AUDIO_FLAC = 'audio/flac', + } +} +export default media;