flutter -- 音频播放 audioplayers - 简书

Posted ren1027538427

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter -- 音频播放 audioplayers - 简书相关的知识,希望对你有一定的参考价值。

使用第三方插件实现音频播放,支持安卓、iosGitHub - rxlabz/audioplayer: A flutter plugin to play audio files iOS / android / MacOS / Web ( Swift/Java )https://github.com/rxlabz/audioplayer

这里有个bug

audioplayer: 0.8.1 本地化  会出现找不到

MethodChannel('bz.rxla.flutter/audio');

改成这样

audioplayer:
  path: G:\\ren_work\\flutter\\项目名称\\自己写的包名\\audioplayer

Usage

Example

To use this plugin :

 
    audioplayer: 0.8.1
  
  • Instantiate an AudioPlayer instance
//...
AudioPlayer audioPlugin = AudioPlayer();
//...

Player Controls

audioPlayer.play(url);

audioPlayer.pause();

audioPlayer.stop();

Status and current position

The dart part of the plugin listen for platform calls :

//...
_positionSubscription = audioPlayer.onAudioPositionChanged.listen(
  (p) => setState(() => position = p)
);

_audioPlayerStateSubscription = audioPlayer.onPlayerStateChanged.listen((s) 
  if (s == AudioPlayerState.PLAYING) 
    setState(() => duration = audioPlayer.duration);
   else if (s == AudioPlayerState.STOPPED) 
    onComplete();
    setState(() 
      position = duration;
    );
  
, onError: (msg) 
  setState(() 
    playerState = PlayerState.stopped;
    duration = new Duration(seconds: 0);
    position = new Duration(seconds: 0);
  );
);

Do not forget to cancel all the subscriptions when the widget is disposed.

iOS

⚠️ iOS App Transport Security

By default iOS forbids loading from non-https url. To cancel this restriction edit your .plist and add :

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Background mode

cf. enable background audio

MacOS

Add this to entitlements files ( cf. DebugProfile.entitlements )

    <key>com.apple.security.network.client</key>
    <true/>

Flutter Audioplayers 延迟

【中文标题】Flutter Audioplayers 延迟【英文标题】:Flutter Audioplayers delay 【发布时间】:2020-04-23 21:39:38 【问题描述】:

我正在使用 Flutter 框架编写一个小游戏。 我正在为 Sounds 使用音频播放器。

它可以像这样正常工作,例如每秒调用 2 次。 但是,当我在下一秒再次调用它超过 5 次时,声音就像延迟一样,然后在大约一秒钟后,所有声音同时播放 :) 听起来很奇怪。

我还在我的 iPhone 上测试了来自 github 的音频播放器示例。以低频重复声音是可以的,但是当我在某个时刻尽可能快地重复单击按钮时,它会出现一些延迟,并且会发生同样的事情。

有什么方法可以在播放下一个声音之前停止上一个声音,或者这不可能吗?

或者还有其他想法如何处理声音?

我就是这样使用它的:

    AudioCache upgradeSound = new AudioCache();

    void playUpgradeSound() 
       _playUpgradeSound(upgradeSound);
    

     void _playUpgradeSound(AudioCache ac) async
        await ac.play('audio/upgr.mp3');
     

提前非常感谢您

【问题讨论】:

你有什么解决办法吗? 我的情况也一样。 【参考方案1】:

我通过单例类解决了类似的问题,第一次播放后我可以得到状态,我可以停止以前的播放。

  class Audio 
  static final playerCache = AudioCache();
  static AudioPlayer audioPlayer;

  static void play(String audioName) async 
    audioPlayer = await playerCache.play('$audioName.mp3');
  

  static void stop() 
    audioPlayer.stop();
  


...
                        child: IconButton(
                          onPressed: () 
                            try 
                              if (Audio.audioPlayer.state ==
                                  AudioPlayerState.PLAYING) 
                                Audio.stop();
                               else 
                                Audio.play('bid');
                              
                             catch (e) 
                              Audio.play('bid');
                            
                          ,
...

【讨论】:

【参考方案2】:

在自己的文档中有一行代码。

要使用低延迟 API,更好地处理游戏声音,请使用:

AudioPlayer audioPlayer = AudioPlayer(mode: PlayerMode.LOW_LATENCY);

在这种模式下,后端不会触发任何持续时间或位置更新。此外,无法使用 seek 方法将音频设置为特定位置。此模式在网络上也不可用。

希望有用。

【讨论】:

以上是关于flutter -- 音频播放 audioplayers - 简书的主要内容,如果未能解决你的问题,请参考以下文章

[Flutter] 音频播放插件 audioplayers 的一个路径坑

Flutter Audioplayers 延迟

xcode 上的 Flutter audioplayers 插件错误(未找到模块“audioplayers”)

如何获取音频文件的长度而不在 Flutter/Dart 中播放

Flutter音频播放插件just_audio入门指南

Flutter音频播放插件just_audio入门指南