在 Flutter 中播放来自 URL 的音频

Play Audio in Flutter from URL

我是 flutter 的新手,我想从 URL 路径播放带有播放、暂停和搜索按钮的音频文件,并在播放器中显示通知。

您可以使用 audioplayers 包。

像这样定义 AudioPlayer 实例

AudioPlayer audioPlayer = AudioPlayer();

播放音频如下图

  play() async {
    int result = await audioPlayer.play(url);
    if (result == 1) {
      // success
    }
  }

你可以这样暂停和停止

await audioPlayer.pause();
await audioPlayer.stop();

这是播放本地音频的方法

 playLocal() async {
    int result = await audioPlayer.play(localPath, isLocal: true);
  }

我推荐你使用 audio_service 包。这是高度可定制的通知,您还可以在后台或睡眠模式下播放音频。

您可以像这样在 just_audio 中播放 URL:

final player = AudioPlayer();
await player.setUrl('https://example.com/song.mp3');
player.play();
player.pause();
player.seek(Duration(seconds: 143);

要添加通知支持,最简单的方法是添加just_audio_background。您需要稍微更改上面的代码,而不是调用 setUrl,您现在这样做:

await player.setAudioSource(AudioSource.uri(
  'https://example.com/song.mp3',
  tag: MediaItem(
    id: 'Some unique ID',
    title: 'Song title',
    album: 'Song album',
    artUri: Uri.parse('https://example.com/art.jpg'),
  ),
));

现在一旦该歌曲开始播放,提供的元数据也会显示在通知中。

just_audio_background 也必须在您的 main:

中初始化
Future<void> main() async {
  await JustAudioBackground.init(/* See API for options */);
  runApp(MyApp());
}

并且不要忘记遵循每个插件的特定于平台的设置说明:

请注意,just_audio_background 在后台使用 audio_service 插件,因此如果您的应用有更复杂的要求,您可以直接使用该插件。

如果您对如何构建实际的 UI 有疑问,您可以创建一个单独的问题,或者您可以查看上面的两个 link,因为每个插件都包含一个示例演示如何 link 在 UI.

中全部完成的应用程序

打开 AndroidManifest.xml 文件并启用互联网权限,使用 CleartextTraffic

android\app\src\main\AndroidManifest.xml

Add following 2 lines for enabling internet permission and usesCleartextTraffic