YUV 420P IOS中的呈現

2021-06-22 08:51:18 字數 1180 閱讀 5762

經過3個工作日(週六下午及加班,周一,今天上午)總算將解碼的影象展現出來了,期間經歷一些曲折,主要是前述中的"想通過原始yuv資料,重建cvpixelbufferref型別的資料,進而可   

1)轉為ciimage,uiimage然後呼叫performselectoronmainthread來呈現:(經驗還不足,這個api還是google了很多才找到的)

[objc]view plain

copy

ciimage

*ciimage = [[ciimage

alloc

]initwithcvpixelbuffer

:pixelbuffer];  

uiimage

*image= [uiimage

imagewithciimage

:ciimage];

//:newimage scale:1.0  orientation:uiimageorientationright];

[self

.maincontentview

performselectoronmainthread

:@selector

(setimage:)

withobject

:image

waituntildone:no

];  

兩個方法都是要得到cvpixelbufferref型別的資料,無奈,使用cvpixelbuffercreatewithplanarbytes得到了資料,不過其中iosuface是0,導致opengle和ciimage都沒法處理(參看 相應的上似乎也沒有很好的解決掉(有帖子/questions/15316534/cvpixelbuffer-to-ciimage-always-returning-nil說搞定,但是我用那種方式還是沒有成功).

後來想直接用opengl es來處理(因為查linphone相應**就是如此),發現這個很複雜,昨天有多半天就是檢視相關資料,感覺這樣會影響功能開發,繼續求助google,終於,在/questions/12428108/ios-how-to-draw-a-yuv-image-using-opengl 這個尾部,看到github上乙個**/kxmovie

,down下來,只用其中的kxmovieglview.h/kxmovieglview.m然後檢視控制器也做些適配,yuv 420p的資料終於正常顯示了!

yuv420和yuv420p的區別

yv12和i420的區別 在採集到rgb24資料後,需要對這個格式的資料進行第一次壓縮。即將影象的顏色空間由rgb2yuv。因為,x264在進行編碼的時候需要標準的yuv 4 2 0 但是這裡需要注意的是,雖然yv12也是 4 2 0 但是yv12和i420的卻是不同的,在儲存空間上面有些區別。如下...

yuv420 轉bmp的方法

yuv420 轉bmp的方法 我找到了乙個c寫的exe 但是c的水平我實在是不敢去修改那個原始碼,所以我乾脆就呼叫這個dll,在c 裡建立了下面這個類,然後呼叫 y2b.exe 來轉換,而且不會顯示出來那個黑屏.要知道怎麼回事,就看 吧 呵呵.using system using system.co...

基於opencv RGB與YUV420的轉換

opencv的cvtcolor函式可以實現rgb與yuv420的轉換 rgb轉化為yuv420範例 片段 int w 2448 寬 int h 2080 高 int buflen w h 3 2 unsigned char pyuvbuf new unsigned char buflen cv ma...