알려진 제한 사항 및 주의사항

FlowPick 현재 버전의 기술적 제한, 알려진 문제 및 경계 상황 설명.

이 문서는 FlowPick 현재 버전의 기술적 제한과 알려진 문제를 요약합니다. 이러한 제한을 이해하면 사용过程中 예기치 않은 상황을 피할 수 있습니다.


제한 등급 설명

이 문서의 각 제한은 영향 정도에 따라 세 등급으로 분류됩니다:

등급아이콘의미예시
강력한 제한🔴우회 불가능, 현재 버전 미지원DRM 보호 콘텐츠, Blob 모드 1.5GB 상한
약한 제한🟡제한 있지만 대안 존재CORS 크로스 오리GIN(확장 프로그램으로 우회 가능), FFmpeg 성능(TS 출력 선택 가능)
주의사항🔵기능에 영향 없지만 숙지 필요첫 번째 로딩 느림, 세그먼트 URL 만료 가능

파일 크기 제한

Blob 모드 강력한 제한

브라우저가 File System Access API 또는 StreamSaver.js를 지원하지 않을 때 FlowPick은 Blob 모드로 파일을 씁니다. 이 모드는 강력한 크기 제한이 있습니다:

제한 유형임계값동작
경고 임계값800MB콘솔에 경고 출력, 인터페이스에 프롬프트 표시
강력한 제한1.5GB다운로드 거부, 사용자에게 브라우저 변경 프롬프트

원인: Blob 모드는 전체 파일을 메모리에 로드해야 하며, 1.5GB 초과 시 브라우저 크래시 또는 페이지 무응답을 초래할 수 있습니다.

해결 방안: Chrome 86+ 또는 Edge 86+ 사용, 이들은 File System Access API를 지원하여 임의 크기의 파일을 스트리밍 쓸 수 있습니다.

3단계 쓰기 전략의 완전한 비교와 강등 논리에 대해서는 다운로드 엔진 아키텍처 — 전략 비교 요약을 참조하십시오. 대용량 파일 다운로드 실패 해결 단계에 대해서는 일반적인 문제 해결 — 대용량 파일 다운로드 실패를 참조하십시오. 각 브라우저의 FSA API 지원 현황에 대해서는 브라우저 호환성 — 기능 지원 매트릭스를 참조하십시오.

메모리 압력

스트리밍 쓰기를 사용하더라도 다음 요인은 여전히 메모리를 소모합니다:

  • 동시 다운로드 세그먼트 데이터(각 세그먼트 통상 1-10MB)
  • FFmpeg WASM 런타임 메모리(약 200-400MB)
  • 페이지 UI 및 기타 컴포넌트

권장 사항:

  • 초대용량 파일(>5GB) 다운로드 시 동시 스레드 수를 1-2로 낮추기
  • 메모리 점유 탭 닫기
  • 동시에 여러 FFmpeg 리무싱 작업 실행 피하기
메모리 안전 관리의 완전한 메커니즘(크기 예측, 임계값 검사, 런타임 모니터링)에 대해서는 다운로드 엔진 아키텍처 — 메모리 안전 관리을 참조하십시오. 동시수 구성 방법에 대해서는 구성 참조를 참조하십시오.

스트리밍 프로토콜 제한

DRM 보호 콘텐츠

FlowPick은 다음 유형의 보호 콘텐츠를 처리할 수 없습니다:

보호 기술일반적인 플랫폼상태
WidevineNetflix, Disney+지원 안 함
PlayReady일부 Windows 플랫폼지원 안 함
FairPlayApple TV+지원 안 함
ClearKey일부 테스트 스트림지원 안 함

검출 방식: DASH 플레이리스트에 <ContentProtection> 태그가 나타날 때 다운로더가 명확하게 지원하지 않음을 알립니다.

DRM을 지원할 수 없는 이유?

DRM 시스템의 핵심은 콘텐츠 복호화 모듈(CDM)이며, 이는 브라우저 내장의 폐소스 바이너리 컴포넌트입니다. CDM은 운영 체제와 하드웨어에 깊이 결합되어 있으며, 보호된 콘텐츠를 복호화하고 디코딩된 프레임을 그래픽 카드에 직접 출력하는 역할을 합니다. 애플리케이션 계층에서 복호화된 데이터를 가로채거나 읽을 수 없습니다. 이것이 DRM 시스템의 설계 목표입니다—복호화부터 표시까지 전체 체인에서 콘텐츠가 가로채이지 않도록 보장합니다.

DRM 스트림의 검출 프롬프트와 사용자 인터페이스 표현에 대해서는 비디오 스니핑 — DASH 스트림을 참조하십시오. 미디어가 DRM 콘텐츠를 검출하지 못하는 문제 해결에 대해서는 일반적인 문제 해결 — 확장 프로그램이 미디어를 검출하지 못함을 참조하십시오.

AES-128 암호화

FlowPick은 HLS의 AES-128 세그먼트 암호화를 지원하지만 다음 제한이 있습니다:

  • METHOD=AES-128만 지원, SAMPLE-AES 미지원
  • 키 파일은 HTTP(S)로 직접 접근 가능해야 함
  • Cookie 인증이 필요한 키 URL 미지원(온라인 도구 모드)
AES-128 복호화의 완전한 기술적 구현(Web Crypto API, IV 처리)에 대해서는 다운로드 엔진 아키텍처 — AES-128 복호화를 참조하십시오. 암호화 스트림 검출 흐름에 대해서는 비디오 스니핑 — 암호화 스트림를 참조하십시오.

라이브 스트림

FlowPick은 주로 VOD(Video On Demand) 콘텐츠를 위해 설계되었습니다:

  • 라이브 HLS 스트림은 캐시된 세그먼트를 다운로드할 수 있지만 미래의 세그먼트는 획득 불가
  • 라이브 스트림의 세그먼트 리스트는 지속적으로 업데이트되며, 다운로더는 새로 추가된 세그먼트를 자동 추적하지 않음
  • 라이브 종료 후 완전한 재생 다운로드 권장

라이브 스트림 다운로드 실제 효과:

라이브 진행 중(30분 재생됨):
  M3U8 플레이리스트는 최근 ~30초 세그먼트 포함
  → 다운로더는 이 30초 콘텐츠만 획득 가능
  → 이전 또는 이후 세그먼트 획득 불가

라이브 종료 후:
  M3U8 플레이리스트는 완전한 세그먼트 리스트 포함
  → 다운로더는 전체 콘텐츠 획득 가능
  → VOD 다운로드와 동일
라이브 재생 다운로드의 완전한 시나리오 설명에 대해서는 라이브 재생 저장를 참조하십시오. HLS 라이브 스트림의 플레이리스트 구조에 대해서는 비디오 스니핑 — HLS 스트림을 참조하십시오.

분리 음비디오 스트림

일부 DASH 스트림은 비디오와 오디오를 독립적인 AdaptationSet으로 분리합니다:

  • 다운로더는 비디오 스트림과 오디오 스트림을 각각 나열
  • 일치하는 비디오와 오디오 스트림을 수동으로 선택해야 함
  • 병합에 FFmpeg WASM 필요, 시간 소요
  • 음비디오 길이가 일치하지 않으면 병합 결과에 음화면 동기화 불일치可能出现
DASH 스트림 음비디오 분리 처리 흐름과 FMP4 재조립에 대해서는 다운로드 엔진 아키텍처 — DASH 스트림의 특수 처리를 참조하십시오. 음화면 동기화 불일치 해결 및 복구에 대해서는 일반적인 문제 해결 — 병합 후 비디오 음화면 동기화 불일치를 참조하십시오.

브라우저 제한

File System Access API

브라우저지원 상태
Chrome 86+완전 지원
Edge 86+완전 지원
Firefox지원 안 함
Safari지원 안 함

지원하지 않는 브라우저에서 모든 다운로드는 Blob 모드를 사용하며 1.5GB 크기 제한을 받습니다.

각 브라우저의 완전한 기능 지원 매트릭스와 브라우저 선택 권장 사항에 대해서는 브라우저 호환성를 참조하십시오. FSA API 사용 불가 시 해결에 대해서는 일반적인 문제 해결 — File System Access API 사용 불가를 참조하십시오.

SharedArrayBuffer

FFmpeg WASM 멀티 스레드 모드는 SharedArrayBuffer를 필요로 하며, 이는 웹사이트가 다음 HTTP 응답 헤더를 설정해야 합니다:

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

이 헤더들이 설정되지 않으면 FFmpeg이 자동으로 싱글 스레드 모드로 강등되며, 병합 속도가 약 40-60% 저하됩니다.

SharedArrayBuffer의 브라우저 지원 상세 및 자체 배포 구성에 대해서는 브라우저 호환성 — 고급 API를 참조하십시오. 싱글 스레드와 멀티 스레드의 성능 비교 데이터에 대해서는 형식 변환 — 멀티 스레드 모드를 참조하십시오.

Service Worker

StreamSaver.js는 Service Worker에 의존합니다. 다음 상황에서 StreamSaver를 사용할 수 없습니다:

  • 브라우저 프라이빗 모드(일부 브라우저가 Service Worker 제한)
  • 기업 정책이 Service Worker 금지
  • 웹사이트가 mitm.htmlstreamsaver-sw.js를 올바르게 배포하지 않음
StreamSaver.js의 강등 동작과 쓰기 전략 우선순위에 대해서는 다운로드 엔진 아키텍처 — 파일 쓰기 모듈을 참조하십시오. 기업 네트워크 환경의 특수 제한에 대해서는 일반적인 문제 해결 — 기업 네트워크 환경을 참조하십시오.

네트워크 제한

CORS 크로스 오리GIN 제한

온라인 도구 모드(/m3u8-downloader, /dash-downloader)는 브라우저 동일 출처 정책 제한을 받습니다:

  • 스트리밍 서버가 Access-Control-Allow-Origin 응답 헤더를 설정하지 않으면 요청이 차단됨
  • 일부 CDN이 Referer 또는 Origin 요청 헤더를 확인함
  • 확장 프로그램 버전은 이 제한을 받지 않으며, 확장 프로그램 권한으로 요청을 발행하기 때문

CORS 오류의 기술 원리:

온라인 도구(flowpick.app)이 CDN(cdn.example.com) 요청:

브라우저 요청 전송 → CDN 세그먼트 데이터 반환
                      ↓
              브라우저 응답 헤더 확인:
              Access-Control-Allow-Origin에 flowpick.app 포함?
                      ↓
              아니오 → 브라우저 JavaScript 응답 읽기 차단
              예 → 정상 읽기

확장 프로그램 버전:
확장 프로그램이 chrome.webRequest / chrome.fetch로 요청 발행
→ 동일 출처 정책 제한 없음
→ 모든 출처의 응읽을 읽을 수 있음
CORS 오류 해결 및 해결 방안에 대해서는 일반적인 문제 해결 — 다운로드 중간 실패를 참조하십시오. 확장 프로그램과 온라인 도구의 기능 차이에 대해서는 온라인 도구를 참조하십시오.

요청 빈도 제한

일부 CDN은 고빈도 요청에 대해 속도 제한을 적용합니다:

  • 동시 스레드 수가 너무 높으면 429(Too Many Requests) 오류 트리거 가능
  • 동시수를 4 이내로 제어 권장
  • 속도 제한 발생 시 동시수 낮춘 후 재시도
동시수와 성능의 관계(한계 수익 체감 분석 포함)에 대해서는 다운로드 엔진 아키텍처 — 동시수와 성능의 관계를 참조하십시오. 다운로드 속도 느림 진단 흐름에 대해서는 일반적인 문제 해결 — 다운로드 속도가 느림을 참조하십시오.

세그먼트 URL 만료

일부 스트리밍 서비스의 세그먼트 URL에 유효기간 token이 포함됩니다:

  • token 만료 후 세그먼트 다운로드 불가
  • 만료 시간은 통상 몇 분에서 몇 시간
  • 플레이리스트 획득 후 가능한 빨리 다운로드 시작 권장
  • 다운로드 중단 시간이 너무 길면 플레이리스트 재획득 필요

일반적인 만료 시나리오:

서비스 유형일반적인 만료 시간권장 사항
온라인 강좌 플랫폼2-4 시간플레이리스트 획득 후 즉시 다운로드
라이브 재생30분 - 2시간가능한 빨리 완료, 중단 피하기
짧은 비디오 플랫폼5-15분1회 다운로드로 통상 충분
유료 스트리밍1-5분극히 짧은 윈도우, 신속 완료 필요
다운로드 중간 실패 해결(HTTP 403 오류 처리 포함)에 대해서는 일반적인 문제 해결 — 다운로드 중간 실패를 참조하십시오. 다운로드 엔진의 재시도 메커니즘에 대해서는 다운로드 엔진 아키텍처 — 재시도 메커니즘을 참조하십시오.

형식 변환 제한

FFmpeg WASM 성능

FFmpeg은 브라우저에서 WebAssembly로 실행되며, 성능은 원생 버전보다 현저히 낮습니다:

작업원생 FFmpegFFmpeg WASM (싱글 스레드)FFmpeg WASM (멀티 스레드)
TS → MP4 (1GB)~5초~60-90초~30-50초
음비디오 병합 (1GB)~10초~120-180초~60-90초

성능 차이의 원인:

  1. WASM 실행 오버헤드: WebAssembly는 브라우저 샌드박스에서 실행되며, 명령어 실행 효율은 원생의 약 70-80%
  2. SIMD 제한: FFmpeg은 SIMD 명령어 최적화를 대량 사용하며, WASM SIMD 지원은 원생보다 완벽하지 않음
  3. 메모리 접근: WASM 선형 메모리 모델과 원생 메모리 관리에 차이가 있음
  4. I/O 병목: 가상 파일 시스템의 읽기/쓰기 속도는 원생 파일 시스템보다 현저히 낮음
FFmpeg WASM의 완전한 기술적 구현(로딩, 멀티 스레드 검출, 명령어 실행)에 대해서는 형식 변환 — FFmpeg WASM 엔진을 참조하십시오. TS 출력 선택으로 FFmpeg을 건너뛰는 방법에 대해서는 형식 변환 — 출력 형식 선택을 참조하십시오.

지원하지 않는 변환

다음 변환 경로는 현재 지원되지 않습니다:

  • 임의 형식 → AVI, MOV, MKV, WebM
  • 비디오 코딩 변환(예: H.264 → H.265)
  • 오디오 코딩 변환(예: AAC → MP3)
  • 해상도 스케일링
  • 워터마크 또는 자막 추가

FlowPick의 FFmpeg 통합은 컨테이너 형식 변환(리무싱)에 집중하며, 코딩/디코딩은 포함되지 않습니다.

리무싱 vs 트랜스코딩:

리무싱(FlowPick 지원):
  TS 컨테이너 → H.264 비디오 스트림 + AAC 오디오 스트림 추출 → MP4 컨테이너로 캡슐화
  특징: 코딩 변경 없음, 속도 빠름, 무손실

트랜스코딩(FlowPick 미지원):
  H.264 비디오 스트림 → 디코딩 → H.265로 재코딩 → 캡슐화
  특징: 코딩 변경, 속도 느림, 손실 있음, CPU 집약적
컨테이너와 코덱의 개념 구분에 대해서는 형식 변환 — 컨테이너와 코덱을 참조하십시오. TS와 MP4 형식의 플레이어 호환성에 대해서는 형식 변환 — 출력 형식 선택을 참조하십시오.

확장 프로그램 버전 제한

Manifest V3 제한

FlowPick 확장 프로그램은 Chrome Manifest V3를 사용하며 다음 플랫폼 제한이 있습니다:

  • Service Worker 수명 제한(유휴 약 30초 후 종료)
  • 지속화 백그라운드 페이지 사용 불가
  • 네트워크 요청 모니터링은 webRequest API에 의존

Manifest V3이 FlowPick에 미치는 영향:

제한영향대응 조치
Service Worker 30초 타임아웃장시간 다운로드 중단 가능다운로드 중 하트비트 유지, SW 절전 방지
지속화 백그라운드 없음백그라운드 지속 모니터링 불가사용자가 팝업 창을 열 때 검출 활성화
webRequest 읽기 전용 변경요청 헤더 수정 불가FlowPick에 영향 없음(읽기만, 수정 안 함)
확장 프로그램의 설치 및 활성화 단계에 대해서는 설치 가이드를 참조하십시오. 확장 프로그램이 요청하는 권한 및 용도에 대해서는 개인정보와 보안 — 권한 설명를 참조하십시오.

검출 범위

확장 프로그램의 미디어 검출은 네트워크 요청 모니터링에 의존합니다:

  • 확장 프로그램 활성화 후 발행된 요청만 검출 가능
  • 페이지 새로 고침 후 재검출 가능
  • WebSocket 또는 MSE를 사용하는 일부 웹사이트는 미디어 URL 검출 불가능
  • iframe 내 미디어는 검출 불가능할 수 있음(iframe의 크로스 오리GIN 정책에 따름)
미디어 검출의 기술 원리와 HLS/DASH 플레이리스트 파싱에 대해서는 비디오 스니핑를 참조하십시오. 미디어를 검출하지 못하는 문제 해결 단계에 대해서는 일반적인 문제 해결 — 미디어 검출 문제를 참조하십시오.

알려진 Bug

대용량 파일 Blob 다운로드 멈칠 수 있음

증상: Blob 모드로 1.5GB에 가까운 파일 다운로드 시 브라우저가 오랫동안 무응답 상태일 수 있습니다.

원인: new Blob([...]) 생성 시 모든 데이터를 복사해야 하며, 대용량 파일의 메모리 할당과 복复制에 상당한 시간이 소요됩니다.

잠시 방안: Chrome 브라우저를 사용하여 스트리밍 쓰기를 활성화하십시오.

Blob 모드의 메모리 제한과 대안에 대해서는 다운로드 엔진 아키텍처 — 전략 3: Blob 최후 수단을 참조하십시오.

FFmpeg 첫 번째 로딩 느림

증상: 처음 형식 변환 기능 사용 시 FFmpeg 로딩에 10-30초 소요됩니다.

원인: FFmpeg WASM 코어 파일(약 8MB)을 네트워크에서 다운로드하고 컴파일해야 합니다.

설명: 이것은 정상적인 현상이며, 이후 사용 시 브라우저 캐시를 활용하여 로딩 속도가 현저히 향상됩니다.

로딩 시간 분해:

첫 번째 로딩:
  WASM 파일 다운로드(~8MB)  →  2-5초(네트워크 속도 따름)
  WASM 컴파일               →  5-15초(CPU 따름)
  가상 파일 시스템 초기화     →  1-3초
  총계                    →  10-30초

이후 로딩(캐시 적중):
  캐시에서 WASM 읽기        →  <1초
  WASM 컴파일(캐시 가능)    →  1-3초
  총계                    →  2-5초
FFmpeg WASM의 로딩 흐름과 멀티 스레드 검출에 대해서는 형식 변환 — FFmpeg WASM 엔진을 참조하십시오.

일부 CDN 세그먼트 다운로드 간헐적 실패

증상: 다운로드 중 개별 세그먼트가 503 또는 네트워크 오류를 반환합니다.

원인: CDN 노드 일시적 장애 또는 네트워크 변동입니다.

설명: FlowPick은 내장 3회 재시도 메커니즘(지수 백오프)을 보유하며, 통상 자동 복구 가능합니다. 모든 재시도가 실패하면 해당 세그먼트는 건너뛰고 로그에 기록됩니다.

재시도 메커니즘의 상세 전략(지수 백오프 시간표, 재시도 트리거하지 않는 상황)에 대해서는 다운로드 엔진 아키텍처 — 재시도 메커니즘을 참조하십시오.

관련 문서