本文介绍如何使用 Web 推流 SDK 进行本地合流,实现多路视频流(如摄像头、屏幕共享)和多路音频流(如麦克风、系统声音)的合并推流。通过本地合流,您可以:
在 Web 推流 SDK 中,音视频的合流处理方式取决于合流模式的开启状态。SDK 提供默认模式和合流模式两种方式:
addVideoStream()
将视频流添加到合流画布。addAudioStream()
将音频流添加到混音器。livePusher.enableMixing(true)
setMixingConfig
方法设置合流参数,指定合流后的视频分辨率、帧率以及背景色等属性。livePusher.setMixingConfig({ width: 1080, // 合流画布的宽度 height: 720, // 合流画布的高度 frameRate: 30, // 合成后的视频帧率 backgroundColor: '#000000', // 画布背景色 });
const cameraStreamId = await pushClient.startCamera(); const screenStreamId = await pushClient.startScreenCapture(); const micStreamId = await pushClient.startMicrophone();
说明
本地合流模式下,音视频流并不会自动添加到画布或混音器,需要手动添加。
livePusher.addVideoStream([{ streamId: screenStreamId, width: 1280, height: 720, x: 1280/2, y: 720/2, zOrder: 1, keepRatio: true, }, { streamId: cameraStreamId, width: 320, height 180, x: 320/2, y: 180/2, zOrder: 2, keepRatio: true, }]);
说明
x
、y
以画布左上角为原点,设定视频在画布中的位置。视频源的参照点则为其中心点。zOrder
用于控制画面叠放的先后顺序,数值越大越靠前。keepRatio
设置为 true
时,会根据原始视频的宽高比进行缩放。livePusher.addAudioStream({ streamId: micStreamId, volume: 100, });
说明
addAudioStream
。volume
调整每一路音频的初始音量大小。调用 startPush
方法并传入通过控制台生成的推流地址,启动推流。
livePusher.startPush('https://{{domain}}/{{appName}}/{{streamName}}.sdp')