
Security News
How Enterprise Security Is Adapting to AI-Accelerated Threats
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.
skyway-video-processors
Advanced tools
JavaScript/TypeScript を用いてブラウザ上でカメラから取得した映像の背景を加工するライブラリです。 カメラから取得した映像の背景を任意の画像に差し替えたり(以下では背景差し替え処理と呼びます)、背景へのぼかし処理(以下では背景ぼかし処理と呼びます)を行うことができます。
このリポジトリは公開用のミラーリポジトリであり、こちらで開発は行いません。
受け付けておりません。
Enterprise プランをご契約のお客様はテクニカルサポートをご利用ください。 詳しくはSkyWay サポートをご確認ください。
MediaStreamTrackProcessor という Experimental のブラウザ API を使用しているため、使用する際は以下より対応ブラウザを参照してください。
https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackProcessor#browser_compatibility
以下のコマンドでインストールを行います。
npm install skyway-video-processors
以下の使い方の詳細はSampleを参照してください。
任意の画像を利用して背景差し替え処理を行う VirtualBackground と、任意の強度で背景ぼかし処理を適用する BlurBackground の 2 つのクラスが存在します。
VirtualBackground の使い方VirtualBackground のインスタンスを作成します。
import { VirtualBackground } from 'skyway-video-processors';
virtualBackground = new VirtualBackground({ image: 'green.png' });
インスタンスの初期化を行います。
await virtualBackground.initialize();
createProcessedStreamによって、デバイスからの映像に対して背景差し替え処理を行った映像の ProcessedStream を取得できます。
ProcessedStream の track を用いて、背景差し替え処理を行った映像の MediaStream を作成できます。
const result = await virtualBackground.createProcessedStream();
const stream = new MediaStream([result.track]);
作成した MediaStream を videoElement の srcObject に割り当てることで映像を再生できます。
videoElement.srcObject = stream;
await videoElement.play();
BlurBackground の使い方BlurBackground のインスタンスを作成します。
import { BlurBackground } from 'skyway-video-processors';
blurBackground = new BlurBackground();
インスタンスの初期化を行います。
await blurBackground.initialize();
createProcessedStreamによって、デバイスからの映像に対して背景ぼかし処理を行った映像の ProcessedStream を取得できます。
ProcessedStream の track を用いて、背景ぼかし処理を行った映像の MediaStream を作成できます。
const result = await blurBackground.createProcessedStream();
const stream = new MediaStream([result.track]);
作成した ProcessedStream を videoElement の srcObject に割り当てることで映像を再生できます。
videoElement.srcObject = stream;
await videoElement.play();
バーチャル背景による加工を行った映像を SkyWay で送信する映像として利用することができます。
VirtualBackground 、 もしくは BlurBackground の初期化を行い、そのインスタンスを JavaScript SDK に引数として渡します。
const backgroundProcessor = new BlurBackground();
await backgroundProcessor.initialize();
const video = await SkyWayStreamFactory.createCustomVideoStream(backgroundProcessor, {
stopTrackWhenDisabled: true,
});
const me = await room.join();
await me.publish(video);
以下の API を提供しています。
VirtualBackgroundnew VirtualBackground({image: (string | HTMLImageElement)}): VirtualBackground
背景差し替え処理に使用する画像をファイルパス、もしくは HTMLImageElement の形式で設定します。
なお、外部のURLを指定する場合は、CORSの制約によって外部から画像を読み込むことができない場合があります。そのため、以下いずれかの対応策を取る必要があります。
Access-Control-Allow-Origin ヘッダーの設定により、画像の読み込み元のオリジンからのアクセスが許可されている画像を使用する。initializeVirtualBackground のインスタンスの初期化を行います。
virtualBackground.initialize(): Promise<void>
createProcessedStreamカメラから取得した映像に対して、背景差し替え処理を行った映像である ProcessedStream を取得します。
createProcessedStream(): Promise<ProcessedStream>
createProcessedStream(options: {
stopTrackWhenDisabled?: boolean,
onUpdateTrack?: (track: MediaStreamTrack) => Promise<void>,
constraints?: MediaTrackConstraints
}): Promise<ProcessedStream>
options を指定する場合、以下のプロパティを指定します。
stopTrackWhenDisabled?: boolean
ProcessedStream.setEnabled(false) の実行時に track を停止するかを示すオプションonUpdateTrack?: (track: MediaStreamTrack) => Promise<void>
ProcessedStream.setEnabled(true) の際にデバイスから再取得した MediaStreamTrack に行う操作constraints: MediaTrackConstraints
height: number | ConstrainULongRangewidth: number | ConstrainULongRangedeviceId: ConstrainDOMString以下のようにして options を指定できます。
const constraints = {
height: {ideal: 480},
width: {ideal: 640},
deviceId: 'default',
};
const result = await virtualBackground.createProcessedStream({
stopTrackWhenDisabled: true,
onUpdateTrack: async (track) => {
const stream = new MediaStream([track]);
videoElement.srcObject = stream;
},
constraints
});
dispose映像の取得を停止します。
dispose(): Promise<void>
dispose 実行後に背景差し替え処理を行うには、インスタンスを再度作成しなおす必要があります。
BlurBackgroundnew BlurBackground(): BlurBackground
new BlurBackground({blur: number}): BlurBackground
ぼかしの強度を 1~100 の範囲で指定できます。デフォルトでは 20 と設定されています。
initializeBlurBackground のインスタンスの初期化を行います。
blurBackground.initialize(): Promise<void>
createProcessedStreamデバイスのカメラから取得した映像に対して、背景ぼかし処理が行われた映像のProcessedStreamを取得します。
createProcessedStream(): Promise<ProcessedStream>
createProcessedStream(options: {
stopTrackWhenDisabled?: boolean,
onUpdateTrack?: (track: MediaStreamTrack) => Promise<void>,
constraints?: MediaTrackConstraints
}): Promise<ProcessedStream>
options を指定する場合、以下のプロパティを指定します。
stopTrackWhenDisabled?: boolean
ProcessedStream.setEnabled(false) の実行時に track を停止するかを示すオプションonUpdateTrack?: (track: MediaStreamTrack) => Promise<void>
ProcessedStream.setEnabled(true) の際にデバイスから再取得した MediaStreamTrack に行う操作constraints: MediaTrackConstraints
height: number | ConstrainULongRangewidth: number | ConstrainULongRangedeviceId: ConstrainDOMString以下のようにして options を指定できます。
const constraints = {
height: {ideal: 480},
width: {ideal: 640},
deviceId: 'default',
};
const result = await blurBackground.createProcessedStream({
stopTrackWhenDisabled: true,
onUpdateTrack: async (track) => {
const stream = new MediaStream([track]);
videoElement.srcObject = stream;
},
constraints
});
dispose映像の取得を停止します。
dispose(): Promise<void>
dispose 実行後に背景ぼかし処理を行うには、インスタンスを再度作成しなおす必要があります。
ProcessedStreamcreateProcessedStreamの実行により取得されるクラスです。
track加工した映像の MediaStreamTrack です。
track: MediaStreamTrack | null;
isEnabled映像が有効/無効になっているかの状態を示します。
isEnabled: boolean;
methodssetEnabled映像の有効/無効の状態を切り替えます。
async setEnabled(enabled: boolean): Promise<void>
dispose映像の取得を中止し、track を破棄します。
async dispose(): Promise<void>
FAQs
The official virtual background library for SkyWay
The npm package skyway-video-processors receives a total of 486 weekly downloads. As such, skyway-video-processors popularity was classified as not popular.
We found that skyway-video-processors demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 10 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.