Peerjs: Rekan.Panggilan tanpa streaming

Dibuat pada 18 Feb 2014  ·  14Komentar  ·  Sumber: peers/peerjs

Tampaknya tidak mungkin untuk menggunakan Peer.Call tanpa mengirimkan aliran media pengguna. Peer.Call harus dapat memanggil rekan mana pun bahkan jika penelepon memutuskan untuk tidak memberikan akses browser ke webcam/mikrofon mereka.

request

Komentar yang paling membantu

@yunusberateke berhasil
```
const createMediaStreamFake = () => {
kembalikan MediaStream baru([createEmptyAudioTrack(), createEmptyVideoTrack({ lebar:640, tinggi:480 })]);
}

const createEmptyAudioTrack = () => {
const ctx = new AudioContext();
const osilator = ctx.createOscillator();
const dst = oscillator.connect(ctx.createMediaStreamDestination());
osilator.start();
const track = dst.stream.getAudioTracks()[0];
return Object.assign(track, { diaktifkan: false });
}

const createEmptyVideoTrack = ({ lebar, tinggi }) => {
const kanvas = Object.assign(document.createElement('canvas'), { lebar, tinggi });
canvas.getContext('2d').fillRect(0, 0, lebar, tinggi);

const stream = canvas.captureStream();
const track = stream.getVideoTracks()[0];

return Object.assign(track, { enabled: false });

};

Semua 14 komentar

Poin bagus; kita akan melihat ke dalam menambahkan ini.

+1

Menelepon tanpa mengirim aliran tampaknya merupakan fitur yang masuk akal bagi saya. Ada pembaruan tentang itu? :)

Maaf, belum punya waktu baru-baru ini :(. Senang meninjau PR.

michelle

Pada Jumat, 23 Mei 2014 pukul 14:01, Pierre [email protected] menulis:

+1

Menelepon tanpa mengirim aliran tampaknya merupakan fitur yang masuk akal bagi saya. Setiap
memperbarui itu? :)


Balas email ini secara langsung atau lihat di Gi tHubhttps://github.com/peers/peerjs/issues/158#issuecomment -44059854
.

Saya memecahkannya dengan meneruskan webkitMediaStream() baru sebagai aliran media ke metode call(). Karena aplikasi saya hanya digunakan di Chrome, itu bukan masalah bagi saya.

Semoga membantu :)

@grabbou dapatkah Anda menempelkan beberapa contoh kode?

+1
@grabbou itu solusi yang sangat sederhana dan berfungsi untuk saya tks, apakah Anda tahu bagaimana melakukannya di firefox? saya mencoba MediaStream tetapi tidak berhasil :sweat_smile:

@michelle , saya rasa Anda tidak memiliki pemikiran tentang bagaimana ini bisa diterapkan? Saya hanya tahu sedikit tentang WebRTC, tetapi akan sangat membantu saya untuk dapat melakukan panggilan sebagai pengguna tanpa streaming.

+1

+1 juga

+1

@jhogoforbroke Bisakah Anda memposting beberapa contoh bagaimana Anda mencapai ini. Saya melampirkan klien dan kode server. Kode server hanya diharapkan untuk menyiarkan video dan semua klien hanya dapat melihat video tanpa harus berbagi media apa pun. Ketika saya menggunakan webkitMediaStream() baru, server tidak mengalirkan data apa pun.
peer_server.txt

peer_client.txt

Tidak yakin, apakah itu masih aktual, tetapi dapat melewatinya menggunakan trik ini:

const audioCtx = AudioContext baru();
const dest = audioCtx.createMediaStreamDestination();
var panggilan = peer.call('testid', tujuan.stream);

Tidak yakin, apakah itu masih aktual, tetapi dapat melewatinya menggunakan trik ini:

const audioCtx = AudioContext baru();
const dest = audioCtx.createMediaStreamDestination();
var panggilan = peer.call('testid', tujuan.stream);

ini tidak bekerja

adakah yang bisa memecahkan masalah ini?

@yunusberateke berhasil
```
const createMediaStreamFake = () => {
kembalikan MediaStream baru([createEmptyAudioTrack(), createEmptyVideoTrack({ lebar:640, tinggi:480 })]);
}

const createEmptyAudioTrack = () => {
const ctx = new AudioContext();
const osilator = ctx.createOscillator();
const dst = oscillator.connect(ctx.createMediaStreamDestination());
osilator.start();
const track = dst.stream.getAudioTracks()[0];
return Object.assign(track, { diaktifkan: false });
}

const createEmptyVideoTrack = ({ lebar, tinggi }) => {
const kanvas = Object.assign(document.createElement('canvas'), { lebar, tinggi });
canvas.getContext('2d').fillRect(0, 0, lebar, tinggi);

const stream = canvas.captureStream();
const track = stream.getVideoTracks()[0];

return Object.assign(track, { enabled: false });

};

Apakah halaman ini membantu?
0 / 5 - 0 peringkat