• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2* Copyright (C) 2021 Huawei Device Co., Ltd.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7* http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15
16import { ErrorCallback, AsyncCallback, Callback } from './basic';
17
18/**
19 * @name media
20 * @since 6
21 * @import import media from '@ohos.multimedia.media'
22 */
23declare namespace media {
24  /**
25   * Creates an AudioPlayer instance.
26   * @since 6
27   * @syscap SystemCapability.Multimedia.Media.AudioPlayer
28   * @import import media from '@ohos.multimedia.media'
29   * @return Returns an AudioPlayer instance if the operation is successful; returns null otherwise.
30   */
31  function createAudioPlayer(): AudioPlayer;
32
33  /**
34   * Creates an AudioRecorder instance.
35   * @since 6
36   * @syscap SystemCapability.Multimedia.Media.AudioRecorder
37   * @import import media from '@ohos.multimedia.media'
38   * @return Returns an AudioRecorder instance if the operation is successful; returns null otherwise.
39   */
40  function createAudioRecorder(): AudioRecorder;
41
42  /**
43   * Creates an VideoPlayer instance.
44   * @since 8
45   * @syscap SystemCapability.Multimedia.Media.VideoPlayer
46   * @import import media from '@ohos.multimedia.media'
47   * @param callback Callback used to return AudioPlayer instance if the operation is successful; returns null otherwise.
48   */
49  function createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void;
50  /**
51   * Creates an VideoPlayer instance.
52   * @since 8
53   * @syscap SystemCapability.Multimedia.Media.VideoPlayer
54   * @import import media from '@ohos.multimedia.media'
55   * @return A Promise instance used to return VideoPlayer instance if the operation is successful; returns null otherwise.
56   */
57  function createVideoPlayer() : Promise<VideoPlayer>;
58
59  /**
60   * Enumerates ErrorCode types, return in BusinessError::code
61   * @since 8
62   * @syscap SystemCapability.Multimedia.Media.Core
63   * @import import media from '@ohos.multimedia.media'
64   */
65  enum MediaErrorCode {
66    /**
67     * operation success.
68     * @since 8
69     * @syscap SystemCapability.Multimedia.Media.Core
70     */
71    MSERR_OK = 0,
72
73    /**
74     * malloc or new memory failed. maybe system have no memory.
75     * @since 8
76     * @syscap SystemCapability.Multimedia.Media.Core
77     */
78    MSERR_NO_MEMORY = 1,
79
80    /**
81     * no permission for the operation.
82     * @since 8
83     * @syscap SystemCapability.Multimedia.Media.Core
84     */
85    MSERR_OPERATION_NOT_PERMIT = 2,
86
87    /**
88     * invalid argument.
89     * @since 8
90     * @syscap SystemCapability.Multimedia.Media.Core
91     */
92    MSERR_INVALID_VAL = 3,
93
94    /**
95     * an IO error occurred.
96     * @since 8
97     * @syscap SystemCapability.Multimedia.Media.Core
98     */
99    MSERR_IO = 4,
100
101    /**
102     * operation time out.
103     * @since 8
104     * @syscap SystemCapability.Multimedia.Media.Core
105     */
106    MSERR_TIMEOUT = 5,
107
108    /**
109     * unknown error.
110     * @since 8
111     * @syscap SystemCapability.Multimedia.Media.Core
112     */
113    MSERR_UNKNOWN = 6,
114
115    /**
116     * media service died.
117     * @since 8
118     * @syscap SystemCapability.Multimedia.Media.Core
119     */
120    MSERR_SERVICE_DIED = 7,
121
122    /**
123     * operation is not permit in current state.
124     * @since 8
125     * @syscap SystemCapability.Multimedia.Media.Core
126     */
127    MSERR_INVALID_STATE = 8,
128
129    /**
130     * operation is not supported in current version.
131     * @since 8
132     * @syscap SystemCapability.Multimedia.Media.Core
133     */
134    MSERR_UNSUPPORTED = 9,
135  }
136
137  /**
138   * Enumerates buffering info type, for network playback.
139   * @since 8
140   * @syscap SystemCapability.Multimedia.Media.Core
141   * @import import media from '@ohos.multimedia.media'
142   */
143  enum BufferingInfoType {
144    /**
145     * begin to buffering
146     * @since 8
147     * @syscap SystemCapability.Multimedia.Media.Core
148     */
149    BUFFERING_START = 1,
150
151    /**
152     * end to buffering
153     * @since 8
154     * @syscap SystemCapability.Multimedia.Media.Core
155     */
156    BUFFERING_END = 2,
157
158    /**
159     * buffering percent
160     * @since 8
161     * @syscap SystemCapability.Multimedia.Media.Core
162     */
163    BUFFERING_PERCENT = 3,
164
165    /**
166     * cached duration in milliseconds
167     * @since 8
168     * @syscap SystemCapability.Multimedia.Media.Core
169     */
170    CACHED_DURATION = 4,
171  }
172
173  /**
174   * Describes audio playback states.
175   * @since 6
176   * @syscap SystemCapability.Multimedia.Media.AudioPlayer
177   * @import import media from '@ohos.multimedia.media'
178   */
179  type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error';
180
181  /**
182   * Manages and plays audio. Before calling an AudioPlayer method, you must use createAudioPlayer()
183   * to create an AudioPlayer instance.
184   * @since 6
185   * @syscap SystemCapability.Multimedia.Media.AudioPlayer
186   */
187  interface AudioPlayer {
188    /**
189     * Starts audio playback.
190     * @since 6
191     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
192     */
193    play(): void;
194
195    /**
196     * Pauses audio playback.
197     * @since 6
198     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
199     */
200    pause(): void;
201
202    /**
203     * Stops audio playback.
204     * @since 6
205     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
206     */
207    stop(): void;
208
209    /**
210     * Resets audio playback.
211     * @since 7
212     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
213     */
214     reset(): void;
215
216    /**
217     * Jumps to the specified playback position.
218     * @since 6
219     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
220     * @param timeMs Playback position to jump
221     */
222    seek(timeMs: number): void;
223
224    /**
225     * Sets the volume.
226     * @since 6
227     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
228     * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%).
229     */
230    setVolume(vol: number): void;
231
232    /**
233     * Releases resources used for audio playback.
234     * @since 6
235     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
236     */
237    release(): void;
238    /**
239    * get all track infos in MediaDescription, should be called after data loaded callback.
240    * @since 8
241    * @syscap SystemCapability.Multimedia.Media.AudioPlayer
242    * @param callback async callback return track info in MediaDescription.
243    */
244    getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void;
245
246    /**
247    * get all track infos in MediaDescription, should be called after data loaded callback..
248    * @since 8
249    * @syscap SystemCapability.Multimedia.Media.AudioPlayer
250    * @param index  track index.
251    * @return A Promise instance used to return the track info in MediaDescription.
252    */
253    getTrackDescription() : Promise<Array<MediaDescription>>;
254
255    /**
256     * Listens for audio playback buffering events.
257     * @since 8
258     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
259     * @param type Type of the playback buffering update event to listen for.
260     * @param callback Callback used to listen for the buffering update event, return BufferingInfoType and the value.
261     */
262    on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void;
263    /**
264     * Audio media URI. Mainstream audio formats are supported.
265     * local:fd://XXX, file://XXX. network:http://xxx
266     * @since 6
267     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
268     * @permission ohos.permission.READ_MEDIA, ohos.permission.INTERNET
269     */
270    src: string;
271
272    /**
273     * Whether to loop audio playback. The value true means to loop playback.
274     * @since 6
275     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
276     */
277    loop: boolean;
278
279    /**
280     * Current playback position.
281     * @since 6
282     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
283     */
284    readonly currentTime: number;
285
286    /**
287     * Playback duration, When the data source does not support seek, it returns - 1, such as a live broadcast scenario.
288     * @since 6
289     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
290     */
291    readonly duration: number;
292
293    /**
294     * Playback state.
295     * @since 6
296     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
297     */
298    readonly state: AudioState;
299
300    /**
301     * Listens for audio playback events.
302     * @since 6
303     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
304     * @param type Type of the playback event to listen for.
305     * @param callback Callback used to listen for the playback event.
306     */
307    on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void;
308
309    /**
310     * Listens for audio playback events.
311     * @since 6
312     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
313     * @param type Type of the playback event to listen for.
314     * @param callback Callback used to listen for the playback event.
315     */
316    on(type: 'timeUpdate', callback: Callback<number>): void;
317
318    /**
319     * Listens for playback error events.
320     * @since 6
321     * @syscap SystemCapability.Multimedia.Media.AudioPlayer
322     * @param type Type of the playback error event to listen for.
323     * @param callback Callback used to listen for the playback error event.
324     */
325    on(type: 'error', callback: ErrorCallback): void;
326  }
327
328  /**
329   * Enumerates audio encoding formats, it will be deprecated after API8, use @CodecMimeType to replace.
330   * @since 6
331   * @syscap SystemCapability.Multimedia.Media.AudioRecorder
332   * @import import media from '@ohos.multimedia.media'
333   * @deprecated since 8
334   */
335  enum AudioEncoder {
336    /**
337     * Default audio encoding format, which is AMR-NB.
338     * @since 6
339     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
340     */
341    DEFAULT = 0,
342
343    /**
344     * Indicates the AMR-NB audio encoding format.
345     * @since 6
346     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
347     */
348    AMR_NB = 1,
349
350    /**
351     * Indicates the AMR-WB audio encoding format.
352     * @since 6
353     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
354     */
355    AMR_WB = 2,
356
357    /**
358     * Advanced Audio Coding Low Complexity (AAC-LC).
359     * @since 6
360     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
361     */
362    AAC_LC = 3,
363
364    /**
365     * High-Efficiency Advanced Audio Coding (HE-AAC).
366     * @since 6
367     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
368     */
369    HE_AAC = 4
370  }
371
372  /**
373   * Enumerates audio output formats, it will be deprecated after API8, use @ContainerFormatType to replace.
374   * @since 6
375   * @syscap SystemCapability.Multimedia.Media.AudioRecorder
376   * @import import media from '@ohos.multimedia.media'
377   * @deprecated since 8
378   */
379  enum AudioOutputFormat {
380    /**
381     * Default audio output format, which is Moving Pictures Expert Group 4 (MPEG-4).
382     * @since 6
383     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
384     */
385    DEFAULT = 0,
386
387    /**
388     * Indicates the Moving Picture Experts Group-4 (MPEG4) media format.
389     * @since 6
390     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
391     */
392    MPEG_4 = 2,
393
394    /**
395     * Indicates the Adaptive Multi-Rate Narrowband (AMR-NB) media format.
396     * @since 6
397     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
398     */
399    AMR_NB = 3,
400
401    /**
402     * Indicates the Adaptive Multi-Rate Wideband (AMR-WB) media format.
403     * @since 6
404     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
405     */
406    AMR_WB = 4,
407
408    /**
409     * Audio Data Transport Stream (ADTS), a transmission stream format of Advanced Audio Coding (AAC) audio.
410     * @since 6
411     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
412     */
413    AAC_ADTS = 6
414  }
415
416  /**
417   * Provides the geographical location definitions for media resources.
418   * @since 6
419   * @syscap SystemCapability.Multimedia.Media.Core
420   */
421  interface Location {
422    /**
423     * Latitude.
424     * @since 6
425     * @syscap SystemCapability.Multimedia.Media.Core
426     */
427    latitude: number;
428
429    /**
430     * Longitude.
431     * @since 6
432     * @syscap SystemCapability.Multimedia.Media.Core
433     */
434    longitude: number;
435  }
436
437  /**
438   * Provides the audio recorder configuration definitions.
439   * @since 6
440   * @syscap SystemCapability.Multimedia.Media.AudioRecorder
441   */
442  interface AudioRecorderConfig {
443    /**
444     * Audio encoding format. The default value is DEFAULT, it will be deprecated after API8.
445     * use "audioEncoderMime" instead.
446     * @since 6
447     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
448     * @deprecated since 8
449     */
450    audioEncoder?: AudioEncoder;
451
452    /**
453     * Audio encoding bit rate.
454     * @since 6
455     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
456     */
457    audioEncodeBitRate?: number;
458
459    /**
460     * Audio sampling rate.
461     * @since 6
462     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
463     */
464    audioSampleRate?: number;
465
466    /**
467     * Number of audio channels.
468     * @since 6
469     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
470     */
471    numberOfChannels?: number;
472
473    /**
474     * Audio output format. The default value is DEFAULT, it will be deprecated after API8.
475     * it will be replaced with "fileFormat".
476     * @since 6
477     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
478     * @deprecated since 8
479     */
480    format?: AudioOutputFormat;
481
482    /**
483     * Audio output uri.support two kind of uri now.
484     * format like: scheme + "://" + "context".
485     * file:  file://path
486     * fd:    fd://fd
487     * @since 6
488     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
489     */
490    uri: string;
491
492    /**
493     * Geographical location information.
494     * @since 6
495     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
496     */
497    location?: Location;
498
499    /**
500     * audio encoding format MIME. it used to replace audioEncoder.
501     * @since 8
502     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
503     */
504    audioEncoderMime?: CodecMimeType;
505    /**
506     * output file format. see @ContainerFormatType , it used to replace "format".
507     * @since 8
508     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
509     */
510    fileFormat?: ContainerFormatType;
511  }
512
513  /**
514   * Manages and record audio. Before calling an AudioRecorder method, you must use createAudioRecorder()
515   * to create an AudioRecorder instance.
516   * @since 6
517   * @syscap SystemCapability.Multimedia.Media.AudioRecorder
518   */
519  interface AudioRecorder {
520    /**
521     * Prepares for recording.
522     * @since 6
523     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
524     * @param config Recording parameters.
525     * @permission ohos.permission.MICROPHONE
526     */
527    prepare(config: AudioRecorderConfig): void;
528
529    /**
530     * Starts audio recording.
531     * @since 6
532     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
533     */
534    start(): void;
535
536    /**
537     * Pauses audio recording.
538     * @since 6
539     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
540     */
541    pause(): void;
542
543    /**
544     * Resumes audio recording.
545     * @since 6
546     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
547     */
548    resume(): void;
549
550    /**
551     * Stops audio recording.
552     * @since 6
553     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
554     */
555    stop(): void;
556
557    /**
558     * Releases resources used for audio recording.
559     * @since 6
560     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
561     */
562    release(): void;
563
564    /**
565     * Resets audio recording.
566     * Before resetting audio recording, you must call stop() to stop recording. After audio recording is reset,
567     * you must call prepare() to set the recording configurations for another recording.
568     * @since 6
569     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
570     */
571    reset(): void;
572
573    /**
574     * Listens for audio recording events.
575     * @since 6
576     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
577     * @param type Type of the audio recording event to listen for.
578     * @param callback Callback used to listen for the audio recording event.
579     */
580    on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void;
581
582    /**
583     * Listens for audio recording error events.
584     * @since 6
585     * @syscap SystemCapability.Multimedia.Media.AudioRecorder
586     * @param type Type of the audio recording error event to listen for.
587     * @param callback Callback used to listen for the audio recording error event.
588     */
589    on(type: 'error', callback: ErrorCallback): void;
590  }
591
592  /**
593   * Describes video playback states.
594   * @since 8
595   * @syscap SystemCapability.Multimedia.Media.VideoPlayer
596   */
597  type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error';
598
599  /**
600   * Enumerates playback speed.
601   * @since 8
602   * @syscap SystemCapability.Multimedia.Media.VideoPlayer
603   */
604  enum PlaybackSpeed {
605    /**
606     * playback at 0.75x normal speed
607     * @since 8
608     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
609     */
610    SPEED_FORWARD_0_75_X = 0,
611    /**
612     * playback at normal speed
613     * @since 8
614     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
615     */
616    SPEED_FORWARD_1_00_X = 1,
617    /**
618     * playback at 1.25x normal speed
619     * @since 8
620     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
621     */
622    SPEED_FORWARD_1_25_X = 2,
623    /**
624     * playback at 1.75x normal speed
625     * @since 8
626     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
627     */
628    SPEED_FORWARD_1_75_X = 3,
629    /**
630     * playback at 2.0x normal speed
631     * @since 8
632     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
633     */
634    SPEED_FORWARD_2_00_X = 4,
635  }
636
637  /**
638   * Manages and plays video. Before calling an video method, you must use createVideoPlayer() to create an VideoPlayer
639   * instance.
640   * @since 8
641   * @syscap SystemCapability.Multimedia.Media.VideoPlayer
642   * @import import media from '@ohos.multimedia.media'
643   */
644 interface VideoPlayer {
645    /**
646     * set display surface.
647     * @since 8
648     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
649     * @param surfaceId surface id, video player will use this id get a surface instance.
650     * @return A Promise instance used to return when release output buffer completed.
651     */
652    setDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void;
653    /**
654    * set display surface.
655    * @since 8
656    * @syscap SystemCapability.Multimedia.Media.VideoPlayer
657    * @param surfaceId surface id, video player will use this id get a surface instance.
658    * @return A Promise instance used to return when release output buffer completed.
659    */
660    setDisplaySurface(surfaceId: string): Promise<void>;
661    /**
662     * prepare video playback, it will request resource for playing.
663     * @since 8
664     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
665     * @param callback A callback instance used to return when prepare completed.
666     * @permission ohos.permission.MICROPHONE
667     */
668    prepare(callback: AsyncCallback<void>): void;
669     /**
670      * prepare video playback, it will request resource for playing.
671      * @since 8
672      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
673      * @return A Promise instance used to return when prepare completed.
674      * @permission ohos.permission.MICROPHONE
675      */
676    prepare(): Promise<void>;
677    /**
678     * Starts video playback.
679     * @since 8
680     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
681     * @param callback A callback instance used to return when start completed.
682     */
683    play(callback: AsyncCallback<void>): void;
684     /**
685      * Starts video playback.
686      * @since 8
687      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
688      * @return A Promise instance used to return when start completed.
689      */
690    play(): Promise<void>;
691    /**
692     * Pauses video playback.
693     * @since 8
694     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
695     * @param callback A callback instance used to return when pause completed.
696     */
697    pause(callback: AsyncCallback<void>): void;
698     /**
699      * Pauses video playback.
700      * @since 8
701      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
702      * @return A Promise instance used to return when pause completed.
703      */
704    pause(): Promise<void>;
705    /**
706     * Stops video playback.
707     * @since 8
708     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
709     * @param callback A callback instance used to return when stop completed.
710     */
711    stop(callback: AsyncCallback<void>): void;
712     /**
713      * Stops video playback.
714      * @since 8
715      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
716      * @return A Promise instance used to return when stop completed.
717      */
718    stop(): Promise<void>;
719    /**
720     * Resets video playback, it will release the resource.
721     * @since 8
722     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
723     * @param callback A callback instance used to return when reset completed.
724     */
725    reset(callback: AsyncCallback<void>): void;
726     /**
727      * Resets video playback, it will release the resource.
728      * @since 8
729      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
730      * @return A Promise instance used to return when reset completed.
731      */
732    reset(): Promise<void>;
733    /**
734     * Jumps to the specified playback position by default SeekMode(SEEK_CLOSEST),
735     * the performance may be not the best.
736     * @since 8
737     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
738     * @param timeMs Playback position to jump
739     * @param callback A callback instance used to return when seek completed
740     * and return the seeking position result.
741     */
742    seek(timeMs: number, callback: AsyncCallback<number>): void;
743    /**
744     * Jumps to the specified playback position.
745     * @since 8
746     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
747     * @param timeMs Playback position to jump
748     * @param mode seek mode, see @SeekMode .
749     * @param callback A callback instance used to return when seek completed
750     * and return the seeking position result.
751     */
752     seek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void;
753     /**
754      * Jumps to the specified playback position.
755      * @since 8
756      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
757      * @param timeMs Playback position to jump
758      * @param mode seek mode, see @SeekMode .
759      * @return A Promise instance used to return when seek completed
760      * and return the seeking position result.
761      */
762    seek(timeMs: number, mode?:SeekMode): Promise<number>;
763    /**
764     * Sets the volume.
765     * @since 8
766     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
767     * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%).
768     * @param callback A callback instance used to return when set volume completed.
769     */
770    setVolume(vol: number, callback: AsyncCallback<void>): void;
771     /**
772      * Sets the volume.
773      * @since 8
774      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
775      * @param vol Relative volume. The value ranges from 0.00 to 1.00. The value 1 indicates the maximum volume (100%).
776      * @return A Promise instance used to return when set volume completed.
777      */
778    setVolume(vol: number): Promise<void>;
779    /**
780     * Releases resources used for video playback.
781     * @since 8
782     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
783     * @param callback A callback instance used to return when release completed.
784     */
785    release(callback: AsyncCallback<void>): void;
786     /**
787      * Releases resources used for video playback.
788      * @since 8
789      * @syscap SystemCapability.Multimedia.Media.VideoPlayer
790      * @return A Promise instance used to return when release completed.
791      */
792    release(): Promise<void>;
793    /**
794    * get all track infos in MediaDescription, should be called after data loaded callback.
795    * @since 8
796    * @syscap SystemCapability.Multimedia.Media.VideoPlayer
797    * @param callback async callback return track info in MediaDescription.
798    */
799    getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void;
800
801    /**
802    * get all track infos in MediaDescription, should be called after data loaded callback..
803    * @since 8
804    * @syscap SystemCapability.Multimedia.Media.VideoPlayer
805    * @param index  track index.
806    * @return A Promise instance used to return the track info in MediaDescription.
807    */
808    getTrackDescription() : Promise<Array<MediaDescription>>;
809
810    /**
811     * media url. Mainstream video formats are supported.
812     * local:fd://XXX, file://XXX. network:http://xxx
813     * @since 8
814     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
815     */
816    url: string;
817
818    /**
819     * Whether to loop video playback. The value true means to loop playback.
820     * @since 8
821     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
822     */
823    loop: boolean;
824
825    /**
826     * Current playback position.
827     * @since 8
828     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
829     */
830    readonly currentTime: number;
831
832    /**
833     * Playback duration, if -1 means cannot seek.
834     * @since 8
835     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
836     */
837    readonly duration: number;
838
839    /**
840     * Playback state.
841     * @since 8
842     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
843     */
844    readonly state: VideoPlayState;
845
846    /**
847     * video width, valid after prepared.
848     * @since 8
849     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
850     */
851    readonly width: number;
852
853    /**
854     * video height, valid after prepared.
855     * @since 8
856     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
857     */
858    readonly height: number;
859
860    /**
861     * set payback speed.
862     * @since 8
863     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
864     * @param speed playback speed, see @PlaybackSpeed .
865     * @param callback Callback used to return actually speed.
866     */
867    setSpeed(speed:number, callback: AsyncCallback<number>): void;
868    /**
869     * set output surface.
870     * @since 8
871     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
872     * @param speed playback speed, see @PlaybackSpeed .
873     * @return A Promise instance used to return actually speed.
874     */
875    setSpeed(speed:number): Promise<number>;
876
877    /**
878     * Listens for video playback completed events.
879     * @since 8
880     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
881     * @param type Type of the playback event to listen for.
882     * @param callback Callback used to listen for the playback event return .
883     */
884    on(type: 'playbackCompleted', callback: Callback<void>): void;
885
886    /**
887     * Listens for video playback buffering events.
888     * @since 8
889     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
890     * @param type Type of the playback buffering update event to listen for.
891     * @param callback Callback used to listen for the buffering update event, return BufferingInfoType and the value.
892     */
893    on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void;
894
895    /**
896     * Listens for start render video frame events.
897     * @since 8
898     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
899     * @param type Type of the playback event to listen for.
900     * @param callback Callback used to listen for the playback event return .
901     */
902    on(type: 'startRenderFrame', callback: Callback<void>): void;
903
904    /**
905     * Listens for video size changed event.
906     * @since 8
907     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
908     * @param type Type of the playback event to listen for.
909     * @param callback Callback used to listen for the playback event return video size.
910     */
911    on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void;
912
913    /**
914     * Listens for playback error events.
915     * @since 8
916     * @syscap SystemCapability.Multimedia.Media.VideoPlayer
917     * @param type Type of the playback error event to listen for.
918     * @param callback Callback used to listen for the playback error event.
919     */
920    on(type: 'error', callback: ErrorCallback): void;
921  }
922
923  /**
924   * Enumerates container format type(The abbreviation for 'container format type' is CFT).
925   * @since 8
926   * @syscap SystemCapability.Multimedia.Media.Core
927   * @import import media from '@ohos.multimedia.media'
928   */
929  enum ContainerFormatType {
930    /**
931     * A video container format type mp4.
932     * @since 8
933     * @syscap SystemCapability.Multimedia.Media.Core
934     */
935    CFT_MPEG_4 = "mp4",
936
937    /**
938     * A audio container format type m4a.
939     * @since 8
940     * @syscap SystemCapability.Multimedia.Media.Core
941     */
942    CFT_MPEG_4A = "m4a",
943  }
944
945  /**
946   * Enumerates media data type.
947   * @since 8
948   * @syscap SystemCapability.Multimedia.Media.Core
949   * @import import media from '@ohos.multimedia.media'
950   */
951  enum MediaType {
952    /**
953     * track is audio.
954     * @since 8
955     * @syscap SystemCapability.Multimedia.Media.Core
956     */
957    MEDIA_TYPE_AUD = 0,
958    /**
959     * track is video.
960     * @since 8
961     * @syscap SystemCapability.Multimedia.Media.Core
962     */
963    MEDIA_TYPE_VID = 1,
964  }
965
966  /**
967   * Enumerates media description key.
968   * @since 8
969   * @syscap SystemCapability.Multimedia.Media.Core
970   * @import import media from '@ohos.multimedia.media'
971   */
972  enum MediaDescriptionKey {
973    /**
974     * key for track index, value type is number.
975     * @since 8
976     * @syscap SystemCapability.Multimedia.Media.Core
977     */
978    MD_KEY_TRACK_INDEX = "track_index",
979
980    /**
981     * key for track type, value type is number, see @MediaType.
982     * @since 8
983     * @syscap SystemCapability.Multimedia.Media.Core
984     */
985    MD_KEY_TRACK_TYPE = "track_type",
986
987    /**
988     * key for codec mime type, value type is string.
989     * @since 8
990     * @syscap SystemCapability.Multimedia.Media.Core
991     */
992    MD_KEY_CODEC_MIME = "codec_mime",
993
994    /**
995     * key for duration, value type is number.
996     * @since 8
997     * @syscap SystemCapability.Multimedia.Media.Core
998     */
999    MD_KEY_DURATION = "duration",
1000
1001    /**
1002     * key for bitrate, value type is number.
1003     * @since 8
1004     * @syscap SystemCapability.Multimedia.Media.Core
1005     */
1006    MD_KEY_BITRATE = "bitrate",
1007
1008    /**
1009     * key for video width, value type is number.
1010     * @since 8
1011     * @syscap SystemCapability.Multimedia.Media.Core
1012     */
1013    MD_KEY_WIDTH = "width",
1014
1015    /**
1016     * key for video height, value type is number.
1017     * @since 8
1018     * @syscap SystemCapability.Multimedia.Media.Core
1019     */
1020    MD_KEY_HEIGHT = "height",
1021
1022    /**
1023     * key for video frame rate, value type is number.
1024     * @since 8
1025     * @syscap SystemCapability.Multimedia.Media.Core
1026     */
1027    MD_KEY_FRAME_RATE = "frame_rate",
1028
1029    /**
1030     * key for audio channel count, value type is number
1031     * @since 8
1032     * @syscap SystemCapability.Multimedia.Media.Core
1033     */
1034    MD_KEY_AUD_CHANNEL_COUNT = "channel_count",
1035
1036    /**
1037     * key for audio sample rate, value type is number
1038     * @since 8
1039     * @syscap SystemCapability.Multimedia.Media.Core
1040     */
1041    MD_KEY_AUD_SAMPLE_RATE = "sample_rate",
1042  }
1043
1044  /**
1045   * Provides the container definition for media description key-value pairs.
1046   * @since 8
1047   * @syscap SystemCapability.Multimedia.Media.Core
1048   */
1049  interface MediaDescription {
1050    /**
1051     * key:value pair, key see @MediaDescriptionKey .
1052     * @since 8
1053     * @syscap SystemCapability.Multimedia.Media.Core
1054     */
1055    [key : string]: Object;
1056  }
1057
1058  /**
1059   * Enumerates seek mode.
1060   * @since 8
1061   * @syscap SystemCapability.Multimedia.Media.Core
1062   * @import import media from '@ohos.multimedia.media'
1063   */
1064  enum SeekMode {
1065    /**
1066     * seek to the next sync frame of the given timestamp
1067     * @since 8
1068     * @syscap SystemCapability.Multimedia.Media.Core
1069     */
1070    SEEK_NEXT_SYNC = 0,
1071    /**
1072     * seek to the previous sync frame of the given timestamp
1073     * @since 8
1074     * @syscap SystemCapability.Multimedia.Media.Core
1075     */
1076    SEEK_PREV_SYNC = 1,
1077  }
1078
1079  /**
1080   * Enumerates Codec MIME types.
1081   * @since 8
1082   * @syscap SystemCapability.Multimedia.Media.Core
1083   * @import import media from '@ohos.multimedia.media'
1084   */
1085   enum CodecMimeType {
1086    /**
1087     * H.263 codec MIME type.
1088     * @since 8
1089     * @syscap SystemCapability.Multimedia.Media.Core
1090     */
1091    VIDEO_H263 = 'video/h263',
1092    /**
1093     * H.264 codec MIME type.
1094     * @since 8
1095     * @syscap SystemCapability.Multimedia.Media.Core
1096     */
1097    VIDEO_AVC = 'video/avc',
1098    /**
1099     * MPEG2 codec MIME type.
1100     * @since 8
1101     * @syscap SystemCapability.Multimedia.Media.Core
1102     */
1103    VIDEO_MPEG2 = 'video/mpeg2',
1104    /**
1105     * MPEG4 codec MIME type
1106     * @since 8
1107     * @syscap SystemCapability.Multimedia.Media.Core
1108     */
1109    VIDEO_MPEG4 = 'video/mp4v-es',
1110
1111    /**
1112     * VP8 codec MIME type
1113     * @since 8
1114     * @syscap SystemCapability.Multimedia.Media.Core
1115     */
1116    VIDEO_VP8 = 'video/x-vnd.on2.vp8',
1117
1118    /**
1119     * AAC codec MIME type.
1120     * @since 8
1121     * @syscap SystemCapability.Multimedia.Media.Core
1122     */
1123    AUDIO_AAC = 'audio/mp4a-latm',
1124
1125    /**
1126     * vorbis codec MIME type.
1127     * @since 8
1128     * @syscap SystemCapability.Multimedia.Media.Core
1129     */
1130    AUDIO_VORBIS = 'audio/vorbis',
1131
1132    /**
1133     * flac codec MIME type.
1134     * @since 8
1135     * @syscap SystemCapability.Multimedia.Media.Core
1136     */
1137    AUDIO_FLAC = 'audio/flac',
1138  }
1139}
1140export default media;
1141