YUV经典测试源网址及Y4M格式详解

来源:互联网 发布:ubuntu安装过程黑屏 编辑:程序博客网 时间:2024/05/02 02:17

y4m格式:

http://media.xiph.org/video/derf/

yuv格式

http://trace.eas.asu.edu/yuv/


http://www.chinadmd.com/search.do?nkey=yuv%E6%B5%8B%E8%AF%95%E5%BA%8F%E5%88%97


从http://media.xiph.org/video/derf/下载了一些YUV源,结果是y4m格式,Johnny_1280x720_60.y4m,按yuv裸数据方式读取发现色度显示存在异常,苦苦尝试找不到问题原因。最终发现扩展名不是平常的yuv,一搜果然找到了问题原因。


转载自 http://blog.csdn.net/hiccupzhu/article/details/19498093


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)



转换的时候发现mencoder在ubuntu上无效,报frame too small,wrong format!

后来,在windows上下载了一个mencoder.exe,在powershell下使用同样命令转换成功为yuv格式

先要下载一个mencoder,然后 用命令行
mencoder **.y4m -ovc raw -of rawvideo -vf format=i420 -o **.yuv
就可以啦


 1.装个mencoder.exe:

2.命令如下:

“mencoder **.y4m -ovc raw -of rawvideo -vf format=i420 -o **.yuv ”


用ffplay播放YUV命令

ffplay播放yuv文件命令
ffplay -f rawvideo -video_size 1920x1080 a.yuv

wigewige@ubuntu:~/share/develop/kandao/hisi/yak/KD-Hisi3519v101-SRC/mpp_big-little/sample/venc$ ffplay -f rawvideo -video_size 1920x1080 pedestrian_area_1080p25.yuv



0 0
原创粉丝点击