播放二进制流的方法主要分为前端和后端两种场景,具体实现方式如下:
一、前端播放二进制流
通过 `AudioContext` 的 `createMediaStreamSource` 方法,可以实时接收并播放二进制音频流,无需等待传输完成。示例代码如下:
```javascript
const audioContext = new AudioContext();
const source = audioContext.createMediaStreamSource(stream);
const processor = audioContext.createscriptProcessor(1024, 1, 1);
source.connect(processor);
processor.connect(audioContext.destination);
```
将二进制流转换为 Blob 并播放
若需拼接多个音频流,可先将所有流存储到数组中,再创建 `Blob` 对象并转换为 `URL`,最后通过 `Audio` 对象播放。但此方法需等待所有流接收完成。
二、后端处理二进制流
直接输出流式数据
在服务器端(如 PHP、Java)可直接将二进制流写入响应,前端通过 `Blob` 或 `URL.createObjectURL` 播放。例如 PHP:
```php
header('Content-Type: audio/mp3');
readfile('binary_stream.mp3');
```
数据库存储与流式传输
若音频流存储在数据库(如 Oracle 的 BLOB 类型),可通过 Servlet 或 API 将数据直接输出到响应流,避免生成临时文件。示例 Java 代码:
```java
response.setContentType("audio/mp3");
Blob blob = ...; // 从数据库获取的 Blob
blob.stream().transferTo(response.getOutputStream());
```
三、注意事项
跨域问题: 若前端与后端分离,需注意设置正确的 CORS 头部。 性能优化
以上方法可根据具体需求选择,前端侧重实时播放,后端侧重高效传输。