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

问题描述

我正在考虑构建一个自定义视图来直接处理 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,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,total 7ms
12-30 16:04:02.744 4740-4744/com.satpam D/dalvikvm: GC_CONCURRENT freed 378K,42% free 6447K/10951K,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,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,真机,音频播放流畅。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)