You can see it working live here vue-stream-mask demo
Features
- Person & multi-person body segmentation blurring video background
- Green screen mask, you can use the background you wish with a simple property
yarn add vue-stream-mask
import * as VueStreamMask from "vue-stream-mask"
Vue.use(VueStreamMask)
<vue-stream-mask />
By default when the component loads it ask for the camera media and later emits the loaded event wich serves as a parameter the stream that you can add to a RTCPeerConnection, If you want to avoid this behaviour check the on demand way of use.
Example:
<vue-stream-mask @loaded="handleStream" />
<!-- somewhere else on like on your code methods -->
<script>
function handleStream(stream){
// Do things to the stream
// E.g. Send it to another computer using an RTCPeerConnection
// pc is an RTCPeerConnection created elsewhere
this.pc.addStream(stream);
}
</script>
If you want to ask for the media stream at a certain moment on your app
Example:
<vue-stream-mask await ref="vueStreamRef"/>
<!-- somewhere else on like on your code methods -->
<script>
async function initStream(){
let stream = await this.$refs.vueStreamRef.init()
// Do things to the stream
// E.g. Send it to another computer using an RTCPeerConnection
// pc is an RTCPeerConnection created elsewhere
this.pc.addStream(stream);
}
</script>
function | Description |
---|---|
async init() |
Triggering this function will start video capture and return a media stream object |
stop() |
Triggering this function will stop video capture |
Property name | Description |
---|---|
await |
Component wont ask for media stream until you run the init() func |
show |
Displays a canvas element with the local stream |
multiple |
Enables multiple person segmentation |
background |
If enabled it replaces persons background with given img url |
backgroundBlurAmount |
if background prop its not defined you can handle with this one how much blur you want in the background |