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

Kyl*_* B. 12 dart flutter

我正在尝试在 Flutter 应用程序中显示音频文件的长度。我使用了 flutter_sound 和 audioplayers 插件,但我不确定如何在不播放音频文件和获取持续时间的情况下获取音频文件的长度(我想在列表中显示每个音频文件的长度,以便用户知道)距离比赛还有多长时间)。除了在这些插件之一中使用播放音频文件的持续时间之外,我无法在网上找到任何显示如何在 dart 中获取音频文件长度的地方。有人知道如何在 Dart 中获取音频文件长度吗?

Pat*_*ick 10

这是一个迟到的答案,但如果您仍然想知道如何做到这一点,有一个音频库just_audio

final player = AudioPlayer();
var duration = await player.setUrl('file.mp3');
Run Code Online (Sandbox Code Playgroud)

适用于 Android 和 IOS,同时支持本地文件和下载网址。

  • 我实际上来到这里是因为 just_audio 在 iOS 上给了我错误的持续时间。 (6认同)

Rav*_*mar -2

使用这个库音频播放器

像这样获取持续时间事件

此事件返回文件可用时的持续时间(可能需要一段时间,因为正在下载或缓冲文件)。

  player.onDurationChanged.listen((Duration d) {
    print('Max duration: $d');
    setState(() => duration = d);
  });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这是我正在使用的插件,但是播放器的持续时间状态不会更改以获取播放器正在播放之前的持续时间(我想要一个播放器列表并显示每个音频文件的持续时间)。我是否必须启动并快速停止每个文件才能在更改期间加载它? (4认同)