【发布时间】:2018-01-21 07:37:08
【问题描述】:
我正在使用RecordRTC 在我的javascript 客户端中录制一些音频数据。我想通过WebSockets将此音频数据发送到我的Spring RestController。
录制后,我的 javascript 客户端中有一个 blob 对象:Blob {size: 65859, type: "audio/webm"}
我尝试使用 FileReader 将此 blob 转换为 ArrayBuffer 对象,看起来像这样 ArrayBuffer {} byteLength: 65859
我发送 ArrayBuffer 的 javascript 代码如下所示:
const reader = new FileReader();
reader.addEventListener( 'loadend', () => {
console.log( 'readerResult', reader.result );
this.stompClient.send( "/app/hello", {}, reader.result );
} );
this.recorder.stopRecording(() => {
const blob = this.recorder.getBlob();
reader.readAsArrayBuffer( blob );
console.log( "blob", blob );
} );
我的 Spring Boot 应用程序中的 WebSocket 端点如下所示:
@MessageMapping("/hello")
public void stream(byte[] input) throws Exception {
System.out.println("incoming message ...");
System.out.println(input);
System.out.println(input.length);
}
这是控制台输出:
incoming message ...
[B@6142acb4
20
我服务器中的 bytearray 只包含 20 个字节,看起来只传输了元数据?
如何将记录的 Blob 传输到我的 Spring 服务器并创建它的 (webm) 文件?我必须更改端点的参数吗?
【问题讨论】:
-
你在哪里打电话给
.readAsArrayBuffer()? -
@guest271314 在我的 stopRecording() 方法中,当我从记录器中获取 blob 时。我将 sn-p 添加到我的帖子中
-
System.out.println(input)的预期结果是什么?
标签: javascript java spring spring-boot webrtc