如何在颤振和平台之间传输麦克风数据?

Posted

技术标签:

【中文标题】如何在颤振和平台之间传输麦克风数据?【英文标题】:How to stream mic data between flutter and platform? 【发布时间】:2018-01-04 16:42:50 【问题描述】:

我一直在试图弄清楚如何将麦克风数据从 android 流式传输到颤振。我找到了一些关于如何在夹头中查询 mic 的示例代码,但我不知道如何将数据放到 Flutter 上。

https://github.com/bitplane/Microphone/blob/master/src/net/bitplane/android/microphone/MicrophoneService.java

我不确定在 Flutter 中要查看哪些类

https://docs.flutter.io/flutter/services/EventChannel/receiveBroadcastStream.html

我想知道是否有人可以帮助我指出正确的方向。

【问题讨论】:

【参考方案1】:

我一直在 Flutter github 中挖掘示例插件并找到了这个。

https://github.com/flutter/plugins/tree/master/packages/sensors

不幸的是,EventChannel 文档很少。我不相信我们可以将流从颤振传递到平台,这样我就可以重播我在反馈循环中记录的任何内容。

事件回调。支持双重用途:发送给 Flutter 的事件的生产者作为该接口的客户端发送事件。 Flutter 发送的事件的消费者实现了这个接口来处理接收到的事件(后者的功能还没有实现)。

https://docs.flutter.io/javadoc/io/flutter/plugin/common/EventChannel.EventSink.html

过程类似于创建methodchannel,但我需要在android中创建onCancel和onListen。在 onListen 中,我还必须创建可以接收事件的侦听器。如果我想创建音频事件,我必须使用 setPositionNotificationPeriod(int) 和 OnRecordPositionUpdateListener(listener)。

https://developer.android.com/reference/android/media/AudioRecord.html

https://github.com/flutter/plugins/blob/master/packages/sensors/android/src/main/java/io/flutter/plugins/sensors/SensorsPlugin.java

在颤振上我必须创建一个广播流事件

https://github.com/flutter/plugins/blob/master/packages/sensors/lib/sensors.dart

我设法编写了我自己的可怕插件,该插件仅适用于 android atm。如果有人需要,我想知道我应该添加什么许可许可

https://github.com/hungrymonkey/mic_stream

【讨论】:

我发现找出 java byte[] 在 dart 中最终会变成 Uint8List 非常有用。这给我带来了最多的问题。您的 mic_stream 和 flutter.dev/docs/development/platform-integration/… 的示例代码非常有用。

以上是关于如何在颤振和平台之间传输麦克风数据?的主要内容,如果未能解决你的问题,请参考以下文章

用于从 iphone 麦克风流式传输音频的多点连接

如何将系统麦克风音频流传输到附加设备的麦克风音频流

如何以 mp3 格式从麦克风流式传输声音?

如何在 React Native 上捕获麦克风音频并将其流式传输到 IceCast 端点?

我将如何使用 NAudio 压缩来自麦克风的传入 PCM 数据?

如何流式传输 blob