0

我正在构建一个可以使用 just_audio 播放音频的项目。我有一个放入 AudioSource 的音频列表,我需要为列表中的每个音频创建一个控制破折号(一个播放按钮和一个进度条),而不是像往常一样为播放列表使用一个通用的。但我不知道如何获取列表中每个音频的持续时间/持续时间流,每次单击特定音频的播放按钮时,只会播放该音频? 在此处输入图像描述 在图片中,我只能使用 player.durationStream 获取当前状态的持续时间,当我单击播放按钮时,仅播放 sequenceState 的当前音频。

请帮助,tkx 很多!

4

1 回答 1

0

尚不支持此功能,但有一个开放的功能请求:

https://github.com/ryanheise/just_audio/issues/141

但是,这可能不是您真正想要的。请注意,在某些情况下,直接从媒体文件查询持续时间可能效率低下,因此如果您实际上提前知道持续时间,则应用程序最好维护自己的本地元数据数据库,其中包括持续时间:

  1. 如果音频来自播客,请注意播客提要应报告 XML 文件中每个项目的中等保真持续时间,以秒 (*) 为单位。
  2. 如果音频是由您的应用录制的,您可以在录制的同时将持续时间元数据保存到数据库中。
  3. 如果音频在设备上,您可以使用 flutter_audio_query 进行查询。
  4. 如果音频是与应用程序打包的资产,则持续时间是隐含已知的,也可以与应用程序一起打包(即硬编码)。

(*) 如果播客提要省略了持续时间字段,您仍然可以通过提取足够的音频文件来读取其持续时间,然后处理临时播放器来查询它:

final disposablePlayer = Player();
final duration = await disposablePlayer.setAudioSource(...);
disposablePlayer.dispose();
于 2021-01-15T13:52:40.463 回答