Peerjs: كيف يمكنني الاتصال بدون MediaStream؟

تم إنشاؤها على ٨ يناير ٢٠١٦  ·  5تعليقات  ·  مصدر: peers/peerjs

لدي حالة استخدام حيث:

  • هناك شخصان ، مقدم ومشاهد
  • يفتح مقدم الصفحة ويحصل على معرف نظير
  • يرسل مقدم العرض معرف النظير هذا إلى العارض
  • يستخدم العارض معرف النظير هذا للاتصال بالمقدم
  • يرسل المقدم شاشته المشتركة إلى العارض

بالنسبة لحالة الاستخدام هذه ، بالنسبة إلى جانب المشاهد:

var call = peer.call(presenterPeerID, null);
call.on('stream', function(theirWebcamStream) {
  showWebcamStream(theirWebcamStream);
});

هذا لا يعمل ، لأن peer.call(presenterPeerID, null) يُرجع undefined .

كيف يمكنني الاتصال بدون إرسال MediaStream؟

التعليق الأكثر فائدة

يمكنك إنشاء دفق فارغ مع أي مسار ، أو مع كليهما:

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

export const createEmptyVideoTrack = ({ width, height }) => {
  const canvas = Object.assign(document.createElement('canvas'), { width, height });
  canvas.getContext('2d').fillRect(0, 0, width, height);

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

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

...

const audioTrack = createEmptyAudioTrack();
const videoTrack = createEmptyVideoTrack({ width:640, height:480 });
const mediaStream = new MediaStream([audioTrack, videoTrack]);

peer.call('id', mediaStream);

ال 5 كومينتر

اشترك في هذه القضية

هل حاولت بدء المكالمة من مقدم العرض إلى العارض ، وتوفير تدفق الوسائط لمقدمي العرض في المكالمة والرد على المكالمة بـ null as mediastream؟

آمل أيضًا أن أفعل نفس الشيء. انظر العدد رقم 158

+1

يمكنك إنشاء دفق فارغ مع أي مسار ، أو مع كليهما:

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

export const createEmptyVideoTrack = ({ width, height }) => {
  const canvas = Object.assign(document.createElement('canvas'), { width, height });
  canvas.getContext('2d').fillRect(0, 0, width, height);

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

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

...

const audioTrack = createEmptyAudioTrack();
const videoTrack = createEmptyVideoTrack({ width:640, height:480 });
const mediaStream = new MediaStream([audioTrack, videoTrack]);

peer.call('id', mediaStream);
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات