tra*_*off 6 html javascript audio http angularjs
我有一个服务器,它向使用 http GET 请求它的客户端提供 ogg 编码的音频。如果我将 GET 路由注入 HTML 音频 src,它会接收音频并播放它:
function working(text) {
var downloadURL = 'http://localhost:8080/nlc/synthesize' +
'?text=' + encodeURIComponent(text);
audio.pause();
audio.src = downloadURL;
audio.play();
};
Run Code Online (Sandbox Code Playgroud)
如果我使用 http GET 调用(在 AngularJS 中)并尝试将响应注入 HTML 音频 src 它不会播放它:
function not_working(text) {
$http.get('http://localhost:8080/nlc/synthesize' + '?text=' + encodeURIComponent(text)).then(function(response) {
console.log(response);
audio.pause();
audio.src = encodeURIComponent(response);
audio.play();
};
Run Code Online (Sandbox Code Playgroud)
响应日志显示一个 JSON,在 'data' 键处有一个二进制字符串:
Object {data: "OggS?1?/? OpusHead??]OggS…?xs?????????????????????????????????", status: 200, config: Object, statusText: "OK"}
Run Code Online (Sandbox Code Playgroud)
有没有办法将 http GET 响应解码为我可以注入音频 src 的内容?
我终于成功地用这段代码做到了:
function working(text) {
var url = 'http://localhost:8080/nlc/synthesize';
var req = {
method: 'POST',
url: url,
responseType: 'blob',
data: {
"text": text
},
headers: {
'Content-Type': 'application/json',
}
}
$http(req).then(function(response) {
console.log(response);
audio.pause();
audio.src = URL.createObjectURL(response.data);
audio.play();
})
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4605 次 |
| 最近记录: |