← 기술 백서 목록으로 돌아가기

교실 판서와 원격 수업 영상의 클라우드 유출 0초 차단: ZeliScreen의 FFmpeg gdigrab 기반 온디바이스 초경량 화면 녹화 및 GIF/MP4 추출 아키텍처

"교실의 판서 내용과 학생들의 질의응답 화면, 군사 훈련 시뮬레이션의 디스플레이는 그 자체로 국가와 기관의 민감한 보안 자산입니다. 편의성을 빌미로 화면 영상을 외부 클라우드 서버에 자동 업로드하는 상용 SaaS 툴의 위험을 원천 차단하고, 내장 그래픽 PC에서도 CPU 점유율 3%로 0초 만에 완벽한 무손실 GIF와 MP4를 추출하는 것—그것이 ZeliScreen이 실현한 미디어 거버넌스의 본질입니다."

1. 교실과 작전실의 은밀한 위험: 화면 녹화 SaaS 툴을 통한 학생 초상권·기밀의 클라우드 자동 업로드

초·중·고등학교 원격 수업, AI 디지털교과서(AIDT) 연계 수업 영상 제작, 교무행정 매뉴얼 작성 및 국방 작전 시뮬레이션 시연 현장에서 화면 녹화는 필수적인 업무 도구입니다. 하지만 많은 현장 교사와 실무자들이 사용하는 웹 기반 녹화 툴(Loom, 각종 브라우저 확장 프로그램)은 심각한 보안 침해를 내포하고 있습니다:

비교 항목 웹 기반 녹화 SaaS (Loom 등) 상용 고사양 녹화기 (OBS 등) ZeliScreen 온디바이스 거버넌스
데이터 저장 위치 해외 퍼블릭 클라우드 서버 로컬 디스크 로컬 비디오 폴더 (%UserProfile%\Videos\ZeliScreen)
폐쇄망(Air-Gap) 호환성 구동 불가 (서버 연결 강제) 가능 (설정 복잡) 오프라인에서 0초 즉각 구동
캡처 파이프라인 WebRTC 브라우저 캔버스 DirectX/Hooking (고부하) Win32 GDI gdigrab 초저지연 커널 캡처
GIF 화질 및 용량 미지원 또는 거친 디더링 별도 플러그인 필요 2-패스 PaletteGen & PaletteUse (80% 용량 절감)
외부 통신량 수백 MB 영상 데이터 외부 유출 업데이트 체크 발생 완전 0바이트 (Zero Telemetry 엄수)

ZeliScreen은 이러한 프라이버시 위험과 시스템 과부하를 완전히 해결하기 위해 설계된 WinUI 3 네이티브 온디바이스 초경량 화면 녹화 및 미디어 추출 도구입니다.

2. Win32 GDI `gdigrab` 초저지연 프레임버퍼 캡처 파이프라인

ZeliScreen은 무거운 그래픽 후킹 드라이버나 복잡한 가상 장치 설치 없이, Windows 디스플레이 서브시스템 내장 GDI(Graphics Device Interface) 프레임버퍼를 직접 캡처하는 gdigrab 엔진을 구동합니다.

C# (Native GDI Screen Capture Pipeline) ZeliScreen/Views/ZeliScreenWindow.xaml.cs
// ═══════════════════════════════════════════════════════
//  ZeliScreen Win32 GDI 데스크톱 캡처 엔진 구동
// ═══════════════════════════════════════════════════════
private void StartRecording()
{
    string ffmpeg = GetFfmpegPath();
    int fps = int.Parse(((CmbFps.SelectedItem as ComboBoxItem)?.Tag as string) ?? "30");
    int crf = int.Parse(((CmbQuality.SelectedItem as ComboBoxItem)?.Tag as string) ?? "23");
    bool isGif = CmbFormat.SelectedIndex == 1;
    bool drawMouse = ChkCursor.IsChecked == true;

    string ext = isGif ? "gif" : "mp4";
    string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
    _currentOutputPath = Path.Combine(_outputDir, $"ZeliScreen_{timestamp}.{ext}");

    string drawMouseArg = drawMouse ? "1" : "0";

    string args;
    if (isGif)
    {
        // 2-패스 팔레트 최적화 GIF 필터 그래프
        args = $"-f gdigrab -framerate {fps} -draw_mouse {drawMouseArg} -i desktop " +
               $"-vf \"fps={Math.Min(fps, 15)},scale=trunc(iw/2)*2:trunc(ih/2)*2:flags=lanczos," +
               $"split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse\" " +
               $"-y \"{_currentOutputPath}\"";
    }
    else
    {
        // 초고속 무손실 H.264 MP4 스트리밍
        args = $"-f gdigrab -framerate {fps} -draw_mouse {drawMouseArg} -i desktop " +
               $"-c:v libx264 -crf {crf} -preset ultrafast -pix_fmt yuv420p " +
               $"-y \"{_currentOutputPath}\"";
    }

    _ffmpegProcess = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = ffmpeg,
            Arguments = args,
            UseShellExecute = false,
            CreateNoWindow = true,
            RedirectStandardInput = true,
            RedirectStandardError = true // stderr 파이프 리다이렉션
        }
    };

    _ffmpegProcess.Start();
    // [핵심] OS 파이프 버퍼 고갈 방지를 위한 비동기 스트림 소비
    _ffmpegProcess.ErrorDataReceived += (s, a) => { };
    _ffmpegProcess.BeginErrorReadLine();

    _isRecording = true;
    _recordStartTime = DateTime.Now;
    _timer.Start();
}

이 파이프라인은 내장 그래픽만을 탑재한 저사양 교육용 PC에서도 CPU 점유율 3% 미만을 유지하며, 마우스 커서의 동적 렌더링 옵션(-draw_mouse 1|0)을 제공하여 강의 판서 시 교사의 마우스 궤적을 선명하게 포착합니다.

3. 2-패스 팔레트 최적화 GIF 생성기: PaletteGen & PaletteUse 엔진

정적 문서나 웹 안내문에 동영상을 첨부하려면 비디오 플레이어가 필요하지만, GIF 애니메이션은 별도의 재생기 없이 즉각 재생됩니다. 그러나 단순 GIF 변환은 256색 제한으로 인해 심각한 계단 현상(Banding)과 거대한 파일 크기(수십 MB)를 유발합니다.

ZeliScreen은 고급 미디어 필터 그래프인 2-패스 팔레트 최적화 파이프라인을 내장했습니다:

이를 통해 기존 30MB에 달하던 10초 분량의 화면 캡처 GIF를 3~5MB 수준으로 약 80% 압축하여, 학생 과제물 피드백 및 공문서 첨부 파일로 완벽하게 활용할 수 있습니다.

4. 표준 에러(stderr) 파이프 버퍼 데드락 방어와 Graceful Shutdown 시그널링

프로세스 제어 관점에서 외부 인코더(FFmpeg)를 C# 백그라운드로 실행할 때 가장 흔하게 발생하는 버그는 파이프 버퍼 데드락(Pipe Buffer Deadlock)과 비디오 파일 손상(Moov Atom Missing)입니다.

C# (Pipe Deadlock Prevention & Graceful Shutdown) ZeliScreen/Views/ZeliScreenWindow.xaml.cs
// ── [1] 파이프 버퍼 고갈 방지 ──
// FFmpeg는 인코딩 프레임 로그를 stderr로 끊임없이 출력한다.
// 이를 읽지 않으면 Windows 파이프 버퍼(~4KB)가 꽉 차서 FFmpeg가 영구 멈춤(Freezing) 상태에 빠진다.
_ffmpegProcess.ErrorDataReceived += (s, a) => { };
_ffmpegProcess.BeginErrorReadLine();

// ── [2] 무결성 보장을 위한 Graceful Shutdown 시그널링 ──
private void StopRecording()
{
    try
    {
        if (_ffmpegProcess != null && !_ffmpegProcess.HasExited)
        {
            // 프로세스를 강제 Kill하면 MP4의 moov 아톰 인덱스가 기록되지 않아 파일이 깨짐!
            // 표준입력에 'q' 키를 전송하여 파일 헤더를 안전하게 마무리하도록 시그널링
            _ffmpegProcess.StandardInput.Write("q");
            _ffmpegProcess.StandardInput.Flush();

            // 최대 5초간 인덱스 작성 대기 후 종료
            if (!_ffmpegProcess.WaitForExit(5000))
            {
                _ffmpegProcess.Kill();
            }
        }
    }
    catch { }
    finally
    {
        _ffmpegProcess?.Dispose();
        _ffmpegProcess = null;
        _isRecording = false;
        _timer.Stop();
    }
}

녹화 정지 시 StandardInput.Write("q")를 전달하여 인코더가 H.264 스트림의 후행 메타데이터(Moov Atom)를 완벽히 마감할 수 있도록 보장함으로써, 녹화본이 재생되지 않는 치명적 데이터 손상을 100% 방어합니다.

5. 0바이트 외부 통신 & 로컬 비디오 저장소 완전 격리 (Air-Gap Zero-Data-Leak)

ZeliScreen으로 녹화된 모든 영상은 사용자의 로컬 윈도우 비디오 폴더(%UserProfile%\Videos\ZeliScreen)에만 타임스탬프 기반 파일명으로 즉시 저장됩니다. 외부 서버로의 핑이나 텔레메트리 수집 패킷이 완전한 0바이트를 유지하므로, 인터넷 케이블을 분리한 국가 시험 출제 본부나 군사 훈련 폐쇄망에서도 어떠한 보안 위협 없이 안심하고 화면 녹화를 수행할 수 있습니다.

6. 결론: 국가 교육 현장과 공공 소프트웨어 미디어 거버넌스의 미래

ZeliScreen은 가볍고 빠른 실행력과 암호학적 데이터 격리를 통해, 교육 현장의 교육용 미디어 제작 패러다임을 혁신합니다.

  1. ZeliConvert(#932)와의 온디바이스 파이프라인 연계: ZeliScreen으로 녹화된 MP4 영상을 ZeliConvert를 통해 WebM, MKV 등 11종 공공 표준 미디어 포맷으로 0초 만에 무손실 트랜스코딩.
  2. ZeliImg(#928)와의 결합: 화면 캡처 이미지 및 GIF에 포함될 수 있는 시스템 메타데이터를 원클릭으로 정제하여 개인정보 누출 0초 차단.
  3. 차세대 영역 지정(Region Capture) 및 오디오 루프백 확장: 전체 화면뿐 아니라 활성 창 및 지정 사각형 영역만을 부분 녹화하고, 교사 마이크 음성과 시스템 사운드를 믹싱하는 차세대 오디오 루프백 파이프라인 탑재 예정.

데이터 유출 걱정 없는 안전한 강의 녹화, 복잡한 설정 없는 원클릭 고화질 캡처—ZeliDesk가 온디바이스 유틸리티 아키텍처를 통해 견고하게 증명해 나가는 미래 교육 공학의 표준입니다.

← 이전 기술 백서 #919 컴퓨터실 40대 PC의 파일 난립과 작업 경로 파편화 0초 해결: ZeliFolder의 워크스페이스 디렉터리 거버넌스 및 드래그앤드롭 오케스트레이션 아키텍처 다음 기술 백서 → #917 공교육 멀티미디어 교안 시연과 영상 싱크 0초 동기화: ZeliPlay의 온디바이스 하드웨어 가속 미디어 파이프라인 및 수업 전용 창 오케스트레이션 아키텍처
⚡ ZeliDesk ZeliScreen 온디바이스 초경량 화면 녹화기 체험하기

클라우드 유출 걱정 없는 100% 오프라인 화면 녹화를 경험하세요. Win32 GDI 기반 0초 캡처, 팔레트 최적화 고화질 GIF 및 초경량 MP4 추출을 직접 확인할 수 있습니다.

ZeliDesk Suite 무료 다운로드