android Camera 出來的數(shù)據(jù)一般是NV21 也就是YUV420SP
我個人理解S 是 staggered 交錯的意思 P就是plane 平面
YYYYYYYY VUVU 這種分布
H264呢 里面用的一般是I420(420P), YUV三個分量在三個平面上
所以一般獲取到圖片 想用H264傳出去帮寻,就得轉(zhuǎn)換
像我這種懶蛋麻诀,一般找個模版代碼一抄就行
圖呢是我從網(wǎng)上找的你踩,主要理解下轉(zhuǎn)換過程
所以看圖就能理解為啥 420計算的時候 都是寬高1.5 因為2組Y對應(yīng)一個UV
復(fù)制數(shù)據(jù)的時候呢 Y就按照順序完整復(fù)制井联,U需要從 Y的所有數(shù)據(jù)后 隔著一個復(fù)制一個裁替,V同理
//挪動Y分量
memcpy(picture->img.plane[0], data, y_len);
for (int i = 0; i < uv_len; ++i) {
//挪動U分量
*(picture->img.plane[1] + i) = *(data + y_len + i * 2 + 1);
//挪動V分量
*(picture->img.plane[2] + i) = *(data + y_len + i * 2);
}
是不是看這段模版代碼 越發(fā)有感覺了,能理解了吧