diff --git a/src/frontend/eyesee-user/src/apis/video.ts b/src/frontend/eyesee-user/src/apis/video.ts new file mode 100644 index 0000000..537b6ce --- /dev/null +++ b/src/frontend/eyesee-user/src/apis/video.ts @@ -0,0 +1,18 @@ +import { api } from "."; + +export const videoPost = async ( + userId: number, + startTime: string, + endTime: string, + video: File +) => { + const formData = new FormData(); + + formData.append("userId", userId.toString()); + formData.append("startOffset", new Date(startTime).toISOString()); + formData.append("endOffset", new Date(endTime).toISOString()); + formData.append("video", video); + + const response = await api.post(`/cheatings/video`, formData); + return response.data; +}; diff --git a/src/frontend/eyesee-user/src/app/exam-room/page.tsx b/src/frontend/eyesee-user/src/app/exam-room/page.tsx index 30a12a8..8973158 100644 --- a/src/frontend/eyesee-user/src/app/exam-room/page.tsx +++ b/src/frontend/eyesee-user/src/app/exam-room/page.tsx @@ -8,13 +8,16 @@ import { useStore } from "@/store/useStore"; const RealTimeVideoPage = () => { // 수험자 실시간 화면이 담기는 공간 const videoRef = useRef(null); + // 캠버스에서 프레임을 캡쳐 const canvasRef = useRef(null); // 웹소켓 연결 관리 const socketRef = useRef(null); + // 실시간 비디오 녹화 const mediaRecorderRef = useRef(null); + // 미디어 스트림을 저장 const streamRef = useRef(null); @@ -22,8 +25,6 @@ const RealTimeVideoPage = () => { const recordedChunksRef = useRef([]); const captureIntervalRef = useRef(null); - const [isProcessing, setIsProcessing] = useState(false); - const userId = useStore(useUserStore, (state) => state.userId); const examId = useStore(useUserStore, (state) => state.examId); @@ -120,8 +121,6 @@ const RealTimeVideoPage = () => { const startRecordingForCheating = async () => { try { - setIsProcessing(true); - // 이미 녹화 중이면 기존 녹화 중지 if (mediaRecorderRef.current) { mediaRecorderRef.current.stop(); @@ -138,11 +137,9 @@ const RealTimeVideoPage = () => { if (mediaRecorderRef.current) { mediaRecorderRef.current.stop(); } - setIsProcessing(false); }, 5000); } catch (error) { console.error("부정행위 이벤트 처리 중 오류", error); - setIsProcessing(false); } };