Web inference-sdk
inference-sdk로 Roboflow Cloud에서 실행되는 브라우저 기반 실시간 비디오 추론을 수행합니다.
마지막 업데이트
도움이 되었나요?
도움이 되었나요?
import { connectors, webrtc, streams } from '@roboflow/inference-sdk';
// ⚠️ 개발용으로만 withApiKey를 사용하세요
// ⚠️ 프로덕션에서는 이 방법을 사용하지 마세요. API 키가 노출됩니다
// 프로덕션에서는 백엔드 프록시를 사용하세요(다음 섹션 참조)
const connector = connectors.withApiKey("your-api-key");
// 카메라 스트림 가져오기
const stream = await streams.useCamera({
video: {
facingMode: { ideal: "environment" },
width: { ideal: 640 },
height: { ideal: 480 }
}
});
// WebRTC 연결 시작
const connection = await webrtc.useStream({
source: stream,
connector,
wrtcParams: {
workspaceName: "your-workspace",
workflowId: "your-workflow",
imageInputName: "image",
streamOutputNames: ["output"],
dataOutputNames: ["predictions"]
},
onData: (data) => {
console.log("Inference results:", data);
}
});
// 처리된 비디오 표시
const videoElement = document.getElementById('video');
videoElement.srcObject = await connection.remoteStream();
// 완료되면 정리
await connection.cleanup();import { connectors, webrtc, streams } from '@roboflow/inference-sdk';
// 직접 API 키 대신 프록시 엔드포인트 사용
const connector = connectors.withProxyUrl('/api/init-webrtc');
const stream = await streams.useCamera({ video: true });
const connection = await webrtc.useStream({
source: stream,
connector,
wrtcParams: { /* ... */ }
});import { InferenceHTTPClient } from '@roboflow/inference-sdk/api';
app.post('/api/init-webrtc', async (req, res) => {
const { offer, wrtcparams } = req.body;
// API 키는 서버에서 안전하게 유지됩니다
const client = InferenceHTTPClient.init({
apiKey: process.env.ROBOFLOW_API_KEY
});
const answer = await client.initializeWebrtcWorker({
offer,
workspaceName: wrtcparams.workspaceName,
workflowId: wrtcparams.workflowId,
config: {
imageInputName: wrtcparams.imageInputName,
streamOutputNames: wrtcparams.streamOutputNames,
dataOutputNames: wrtcparams.dataOutputNames
}
});
res.json(answer);
});// 다른 시각화로 전환
connection.reconfigureOutputs({
streamOutput: ["blur_visualization"]
});
// 모든 data 출력 활성화
connection.reconfigureOutputs({
dataOutput: ["*"]
});
// 둘 다 한 번에 변경
connection.reconfigureOutputs({
streamOutput: ["annotated_image"],
dataOutput: ["predictions", "counts"]
});