let mediaRecorder: MediaRecorder | null = null; let videoChunks: Blob[] = []; // Запись видео async function startRecording(streamId: string) { const stream = await navigator.mediaDevices.getUserMedia({ video: { mandatory: { chromeMediaSource: 'tab', chromeMediaSourceId: streamId } } as any, audio: false }); mediaRecorder = new MediaRecorder(stream); mediaRecorder.ondataavailable = (event) => { if (event.data && event.data.size > 0) { videoChunks.push(event.data); chrome.runtime.sendMessage({ type: 'VIDEO_CHUNK', data: event.data, timestamp: Date.now() }); } }; mediaRecorder.start(1000); } // Остановка записи function stopRecording() { if (mediaRecorder && mediaRecorder.state !== 'inactive') { mediaRecorder.stop(); } } // Получение чанков function getChunks(): Blob[] { return videoChunks; } // Обработка сообщений chrome.runtime.onMessage.addListener((message) => { switch (message.type) { case 'START_RECORDING': startRecording(message.streamId); break; case 'STOP_RECORDING': stopRecording(); break; case 'GET_CHUNKS': chrome.runtime.sendMessage({ type: 'CHUNKS_RESPONSE', chunks: getChunks() }); break; } });