小编kpl*_*lus的帖子

如何使用 ionic Media 插件顺序播放多个音频

我正在尝试使用离子媒体插件播放多个音频文件: https://ionicframework.com/docs/native/media。但我很难在不使用超时功能的情况下使其作为播放列表工作。

这是我尝试过的

playOne(track: AudioFile): Promise<any> {


 return new Promise(async resolve =>{

      const AudFile =  await this.media.create(this.file.externalDataDirectory+track.trackUrl);


       await resolve(AudFile.play())

   });


  }
Run Code Online (Sandbox Code Playgroud)

然后玩 All ,我有这个:

async playAll(tracks: AudioFile[]): Promise<any>{
    let player = (acc, track:AudioFile) => acc.then(() => 

        this.playOne(track)


    );

   tracks.reduce(player, Promise.resolve());
  }
Run Code Online (Sandbox Code Playgroud)

这样他们就可以同时玩了。

但是如果 PlayOne 方法包裹在超时函数中,则播放列表中存在超时设置的毫秒间隔,但一个播放列表不一定先于另一个播放列表完成,有时会等待很长时间才能播放后续文件是格子的。

超时实现如下所示:

playOne(track: AudioFile): Promise<any> {


 return new Promise(async resolve =>{
     setTimeout(async ()=>{
      const AudFile =  await this.media.create(this.file.externalDataDirectory+track.trackUrl);


       await resolve(AudFile.play())
     },3000)
   });


  }

Run Code Online (Sandbox Code Playgroud)

深入研究插件的离子包装器,创建方法如下所示:

/**
 * Open a media file
 * @param src {string} A …
Run Code Online (Sandbox Code Playgroud)

javascript ionic-framework cordova-media-plugin angular ionic4

5
推荐指数
1
解决办法
1522
查看次数