WebRTC:是否可以从RGBA ArrayBuffer创建VideoStreamTrack?

时间:2017-09-27 18:23:48

标签: javascript webrtc electron chromium

我有一个来自电子应用程序内Redis回调的RGBA流:

redis.on('messageBuffer', function(channel, frame) {
  if (channel.toString() !== REDIS_EVENT) return;

});

为了通过WebRTC将其作为视频传送,我使用HTMLCanvasElement.captureStream()创建了一个Canvas并将其用作我的WebRTC连接的源流。

let canvasCtx = myCanvas.getContext('2d');
let stream = myCanvas.captureStream(10);

redis.on('messageBuffer', function(channel, frame) {
  if (channel.toString() !== REDIS_EVENT) return;

  let imageData = canvasCtx.createImageData(myCanvas.width, myCanvas.height);
  imageData.data.set(frame);
  canvasCtx.putImageData(imageData, 0, 0);
});

streamCanvasCaptureMediaStream对象,以下是我如何将其用作WebRTC流源:

function createWebRTC(stream, clientId) {
  let pc = new RTCPeerConnection();

  // ...

  pc.addStream(stream);
}

这种方法很有效,但它绝对没有效率,因为我每次都必须在画布上绘制它以提供MediaStream对象。

有没有更好的方法将RGBA流转换为VideoStreamTrack

0 个答案:

没有答案