解码失败会显示绿屏,及yuv和rgb简单理解
音視頻圖片相關基礎:
1:rgb 紅綠藍 光的三原色
在RGB中,一幅圖像有三個獨立的圖像平面或通道組成:紅,綠,藍(以及第四個通道透明度)。RGB(255,23,140)是光的三原色,也即紅綠藍Red、Green、Blue,它們的最大值是255,相當于100%。白色:rgb(255,255,255)黑色:rgb(0,0,0)紅色:rgb(255,0,0)綠色:rgb(0,255,0)藍色:rgb(0,0,255)青色:rgb(0,255,255)紫色:rgb(255,0,255)調整相關數字,便可以得到深淺不一的各種顏色2:YUV (Y’CbCr) 一種像素格式,多用于視頻編碼/靜態圖像
Y(相當于灰度)的"亮度"分量 ===>表示亮度U(藍色投影 Cb)和 V(紅色投影 Cr)的"色度"分量 ===》表示顏色 ==》色度如果只有Y分量而沒有UV分量,就是黑白(灰度)圖像,兼容了彩色和黑白電視。注意:人眼對色度沒有那么敏感。3:YUV 存儲方式: 平面格式, 半平面格式, 打包格式
平面格式(planar): 先存儲所有的y分量,再存儲所有的Cb分量,最后存儲所有的Cr分量.
打包格式(packed): Y,Cb,Cr一起存儲, ==》這里涉及一些存儲方式,以n個樣點為準依次存儲。
半平面格式(semi planar): 先存儲所有的Y分量,后面Cb和Cr分量一起存儲.
4: YUV 種類:
空間間:不同空間,即描述一個像素的bit數不同,比如yuv444,yuv422,yuv411,yuv420
? ==》主要從空間上理解,
? 如yuv444 表示y u v的個數都是4,
? 如yuv422,表示y u v的個數是4,2,2 (人眼對色度的不敏感,u和v交錯去取)
? 空間內:相同空間,即描述一個像素的bit數相同,但是存儲方式不同,
? ==》主要從固定像素上去理解:
? 比如對于yuv420而言,又可細分為yuv420p(yu16/yv16),yuv420sp,nv21,nv12,yv12,yu12,I420
?
5: 對yuv空間內存儲的理解:
其實nv系列,都屬于semi-plane系列這里nv12表示正常的順序,即uv plane,先是u,然后是v而nv21表示相反的順序,即uv plane,先是v,然后是u同樣,nv16和nv61的區別也是僅僅是uv的次序而已。這里的12和16又代表什么呢?實際上代表的是一個像素所占的位數!以nv12為例,表示一個像素占用12bit,其中y是定死的占8bit,也就是u占2bit,v占2bit,實際上就是yuv420格式,具體而言是yuv420sp格式nv16,則表示一個像素占用16bit,其中y是定死的8bit,也即是u占4bit,v占4bit,實際上就是yuv422格式,具體而言是yuv422sp格式6:為什么視頻出問題(解碼失敗)的時候會顯示綠屏?
注意: 在YUV全為0時,圖像是綠色的。
圖像中不同的顏色編碼:
1:YUV —》灰度(亮度)+色差分量
2:RGB —》RGB 三色分量
在YUV全0的時候,圖片顯示綠色:
理解: 參考:https://www.fourcc.org/fccyvrgb.php YUV和RGB的轉換:Y = 0.299 R + 0.587 G + 0.114 BU = -0.1687 R - 0.3313 G + 0.5 B + 128V = 0.5 R - 0.4187 G - 0.0813 B + 128R = Y + 1.402 (V-128)G= Y - 0.34414 (U-128) - 0.71414 (V-128)B= Y + 1.772 (U-128)將YUV的值全0帶入公式中,可以得到:
R = 1.402 * (-128) = -126.598G = -0.34414(-128) - 0.71414(-128) = 44.04992 + 91.40992 = 135.45984B = 1.772 * (-128) = -126.228差不多就是R = -126, G = 135, B = -126
其中RGB有取值范圍, 都是[0, 255]
所以最后就是R=0, G=135, B=0
查看顏色表:rgb(0,135,0) 差不多就是綠色
參考:https://blog.csdn.net/nwpu053883/article/details/103733537
? https://www.jianshu.com/p/6a361e86ccd5
總結
以上是生活随笔為你收集整理的解码失败会显示绿屏,及yuv和rgb简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网早报:腾讯内测游戏社交 App“N
- 下一篇: 网址导航哪个好(最好的导航网站)