Flutter播放音频

一、前言

主要为播放mp3音频,

Flutter播放音频_第1张图片

二、引用

audioplayers

功能:控制mp3文件播放。

地址:https://pub.dev/packages/audioplayers

方法:

  • await audioPlayer.setUrl('clicking.mp3'); /// 预加载但不播放,返回1为成功
    
  • await audioPlayer.resume(); /// 快速播放,返回1为成功
    
  • await audioPlayer.pause(); /// 暂停播放
    
  • await audioPlayer.seek(new Duration(seconds: 1)); /// 跳转进度播放
    
  • audioPlayer.onAudioPositionChanged.listen((event) async {
      // event参数可以获取当前进度,也是可以调整的,比如p.inMilliseconds
    })
    
  • await audioPlayer.release(); /// 释放资源
    

三、使用

1. 进度条部分

/// 当前播放进度
var playProcess = 0.0;
/// 是否正在拖动播放部分
var nowSeekPlay = false;

Slider(value: playProcess.value, onChanged: (double v) {
  playProcess.value = v;
},onChangeStart: (double v){
  nowSeekPlay = true;
}, onChangeEnd: (double v){
  seekPlay(Duration(microseconds: (v*实际总微秒).toInt()));
  nowSeekPlay = false;
})

2. 音频播放

AudioPlayer audioPlayer = AudioPlayer();

/// 播放
play() async {
  int result = await audioPlayer.setUrl("http://m701.music.126.net/20220108171336/cf03e7f017702d1c503a8af97277abb9/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/12493523436/3543/fc68/56a2/4436b5c2d97ad152ce6f1a2ca10635a9.mp3");
  await audioPlayer.resume();
  if (result == 1) {
    audioPlayer.onAudioPositionChanged.listen((event) {
      if(!nowSeekPlay && (event.inMicroseconds.toDouble()/实际总微秒) <= 1.0){
        playProcess.value = (event.inMicroseconds.toDouble()/实际总微秒);
      } else if(nowSeekPlay){
      } else {
        playProcess.value = 1.0;
      }
    });
  } else {
    print('play failed');
  }
}

/// 继续播放
continuePlay() async {
  await audioPlayer.resume();
  audioPlayer.onAudioPositionChanged.listen((event) {
    if((event.inMicroseconds.toDouble()/实际总微秒) <= 1.0){
      playProcess.value = (event.inMicroseconds.toDouble()/实际总微秒);
    } else {
      playProcess.value = 1.0;
    }
  });
}

/// 暂停
pause() async {
  int result = await audioPlayer.pause();
  if (result == 1) {
    // success
    print('pause success');
  } else {
    print('pause failed');
  }
}

/// 拖动播放
seekPlay(Duration duration) async {
  int result = await audioPlayer.seek(duration);
  if (result == 1) {
    // success
    print('seek success');
  } else {
    print('seek failed');
  }
}

你可能感兴趣的:(#,Flutter插件,Flutter,flutter,音视频)