Flash 비디오 (.flv)
Adobe 표준플래시 비디오(FLV)는 어도비 플래시 플레이어 브라우저 플러그인을 통해 웹을 통해 동기화된 비디오와 오디오를 전달하기 위해 Macromedia와 Adobe에서 개발한 컨테이너 형식입니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 FLV 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 FLV 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
46 4C 56 01ASCII 표현: FLV
표준화: Adobe Systems Flash Video File Format Specification
기술 사양
| 컨테이너 아키텍처 | 오디오, 비디오, 스크립트 데이터 태그를 교차 배치한 태그 기반 스트리밍 컨테이너 |
| 압축 | MP3 또는 AAC 오디오를 포함하는 Sorenson Spark, VP6 또는 H.264 비디오 |
| 바이트 엔디안 | 빅 엔디안 비트 및 바이트 순서 |
| 색 공간 | YUV 4:2:0 |
| 채널 및 구조 | 비디오 스트림에 모노 및 스테레오 오디오 |
| 최대 크기 | 일반적으로 최대 1080p |
| 투명도 | VP6 비디오 스트림에서 알파 채널 투명도 지원 |
| 스트리밍 및 프로그레시브 | RTMP(Real-Time Messaging Protocol) 라이브 스트리밍 기본 지원 |
기술 비교 매트릭스: 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.app으로 MP4로 변환하십시오.
보안 분석 및 파서 공격 벡터
플래시 플레이어 플러그인은 ActionScript 및 FLV 파싱의 메모리 손상 버그로 인해 컴퓨팅 역사상 가장 많이 악용된 소프트웨어 구성 요소 중 하나였습니다.
알려진 공격 벡터
- ActionScript 3 FLV 파싱 엔진에서의 해제 후 사용(use-after-free) 및 힙 오버플로 (예: CVE-2015-5122)
- 잘못된 AMF0/AMF3 메타데이터 패킷은 취약한 파서에서 메모리 손상을 일으킬 수 있습니다.
- 구형 소렌슨 스파크(Sorenson Spark) 압축 해제 루틴에서의 버퍼 오버플로
방어적 모범 사례: 네이티브 Flash Player 플러그인을 절대 실행하지 마십시오. 샌드박스화된 FFmpeg를 사용하여 아카이브된 FLV 파일을 MP4로 직접 트랜스코딩하십시오.
역사적 배경 및 주요 이력
주요 장점
- 온라인 비디오의 대중화를 이끈 역사적 선구자: 독립형 데스크톱 플레이어 없이도 웹 비디오 재생 가능
- 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 media player를 사용하거나 MP4로 변환하십시오.
화질 손실 없이 FLV를 MP4로 변환할 수 있습니까?
호환되는 H.264 및 AAC 스트림은 재인코딩 없이 FLV에서 MP4로 리먹스할 수 있습니다. 처리 시간은 파일과 기기에 따라 다릅니다.
FLV 동영상은 처음에 어떤 코덱을 사용했습니까?
초기 FLV 파일은 소렌슨 스파크(Sorenson Spark, H.263의 변형)와 온2 VP6(On2 VP6)을 사용했으며, 어도비가 2007년에 표준 H.264 지원을 추가하기 전까지 이러한 방식을 사용했습니다.