2016-04-20 3 views
2

http GETでリクエストするクライアントに、oggエンコードされたオーディオを提供するサーバーがあります。 私はHTMLのオーディオSRCにGETルートを注入した場合、それはオーディオを受信し、それを果たしている:HTMLオーディオタグでバイナリ文字列を再生する

function working(text) { 
    var downloadURL = 'http://localhost:8080/nlc/synthesize' + 
     '?text=' + encodeURIComponent(text); 

    audio.pause(); 
    audio.src = downloadURL; 
    audio.play(); 

}; 

私は(AngularJSで)HTTPのGETコールを使用して、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(); 

}; 

応答のログは、「データ」キーでバイナリ文字列を使用してJSONを示しています

Object {data: "OggS�1�/ڂ OpusHead��]OggS…�xs���������������������������������", status: 200, config: Object, statusText: "OK"} 

は、HTTP GET応答INTをデコードする方法はあります私はオーディオsrcに注入することができますか?

+1

私は知らないが、XMLHttpRequest、yo urはその '.responseType'を' 'blob ''にセットし、 '' src''として渡すことができるこのBLOBレスポンス( 'URL.createObjectURL(this.response)')から 'objectURL'を作成します。あなたのオーディオ要素のそれ以外の場合、ターゲットブラウザがAudioContextAPIをサポートしている場合は、['AudioContext.decodeAudioData()'](https://developer.mozilla.org/ja/docs/Web/API/AudioContext/decodeAudioData)メソッドを使用できます。 – Kaiido

+0

ありがとうございます、あなたの答えは私を助けました。 – trahloff

答えて

0

のコメントでこれを組み合わせることができ、オプションの設定で

$http.get(Url, { 
    transformRequest: angular.identity, 
    headers: {'Content-Type': undefined} 
}) 
.success(function(){ 
}) 
.error(function(){ 
}); 

https://docs.angularjs.org/api/ng/service/ $ HTTP

を辞書を渡すことができますこのコードで:

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(); 
    }) 
}; 
+1

応答処理コードのどこからオーディオ変数を取得していますか? –

0

http.getであなたは多分あなたは私が最終的に行うために管理@kaiido

関連する問題