【问题标题】:How to get duration of specific audio in AudioSourse just_audio Flutter?如何在 AudioSourse just_audio Flutter 中获取特定音频的持续时间?
【发布时间】:2021-04-20 05:08:43
【问题描述】:

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

请帮忙,tkx 很多!!!

【问题讨论】:

  • 您能提供目前为止的代码示例吗?

标签: flutter duration just-audio


【解决方案1】:

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

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();

【讨论】:

  • 我最后使用了与您的示例代码类似的解决方案,我在initState中创建了一个播放器列表,然后将播放列表中的每个成员音频设置为相应播放器的audioSource。无论如何,非常感谢您的辛勤工作!
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2013-03-01
  • 2013-10-27
  • 2012-02-16
  • 1970-01-01
  • 2023-04-08
  • 2012-06-27
相关资源
最近更新 更多