北京房山网站建设产品更新培训,wordpress tag 英文,数据过滤网站模板下载,网站备案没了博客访问量日渐减少#xff0c;于是我决定丢一点技术东东上去#xff0c;吸引爬虫光顾一下。先谈谈 h.264 的编解码问题。个人建议做视频、音频的孩子们#xff0c;一定要抓住 RFC 和 standard #xff0c;然后多看开源编解码程序。近来抽空看了两个 decoder #xff0c;一…博客访问量日渐减少于是我决定丢一点技术东东上去吸引爬虫光顾一下。先谈谈 h.264 的编解码问题。个人建议做视频、音频的孩子们一定要抓住 RFC 和 standard 然后多看开源编解码程序。近来抽空看了两个 decoder 一个是从 ffmpeg 里面抽取出来的 h.264 部分还有从 JM 。解码器生成最后结果是 yuv420 格式后面会提到。关于 yuv 看到论坛里不少人都急于找工具去看自己解得一帧图像是否正确更有不少人提供 yuv420 2 rgb24 和 yuv422 2 rgb24 等代码。这里建议使用 强大的 ps 的 .raw 文件的功能。.raw 文件可用来查看 纯 rgb 图片 和 纯 yuv 图片很适合做图像。yuv 格式YUV是指亮度参量和色度参量分开表示的像素格式而这样分开的好处就是不但可以避免相互干扰还可以降低色度的采样率而不会对图像质量影响太大。YUV 是一个比较笼统地说法针对它的具体排列方式可以分为很多种具体的格式。YUV格式通常有两大类打包packed格式和平面planar格式。前者将YUV分量存放在同一个数组中通常是几个相邻的像素组成一个宏像 素macro-pixel而后者使用三个数组分开存放YUV三个分量就像是一个三维平面一样。YUY2到Y211都是打包格式而IF09到YVU9都是平面格式。注意在介绍各种具体格式时YUV各分量都会带有下标如Y0、 U0、V0表示第一个像素的YUV分量Y1、U1、V1表示第二个像素的YUV分量以此类推。
MEDIASUBTYPE_YUY2 YUY2格式以4:2:2方式打包MEDIASUBTYPE_YUYV YUYV格式实际格式与YUY2相同MEDIASUBTYPE_YVYU YVYU格式以4:2:2方式打包MEDIASUBTYPE_UYVY UYVY格式以4:2:2方式打包MEDIASUBTYPE_AYUV 带Alpha通道的4:4:4 YUV格式MEDIASUBTYPE_Y41P Y41P格式以4:1:1方式打包MEDIASUBTYPE_Y411 Y411格式实际格式与Y41P相同MEDIASUBTYPE_Y211 Y211格式MEDIASUBTYPE_IF09 IF09格式MEDIASUBTYPE_IYUV IYUV格式MEDIASUBTYPE_YV12 YV12格式MEDIASUBTYPE_YVU9 YVU9格式yuv采样 • 4:4:4 表示色度频道没有下采样。每像素 24 位 • 4:2:2 表示 2:1 的水平下采样没有垂直下采样。对于每两个 U 样例或 V 样例每个扫描行都包含四个 Y 样例。每像素 16 位 • 4:2:0 表示 2:1 的水平下采样2:1 的垂直下采样。每像素 16 位 • 4:1:1 表示 4:1 的水平下采样没有垂直下采样。对于每个 U 样例或 V 样例每个扫描行都包含四个 Y 样例。与其他格式相比4:1:1 采样不太常用本文不对其进行详细讨论。每像素 16 位 在我做的 h264 中支 持420的连续或隔行视频的编码和解码。其中“Y”表示明亮度Luminance或Luma也就是灰阶值而“U”和“V”表示的则是色度Chrominance或Chroma作用 是描述影像色彩及饱和度用于指定像素的颜色。“亮度”是通过RGB输入信号来创建的方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的 两个方面—色调与饱和度分别用Cr和CB来表示。其中Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝 色部分与RGB信号亮度值之同的差异。 YUV色彩模型来源于RGB模型 该模型的特点是将亮度和色度分离开从而适合于图像处理领域。 应用模拟领域 Y 0.299*R 0.587*G 0.114*B U -0.147*R - 0.289*G 0.436*B 0.492*(B- Y) V 0.615*R - 0.515*G - 0.100*B 0.877*(R- Y) R Y 1.140*V G Y - 0.394*U - 0.581*V B Y 2.032*U YCbCr模型来源于YUV模型。YCbCr是 YUV 颜色空间的偏移版本. 应用数字视频ITU-R BT.601建议 Y’ 0.257*R 0.504*G 0.098*B 16 Cb -0.148*R - 0.291*G 0.439*B 128 Cr 0.439*R - 0.368*G - 0.071*B 128 R 1.164*(Y’-16) 1.596*(Cr-128) G 1.164*(Y’-16) - 0.813*(Cr-128) - 0.392*(Cb-128) B 1.164*(Y’-16) 2.017*(Cb-128) PS: 上面各个符号都带了一撇表示该符号在原值基础上进行了伽马校正,伽马校正有助于弥补在抗锯齿的过程中线性分配伽马值所带来的细节损失使图像细节更加 丰富。在没有采用伽马校正的情况下暗部细节不容易显现出来而采用了这一图像增强技术以后图像的层次更加明晰了。 所以说H264里面的YUV应属于YCbCr.常见H264测试的YUV序列CIF图像大小的YUV序列(352*288),在文件 开始并没有文件头,直接就是YUV数据,先存第一帧的Y信息,长度为352*288个byte, 然后是第一帧U信息长度是352*288/4个byte, 最后是第一帧的V信息,长度是352*288/4个byte, 因此可以算出第一帧数据总长度是352*288*1.5,即152064个byte, 如果这个序列是300帧的话, 那么序列总长度即为152064*30044550KB,这也就是为什么常见的300帧CIF序列总是44M的原因.
Y41P和Y411packed格式格式为每个像素保留Y分量而UV分量在 水平方向上每4个像素采样一次。一个宏像素为12个字节实际表示8个像素。图像数据中YUV分量排列顺序如下 U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …IYUV格式planar为每个像素都提取Y分量而在UV分量的提取时首先将 图像分成若干个2 x 2的宏块然后每个宏块提取一个U分量和一个V分量。YV12格式与 IYUV类似但仍然是平面模式。YUV411、YUV420格式多见于DV数据中。YUV411用于NTSC制。为每个像素都提取Y分量而UV分量在水平方向上每4个像素采样一次。YUV420用于 PAL制。并非V分量采样为0而是跟YUV411相比 在水平方向上提高一倍色差采样频率在垂直方向上以U/V间隔的方式减小一半色差采样。 各种格式的具体使用位数的需求使用4:2:0采样对于每个元素用8个位大小表示) 格式 Sub-QCIF 亮度分辨率 128*96 每帧使用的位: 147456格式 QCIF 亮度分辨率 176*144 每帧使用的位: 304128格式 CIF 亮度分辨率 352*288 每帧使用的位: 1216512格 式 4CIF 亮度分辨率 704*576 每帧使用的位: 4866048