ドキュメントはこれについてかなり明確であり、機能しないため、この時点で何をすべきかわかりません。ピア js と、API キーを取得したクラウド サーバーを使用して音声呼び出しを設定するために私が行っていることは次のとおりです。
--ここにコードのチャンクを入れるのは気が進まないことに注意してください。しかし、ここにあります。コメントアウトされた部分は、公式ドキュメントに従おうとする試みです。また、安全でないオリジンエラーは発生しません。ライブデモがあります @ https://thealmightyone.github.io/AMAclient
テストする:
- 2人のプレーヤーを登録してログインする
- 右クリック
- 話すことを選ぶ
- 右クリックコーナーで電話を受ける
コンソールにログがはっきりと表示されます。
function peerJsTools() { var allAudioCalls = {}; var playerPeer = new Peer({key: 'lwjd5qra8257b9'}); // PeERJS API キーをネットワーク設定に移動
var playerPeerId; this.getPeerId = function() { return playerPeerId; }; navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; playerPeer.on('open', function(id) { console.log('My peer ID is: ' + id); playerPeerId = id; }); playerPeer.on('call', function(call) { console.log('incoming call detected') navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; navigator.getUserMedia({ video: false, audio: true }, function(stream) { call.answer(stream); // Answer the call with an A/V stream. call.on('stream', function(remoteStream) { console.log('PEERJS: incoming audio stream', remoteStream); // WEBAUDIO API BELOW - DOESN'T WORK IN CHROME? // var audioContext = new AudioContext(); // var audioStream = audioContext.createMediaStreamSource(remoteStream); // audioStream.connect(audioContext.destination); var audio = $('<audio autoplay />').appendTo('body'); audio[0].src = (URL || webkitURL || mozURL).createObjectURL(remoteStream); }); }, function(err) { console.log('Failed to get local stream', err); }); }); this.initiatePeerAudioCall = function(id, peerId) { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; navigator.getUserMedia({ video: false, audio: true }, function(stream) { var call = playerPeer.call(peerId, stream); console.log('PEERJS: calling', peerId, 'with', stream); allAudioCalls[id] = call; call.on('stream', function(remoteStream) { console.log('PEERJS: got an answer back'); // var audioContext = new AudioContext(); // var audioStream = audioContext.createMediaStreamSource(remoteStream); // audioStream.connect(audioContext.destination); var audio = $('<audio autoplay />').appendTo('body'); audio[0].src = (URL || webkitURL || mozURL).createObjectURL(remoteStream); }); }, function(err) { console.log('Failed to get local stream', err); } ); }; this.endActiveCall = function(id) { if(allAudioCalls[id]){ console.log('ending active call'); allAudioCalls[id].close(); } else{ console.log('stopping call attempt'); } };
}
何が起きてる?リモートストリームを受信し、オーディオ要素を正しく作成していると思いました。