Flutter [仅音频] - 从正在播放的流链接访问原始字节数据

问题描述 投票:0回答:2

我有一个简单的用例,需要能够录制正在播放的实时流,以便根据用户的请求进行倒带。

我尝试过两次:

  1. 从简单的 http 调用获取 StreamedResponse 并将数据写入临时 mp3 文件。它有效,但这种方法的问题是,我相信会有 2 个网络调用到同一个流链接,因为在引擎盖下的某个地方,我认为只有音频必须做同样的事情

  2. 打开录音机并尝试仅录制正在播放的音频的原始流。这也可以消除第一个问题,但这样也会记录背景噪音,因此录音的质量与原始录音明显不同。

有没有一种方法可以让我们从音频库本身访问字节数据。它将允许我遵循与第一次尝试相同的方法,而无需网络调用。我尝试查看 just 音频包的 dart 特定实现,但无法找到任何访问点。我很可能错过了它,或者不知道从可用的内容中提取它的方法。

flutter live-streaming just-audio
2个回答
0
投票

一种可能性是创建

StreamAudioSource
的自定义子类,然后将其设置为音频源。这是一种将您自己的字节流输入 just_audio 并让它播放的方法。在您的实现中,您需要打开自己的到 URL 的 HTTP 连接,并且当您读取响应流时,您会将所有这些字节的副本保存到您自己的文件中,但您还将返回这些字节作为
StreamAudioSource
中的返回值,以便这些相同的字节将被输入到 just_audio 播放器中。这样,字节只下载一次。

该插件还附带了一个名为

StreamAudioSource
LockCachingAudioSource
示例子类,它几乎完全可以实现此目的,只是它仅针对有限持续时间的音频进行设计和测试。您可以在您的 URL 上测试它,看看它是否有效,如果无效,您可以使用该类作为实现您自己的子类的灵感。


0
投票

使用 flutter_sound 包来完成这项工作。

© www.soinside.com 2019 - 2024. All rights reserved.