1. 程式人生 > >Y4M(YUV4MPEG2) 格式檔案詳解

Y4M(YUV4MPEG2) 格式檔案詳解

Y4M 格式詳解
· 副檔名: .y4m

· 格式樣例: http://samples.mplayerhq.hu/yuv4mpeg2/

YUV4MPEG2 是一種簡單的檔案格式,它被設計用來儲存原始的YCbCr(如 YCbCr 4:2:0, YCbCr 4:2:2, YCbCr 4:4:4等)資料。YUV的來源就來源於色彩空間YCbCr(常用於數字媒體中的彩色編碼),YUV常在模擬PAL制傳輸時,應用在電視和視訊錄影帶中。

資料格式

Y4M檔案以一段明文開始。其前10個字元是署名”YUV4MPEG2 “(注意最後一個字元是空格(ASCII 0x20)。緊跟在署名後面的是各種視訊引數資訊,各引數資訊都以空格(ASCII 0x20)分隔。引數資訊通常包括 寬、高和幀率。

  幀寬:’W’後跟明文整數;如:W720

· 幀寬:’H’後跟明文整數;如:H480

· 幀率: ’F’後跟每秒的整數,表示為一個分數的分子,分母。如下:

  'F30:1' = 30 FPS
  'F25:1' = 25 FPS (PAL/SECAM standard)
  'F24:1' = 24 FPS (Film)
  'F30000:1001' = 29.97 FPS (NTSC standard)
  'F24000:1001' = 23.976 FPS (Film transferred to NTSC)
· interlacing: 'I'後跟一個單獨的字母表明交錯的模式:

  'Ip' = Progressive
  'It' = Top field first
  'Ib' = Bottom field first
  'Im' = Mixed modes (detailed in FRAME headers)
· 引數'A': 畫素寬高比。 注意這裡只是表明畫素的比率,不表示是圖片的寬高比: 

  'A0:0' = unknown
  'A1:1' = square pixels
  'A4:3' = NTSC-SVCD (480x480 stretched to 4:3 screen)
  'A4:5' = NTSC-DVD narrow-screen (720x480 compressed to a 4:3 display)
  'A32:27' = NTSC-DVD wide-screen (720x480 stretched to a 16:9 display)
· 引數'C': 色彩空間(Color space) 

  'C420jpeg' = 4:2:0 with biaxially-displaced chroma planes
  'C420paldv' = 4:2:0 with vertically-displaced chroma planes
  'C420' = 4:2:0 with coincident chroma planes
  'C422' = 4:2:2
  'C444' = 4:4:4
· 引數'X': 註釋。將被 YUV4MPEG2 解析器所忽略。

跟在引數資訊後面的是按照Y-Cb-Cr儲存的原始YUV資料。每幀資料都以'FRAME'開始再在後面加一個0x0A,其後就是原始的影象幀了(注意引數資訊和幀頭之間也要用0x0A),如下圖。

每一幀原始影象的計算公式如下:
------------------------------------------------------------------------- 
· 幀大小 = width * height * 3 / 2 (4:2:0)

· 幀大小 = width * height * 2 (4:2:2)

  幀大小 = width * height * 3 (4:4:4)
------------------------------------------------------------------------- 

 


轉自: https://blog.csdn.net/hiccupzhu/article/details/19498093