本文主要介绍本地流的自定义采集和音视频流的自定义播放渲染等高阶用法。
自定义采集
获取 audioTrack,videoTrack 通常有以下几种方式:
采集 video 标签中正在播放的视频
if (!HTMLVideoElement.prototype.captureStream) {
console.log('your browser does not support capturing stream from video element');
return
}
const video = document.getElementByID('your-video-element-ID');
const stream = video.captureStream();
const audioTrack = stream.getAudioTracks()[0];
const videoTrack = stream.getVideoTracks()[0];
trtc.startLocalVideo({ option:{ videoTrack } });
trtc.startLocalAudio({ option:{ audioTrack } });
采集 canvas 中的动画
if (!HTMLCanvasElement.prototype.captureStream) {
console.log('your browser does not support capturing stream from canvas element');
return
}
const canvas = document.getElementByID('your-canvas-element-ID');
const fps = 15;
const stream = canvas.captureStream(fps);
const videoTrack = stream.getVideoTracks()[0];
trtc.startLocalVideo({ option:{ videoTrack } });
自定义播放渲染
如果您需要自定义播放渲染,不需要 SDK 播放视频,可参考如下步骤实现:
在 startLocalVideo 或 startRemoteVideo 方法调用时不填 view 参数或 view 参数传入 null
利用自己的播放器进行视频的播放渲染。
自定义渲染本地视频
await trtc.startLocalVideo();
const videoTrack = trtc.getVideoTrack();
const videoElement = document.getElementById('video-element');
videoElement.srcObject = new MediaStream([videoTrack]);
videoElement.play();
自定义渲染远端视频
trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, async ({ userId, streamType }) => {
await trtc.startRemoteVideo({ userId, streamType })
const videoTrack = trtc.getVideoTrack({ userId, streamType });
const videoElement = document.getElementById('remote-video-element');
videoElement.srcObject = new MediaStream([videoTrack]);
videoElement.play();
});
本页内容是否解决了您的问题?