有没有办法将 byte[] 发送到 React Native JS Bridge,反之亦然?

时间:2020-12-30 09:16:44

标签: java android react-native audio websocket

我正在考虑构建一个自定义视图来直接处理 Java 内部的 WebSocket、STOMP、AudioRecorder、AudioPlayer,而不是 JS 桥 -> Java,如果您知道如何创建自定义视图并将其与 React 集成导航,请告诉我

我的目标是记录音频数据 -> 将其传输到 WebSocket 端点。 另一个设备将从 WebSocket 端点接收数据 -> 播放音频数据。 无需从 byte[] 转换音频数据 -> WritableArray / String 用于录制音频,以及从 WebSocket String 播放音频 -> byte[]

录音机的当前解决方案:

  1. 在字节[]中记录音频数据。
  2. 将音频数据转换为 WritableArray / String。
  3. 将其发送到 JS Bridge。
  4. 将音频数据发送到 WebSocket 端点。

音频播放器的当前解决方案:

  1. 从 WebSocket 端点接收音频数据。
  2. 以音频数据为参数运行 ReactMethod,例如 await AudioPlayerModule.streamAndLoadAsync(audioData)
  @ReactMethod
  public void streamAndPlayAsync(String data, final Promise promise) {
    byte[] audioData = Base64.decode(data, Base64.NO_WRAP);

    audioTrack.play();
    audioTrack.write(audioData, 0, audioData.length);
    audioTrack.stop();
    promise.resolve(null);
  }
  1. 将音频数据转换为字节[]。
  2. 播放音频。

我的预期结果是音频数据播放流畅。

我的实际结果:

  1. 512 MB,虚拟设备,听起来像是以 0.25 的速度播放音频。
12-30 16:04:00.994 4740-4785/com.satpam I/ReactNativeJS: startAudioRecordingAsync()
12-30 16:04:01.264 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 363K, 42% free 6435K/10951K, paused 1ms+1ms, total 5ms
12-30 16:04:01.734 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 400K, 42% free 6429K/10951K, paused 12ms+12ms, total 29ms
12-30 16:04:02.174 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 380K, 42% free 6434K/10951K, paused 1ms+1ms, total 7ms
12-30 16:04:02.744 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 378K, 42% free 6447K/10951K, paused 12ms+12ms, total 30ms
12-30 16:04:03.194 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 396K, 42% free 6446K/10951K, paused 12ms+1ms, total 18ms
12-30 16:04:03.694 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 381K, 42% free 6458K/10951K, paused 11ms+1ms, total 20ms
12-30 16:04:04.214 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 387K, 42% free 6459K/10951K, paused 12ms+11ms, total 33ms
12-30 16:04:05.044 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 391K, 41% free 6482K/10951K, paused 14ms+21ms, total 127ms
12-30 16:04:05.384 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 408K, 41% free 6479K/10951K, paused 15ms+3ms, total 78ms
12-30 16:04:05.894 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 396K, 41% free 6495K/10951K, paused 12ms+5ms, total 29ms
12-30 16:04:06.284 4740-4785/com.satpam I/ReactNativeJS: stopAudioRecordingAsync()
12-30 16:04:06.804 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 395K, 41% free 6489K/10951K, paused 12ms+15ms, total 39ms
12-30 16:04:07.484 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 395K, 41% free 6496K/10951K, paused 12ms+14ms, total 35ms
12-30 16:04:07.924 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 403K, 41% free 6478K/10951K, paused 12ms+1ms, total 23ms
12-30 16:04:09.034 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 394K, 41% free 6474K/10951K, paused 14ms+4ms, total 31ms
12-30 16:04:09.854 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 391K, 41% free 6467K/10951K, paused 11ms+0ms, total 15ms
12-30 16:04:11.024 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 397K, 41% free 6462K/10951K, paused 13ms+14ms, total 45ms
12-30 16:04:12.824 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 408K, 42% free 6444K/10951K, paused 1ms+0ms, total 10ms
12-30 16:04:14.764 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 392K, 42% free 6439K/10951K, paused 13ms+12ms, total 35ms
12-30 16:04:16.774 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 403K, 42% free 6432K/10951K, paused 17ms+20ms, total 67ms
  1. 6 GB,真机,音频播放流畅。

0 个答案:

没有答案
相关问题