Flash 비디오 (.flv)
Adobe 표준플래시 비디오(FLV)는 어도비 플래시 플레이어 브라우저 플러그인을 통해 웹을 통해 동기화된 비디오와 오디오를 전달하기 위해 Macromedia와 Adobe에서 개발한 컨테이너 형식입니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 FLV 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 FLV 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
46 4C 56 01ASCII 표현: FLV
표준화: Adobe Systems Flash Video File Format Specification
기술 사양
| 컨테이너 아키텍처 | Tag-based streaming container with interleaved audio, video, and script data tags |
| 압축 | Sorenson Spark, VP6, or H.264 video with MP3 or AAC audio |
| 바이트 엔디안 | Big-Endian bit and byte ordering |
| 색 공간 | YUV 4:2:0 |
| 채널 및 구조 | Mono and Stereo audio with video stream |
| 최대 크기 | Commonly up to 1080p |
| 투명도 | Alpha channel transparency supported in VP6 video streams |
| 스트리밍 및 프로그레시브 | Native support for RTMP (Real-Time Messaging Protocol) live streaming |
기술 비교 매트릭스: FLV 대 경쟁사
| 기술적 속성 | FLV (현재) | MP4 | WEBM | MKV |
|---|---|---|---|---|
| 오늘날의 브라우저 지원 | 0% (모든 최신 브라우저에서 완전히 제거됨) | 모든 브라우저에서 100% 범용 | 100% 최신 브라우저 지원 | 데스크톱 미디어 플레이어 필요 |
| 표준화 | 독점 Adobe 사양 | ISO/IEC 국제 개방형 표준 | W3C / WebM 개방형 표준 | 오픈소스 마트로스카 표준 |
| 모바일 기기 재생 | iOS 및 최신 안드로이드에서 기본적으로 지원되지 않음 | 네이티브 하드웨어 지원 | 네이티브 하드웨어 지원 | VLC/서드파티 앱을 통해 지원됨 |
| 알파 투명도 | On2 VP6 코덱을 통해 지원됨 | 제한적 (캔버스 또는 WebCodecs 필요) | 네이티브 알파 채널 지원 (VP9) | VP9/ProRes 스트림에서 지원됨 |
일반적인 손상 모드 및 헥스 복구 가이드
다운로드한 FLV 비디오가 전체 재생 시간을 '알 수 없음'으로 표시하며 탐색할 수 없음.
근본 원인: 키프레임 타임스탬프 및 파일 크기 테이블을 포함하는 'onMetaData' 스크립트 태그 누락.
복구: 'yamdi'(Yet Another MetaData Injector)를 사용하여 누락된 키프레임 테이블을 주입하거나 File2File로 MP4로 변환.
보안 분석 및 파서 공격 벡터
플래시 플레이어 플러그인은 ActionScript 및 FLV 파싱의 메모리 손상 버그로 인해 컴퓨팅 역사상 가장 많이 악용된 소프트웨어 구성 요소 중 하나였습니다.
알려진 공격 벡터
- ActionScript 3 FLV 파싱 엔진에서의 사용 후 무료(use-after-free) 및 힙 오버플로 (예: CVE-2015-5122)
- 임의의 메모리 실행을 유발하는 조작된 AMF0/AMF3 메타데이터 패킷
- 구형 소렌슨 스파크(Sorenson Spark) 압축 해제 루틴에서의 버퍼 오버플로
방어적 모범 사례:
역사적 배경 및 주요 이력
주요 장점
- 어디서나 볼 수 있는 온라인 비디오의 역사적 선구자: 독립형 데스크톱 플레이어 없이도 웹 비디오 재생 가능
- On2 VP6 코덱을 사용하여 비디오 스트림에서 알파 투명도 지원
- 저지연 RTMP 라이브 비디오 브로드캐스팅에 최적화된 낮은 패킷 오버헤드
기술적 제한 사항 및 단점
- 플래시 플레이어 지원 중단에 따라 모든 최신 웹 브라우저에서 완전히 구식이 되었으며 지원되지 않음
- iOS, 안드로이드, 스마트 TV에서 재생하려면 MP4로 재인코딩 또는 컨테이너 전환 필요
- 다중 트랙 오디오 및 반응형 적응형 비트레이트 스트리밍과 같은 최신 컨테이너 기능 부족
흥미로운 기술적 상식
- 유튜브에 업로드된 최초의 비디오(2005년 4월의 'Me at the zoo')는 FLV 파일로 인코딩되어 전달되었습니다.
- 플래시 비디오의 매직 바이트 시퀀스 '46 4C 56 01'은 ASCII 'FLV'와 컨테이너 버전 1을 철자대로 나타냅니다.
- 스티브 잡스는 2010년에 유명한 '플래시에 대한 단상(Thoughts on Flash)' 공개 서한을 발표하여 업계가 FLV에서 HTML5 MP4로 이동하는 것을 가속화했습니다.
자주 묻는 기술 질문
컴퓨터에서 더 이상 FLV 파일을 재생할 수 없는 이유는 무엇인가요?
어도비(Adobe)와 주요 웹 브라우저는 보안 취약점으로 인해 2020년 12월부로 플래시 플레이어(Flash Player) 지원을 공식 중단했습니다. 오늘날 FLV 파일을 재생하려면 VLC 미디어 플레이어를 사용하거나 MP4로 변환하세요.
화질 저하 없이 FLV를 MP4로 변환할 수 있나요?
FLV 파일에 H.264 비디오와 AAC 오디오가 포함되어 있는 경우, File2File을 사용하면 비디오를 재압축하지 않고 단 몇 초 만에 MP4로 무손실 컨테이너 렘럭싱(remuxing)을 수행할 수 있습니다.
FLAC 비디오는 원래 어떤 코덱을 사용했나요?
초기 FLV 파일은 소렌슨 스파크(Sorenson Spark, H.263의 변형)와 온2 VP6(On2 VP6)을 사용했으며, 어도비가 2007년에 표준 H.264 지원을 추가하기 전까지 이러한 방식을 사용했습니다.