YUV420格式学习

最初在项目中做实时视频流的时候,采用的方案是,设置Camera Preview格式是NV21,最终MediaCodec需要的格式是I420,由于之前对YUV一无所知,所以一些旋转算法也是在网上淘的,导致有部分是在NV21的时候进行旋转,有部分则是在I420的时候进行旋转,最终还是实现了功能。

最近时间比较多,也要在视频流上增加水印,决定对这部分性能进行优化,所以着重学习了解了一下YUV格式。

在Android文档,Camera里面有这样一句话

If this is never called, the default format will beNV21, which uses the NV21 encoding format.

UsegetSupportedPreviewFormats()to get a list of the available preview formats.

It is strongly recommended that eitherNV21orYV12is used, since they are supported by all camera devices.

在Camera中推荐使用NV21和YV12,因为这两种格式支持所有的相机设备。

但是在Camera2中,推荐使用的格式则是YUV_420_888。

总的来说,在Android里面YUV用得比较多的应该是I420, YV12, NV12和NV21,其中I420和YV12都是Y420P,NV12和NV21都是Y420SP。

这几种格式相同点和区别呢可以这样看:

YUV420SP格式

YUV420SP:图中Y1,Y2,Y9,Y10共用一对UV:U1和V1

YUV420P格式

YUV420P:图中Y1,Y2,Y9,Y10共用一对UV:U1和V1

I420: YYYYYYYY UU VV    =>YUV420P

YV12: YYYYYYYY VV UU    =>YUV420P

NV12: YYYYYYYY UVUV     =>YUV420SP

NV21: YYYYYYYY VUVU     =>YUV420SP

他们的共同点是一个Y代表一个像素点,Y的大小就等于width * height,由于它们都说420格式,所以UV总长位width * height / 2,其中U和V各占一般长度。所以在代码中新建一个byte[]的时候长度为 width * height * 3 / 2。

YV12:

YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed by (W/2) x (H/2) Cr and Cb planes.

所以我针对之前项目的改进方案就是,预览输出使用YV12格式,通过转换和旋转转成I420格式。

因为YV12和I420的结构很相似,只需要调换UV分量的位置即可,更方便在同一个循环中同时进行旋转和转换,相比之前的方案旋转和转换是两个循环,这样效率更高。

最终实测,各个方向分别统计了几百帧的数据求算术平均值,YV12->I420比NV21->I420的旋转+转换,每帧少花3ms左右,不管各位看管觉得怎么样,对我来说是个不错的鼓舞。

我的YV12转NV21的代码,虽然是Java层的,速度还不错,每帧耗时小于1ms

下一步优化的目标就是把耗时算法放到JNI层去做。

参考:blog.csdn.net/jefry_xdz/article/details/7931018

www.cnblogs.com/samaritan/p/YUV.html

作者:黄河远去楼依在

链接:http://www.jianshu.com/p/102b8b0797b7

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容