
https://rtmp.veriskope.com/pdf/video_file_format_spec_v10.pdf ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค.
FLV(Flash Video)๋ ํ์ฅ์๊ฐ .flv์ธ ์ปจํ
์ด๋ ํ์ผ ํ์์ด๋ค. FLV๋ Adobe Flash Player ๋๋ Adobe Air๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์ ํตํด ์ค๋์ค/๋น๋์ค ์ฝํ
์ธ ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
FLV ํ์ผ์ ๊ฐ ํ๊ทธ ์ ํ์ ๋จ์ผ ์คํธ๋ฆผ์ ๊ตฌ์ฑํ๋ฉฐ FLV ํ์ผ์๋ ํจ๊ป ๋๊ธฐํ๋๋ ์ค๋์ค ์คํธ๋ฆผ๊ณผ ๋น๋์ค ์คํธ๋ฆผ์ด ํ๋๋ง ์์ ์ ์๊ณ ๋จ์ผ ์ ํ์ ์ฌ๋ฌ ๋
๋ฆฝ ์คํธ๋ฆผ์ ์ ์ํ ์ ์๋ค.
๋ํ, SWF ํ์ผ๊ณผ ๋ฌ๋ฆฌ FLV ํ์ผ์ ๋ฉํฐ๋ฐ์ดํธ ์ ์๋ฅผ ๋น
-์๋์ ๋ฐ์ดํธ ์์๋ก ์ ์ฅํ๋ค.
FLV ํ์ผ ์ฌ์ ์, FLV ํ๊ทธ์ ์๊ฐ ์์๋ FLV ํ์์คํฌํ์๋ง ์์กดํ๋ค. ํ์ด๋ก๋ ๋ฐ์ดํฐ ํ์์ ๋ด์ฅ๋ ๋ชจ๋ ํ์ด๋ฐ ๋ฉ์ปค๋์ฆ์ ๋ฌด์๋๋ค.
FLV ํ์ผ์ ํค๋์ ํจํท์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๋ชจ๋ FLV ํ์ผ์ ํค๋๋ก ์์ํ๋ค.
๋จ, ์ฌ๊ธฐ์ FLV ํ์ผ์ ๋ํ ๋ชจ๋ ์ค๋ช ์ version 1์ ํด๋นํ๋ค,

Signature(1) * 3 + version(1) + Flag(1) + DataOffset(4))Signature : FLV๋ผ๋ ๊ฐ์ด ๋ค์ด์์ผ ํ๋ค. ๊ฐ 8๋ฐ์ดํธ์ฉ ์ด 3๊ฐ์ ํ๋๊ฐ ์ค๋๋ฐ, ๊ฐ๊ฐ์ ํ๋๋ ์์๋๋ก F, L, V๋ฅผ ์๋ฏธํ๋ค. ์ฆ, ์์๋๋ก 0x46, 0x4C, 0x56 ๊ฐ ์์ผ๋ง ํ๋ค.Version : 1๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 1์ด๋ค. ์ฆ, 0x01๋ง ์ ํจํ๋ค.(version 1์ ๊ฒฝ์ฐ)FlagTypeFlagsReserved : 5๋นํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ฐ๋์ 0์ด์ด์ผ ํ๋ค.TypeFlagsAudio : 1๋นํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ์ค๋์ค ํ๊ทธ๊ฐ ์กด์ฌํจ์ ์๋ฏธํ๋ค.TypeFlagsReserved : 1๋นํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ฐ๋์ 0์ด์ด์ผ ํ๋ค.TypeFlagsVideo : 1๋นํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๋น๋์ค ํ๊ทธ๊ฐ ์กด์ฌํจ์ ์๋ฏธํ๋ค.DataOffset : 4๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ํ์ผ ์์๋ถํฐ ๋ณธ๋ฌธ ์์๊น์ง์ ์คํ์
(์ฆ, ํค๋ ํฌ๊ธฐ)์ ์๋ฏธํ๋ค.Flag ์ ๊ฐ์ ๋ฐ๋ผ ์ด FLV ํ์ผ์ด ์ด๋ค ๋ฐ์ดํฐ์ธ์ง ์ ์ ์๋ค.
TypeFlagsAudio ๊ฐ 1์ด๊ณ TypeFlagsVideo ๊ฐ 1์ธ ๊ฒฝ์ฐ00000/1/0/1 โ ๋น๋์ค, ์ค๋์ค ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์จ๋ค.TypeFlagsAudio ๊ฐ 1์ด๊ณ TypeFlagsVideo ๊ฐ 0์ธ ๊ฒฝ์ฐ00000/1/0/0 โ ์ค๋์ค ๋ฐ์ดํฐ๋ง ์จ๋ค.TypeFlagsAudio ๊ฐ 0์ด๊ณ TypeFlagsVideo ๊ฐ 1์ธ ๊ฒฝ์ฐ00000/0/0/1 โ ๋น๋์ค ๋ฐ์ดํฐ๋ง ์จ๋ค.ํค๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ถ๋ถ์ ๋ฐฑ ํฌ์ธํฐ์ ํ๊ทธ์ ๋ฐ๋ณต์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๊ทธ ๊ตฌ์ฑ์ ์๋์ ๊ฐ์ด interleave๋๋ค.

PreviousTagSize0 : 4๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ฐ๋์ 0์ด์ด์ผ ํ๋ค.Tag(N) : FLVTAG์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ, N๋ฒ์งธ ํ๊ทธ๋ฅผ ์๋ฏธํ๋ค.PreviousTagSize(N) : 4๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฐ์ ์ด์ ํ๊ทธ์ ํฌ๊ธฐ์ด๋ค.FLV Tag๋ FLV ํ์ผ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋จ์์ด๋ค. ์ค๋์ค ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ Audio Tag, ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ Video Tag, ๋ฉํ๋ฐ์ดํฐ์ ๊ฐ์ ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ(Ex) ๋์์์ ์ ๋ชฉ, ํด์๋, ๊ธธ์ด ์ ๋ณด ๋ฑ)๋ฅผ ํฌํจํ๋ Script Data Tag ์ ํ์ด ์๋ค.
๊ฐ ํ๊ทธ๋ ์๋์ ๊ฐ์ ํ์์ ๊ฐ์ง๋ค.

TagType : 1๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ํ๊ทธ์ ์ ํ์ ์๋ฏธํ๋ค.DataSize : 3๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ Data ํ๋์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํ๋ค.Timestamp : 3๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ํ๊ทธ์ ๋ฐ์ดํฐ๊ฐ ์์ํด์ผ ํ๋ ์๊ฐ(ms)์ ์๋ฏธํ๋ค.TimestampExtended : 1๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ํ์ฅ์ ์ํด Timestamp ํ๋์ ํจ๊ป ์ฌ์ฉ๋๋ค.StreamID : 3๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ฐ๋์ 0์ด์ด์ผ ํ๋ค.Data : ํ๊ทธ์ body์ด๋ค. ํ๊ทธ์ ์ ํ์ ๋ง๋ ๋ฐ์ดํฐ๋ค์ด ์์ผ ํ๋ค.Data ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ถ๋ถ์ ํญ์ 11๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.FLV์์ Timestamp์ TimestampExtended ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐ์ ํ์ฅํ๋ ๋ฐฉ๋ฒ
FLV์์๋ ์๊ฐ ๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ํํํ๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก Timestamp ํ๋๋ 24๋นํธ๋ก ๊ตฌ์ฑ๋์ด ์์ด 1677๋ง ๋ฐ๋ฆฌ์ด (์ฝ 4์๊ฐ 39๋ถ)๊น์ง๋ง ํํํ ์ ์๋ค. ๋ฐ๋ผ์, ๋ ํฐ ์๊ฐ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์TimestampExtended ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ Timestamp ํ๋๋ ํ์ 24๋นํธ๋ฅผ ๋ด๋นํ๊ณ , Timestamp Extended ํ๋๋ ์์ 8๋นํธ๋ฅผ ๋ด๋นํ๋ค. ๋ฐ๋ผ์, Timestamp (24๋นํธ) + Timestamp Extended (8๋นํธ) = ์ด 32๋นํธ์ S132 ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ด๋ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ต๋ ์ฝ 49์ผ ์ ๋์ ์๊ฐ ๋ฒ์๋ฅผ ํํํ ์ ์๊ฒ ํด์ค๋ค.
์์๋ฅผ ํตํด Timestamp ํ๋์ TimestampExtended ํ๋๋ฅผ ํฉ์ณ์ ์ ์ฒด 32๋นํธ ์๊ฐ์ ๊ตฌํด๋ณด์.
0x00FFAA (16์ง์ ๊ฐ)0x12 (16์ง์ ๊ฐ)Timestamp Extended ๊ฐ์ ์์ 8๋นํธ๋ก ์ด๋ (์ผ์ชฝ์ผ๋ก 24๋นํธ ์ด๋)
0x12 << 24 = 0x12000000
Timestamp ๊ฐ์ ํ์ 24๋นํธ๋ก ๋ํจ
0x12000000 + 0x00FFAA = 0x1200FFAA
์ ์ฒด 32๋นํธ ์๊ฐ ๊ฐ์ 0x1200FFAA๋ก
์ด๋ฅผ 10์ง์๋ก ๋ณํํ๋ฉด 302014186 ๋ฐ๋ฆฌ์ด, ์๊ฐ์ผ๋ก ๋ณํํ๋ฉด ์ฝ 3์ผ 11์๊ฐ 46๋ถ 54์ด์ ํด๋นํ๋ค.
Audio Tag, Video Tag, Script Data Tag์ ๋ํด์ ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด ?
https://rtmp.veriskope.com/pdf/video_file_format_spec_v10.pdf 6p๋ฅผ ์ฐธ๊ณ