日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android视频录制之NV21和NV12

發(fā)布時間:2023/12/14 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android视频录制之NV21和NV12 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

從Camera.PreviewCallback接口回調(diào)方法onPreviewFrame(byte[] data, Camera camera)回調(diào)的data數(shù)據(jù),為NV21圖像數(shù)據(jù),而Android手機識別的是NV12圖像數(shù)據(jù),所以需要將NV21轉(zhuǎn)化為NV12圖像數(shù)據(jù)。NV21圖像數(shù)據(jù)包括三塊區(qū)域數(shù)據(jù),分別為YVU三塊,一個XY像素的圖片,他的NV21數(shù)據(jù)大小為 **byte[XY3/2]**,其中byte[XY]為Y區(qū)域,剩下的1/2U和V區(qū)域各占1/4;“Y”表示明亮度,“U”和“V”則是色度、濃度。


可以發(fā)現(xiàn)NV21和NV12數(shù)據(jù)唯一的區(qū)別就是V、U區(qū)域的不同,而Y區(qū)域數(shù)據(jù)是相同的。其實data數(shù)據(jù)只是一個一維數(shù)組,但是為了更好理解所以排列成這樣。所以NV21->NV12的數(shù)據(jù)變化其實就是矩陣數(shù)據(jù)的變化。以下各圖分別表示NV12數(shù)據(jù)的旋轉(zhuǎn)(僅提供90度和270度變化)和鏡像變化。

經(jīng)過NV12的鏡像變化可以為上圖所示的數(shù)據(jù)展示,NV12的鏡像變化是分區(qū)域的,不是矩陣完全鏡像變化,是按照Y,VU區(qū)域兩個區(qū)域分別變化的,而VU是作為一個整體。其實如果你仔細(xì)點你會發(fā)現(xiàn)NV12的鏡像矩陣是NV21的完全鏡像矩陣,所以如果你真的要自己完成矩陣的這兩步變化,可以直接將NV21進行完全矩陣變化,兩步合成一步,可以節(jié)省一部分的時間。


其實矩陣的變化,我自己已經(jīng)完成了,但是最終的視頻有一定的問題,就是視頻中有的幀會出現(xiàn)縱向的分割線,所以自己的方法擱置了,采用了libyuv框架完成的。libyuv才用的是將NV21變成I420,然后通過對I420進行變化,然后將I420變成NV12數(shù)據(jù)。所以你是打算自己寫NV21的數(shù)據(jù)變化嗎?希望這些可以幫助到你。

總結(jié)

以上是生活随笔為你收集整理的Android视频录制之NV21和NV12的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。