Dan*_*och 6 javascript chromium webrtc electron
我有一个来自 Electron 应用程序内的 Redis 回调的 RGBA 流:
redis.on('messageBuffer', function(channel, frame) {
if (channel.toString() !== REDIS_EVENT) return;
});
Run Code Online (Sandbox Code Playgroud)
为了通过 WebRTC 将其作为视频传送,我创建了一个 Canvas,并使用HTMLCanvasElement.captureStream()将其用作 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);
});
Run Code Online (Sandbox Code Playgroud)
这stream是一个CanvasCaptureMediaStream对象,这里是我如何使用它作为 WebRTC 流源:
function createWebRTC(stream, clientId) {
let pc = new RTCPeerConnection();
// ...
pc.addStream(stream);
}
Run Code Online (Sandbox Code Playgroud)
这种方法是有效的,但它绝对没有效率,因为我每次都必须在画布中绘制它才能提供MediaStream对象。
是否有更好的方法将 RGBA 流转换为VideoStreamTrack?
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |