close

如果你不熟悉 YUV 數據格式的話,建議優先閱讀如下文章:

一文讀懂 YUV 的採樣與格式

定義

下面是兩者在ffmpeg中的定義:

AV_PIX_FMT_YUV420P,///<planarYUV4:2:0,12bpp,(1Cr&Cbsampleper2x2Ysamples)AV_PIX_FMT_YUVJ420P,///<planarYUV4:2:0,12bpp,fullscale(JPEG),deprecatedinfavorofAV_PIX_FMT_YUV420Pandsettingcolor_range區別

兩者的不同在於,顏色空間不同。

/***MPEGvsJPEGYUVrange.*/enumAVColorRange{AVCOL_RANGE_UNSPECIFIED=0,AVCOL_RANGE_MPEG=1,///<thenormal219*2^(n-8)"MPEG"YUVrangesAVCOL_RANGE_JPEG=2,///<thenormal2^n-1"JPEG"YUVrangesAVCOL_RANGE_NB,///<NotpartofABI};

YUVJ420P的字面含義是使用了JPEG顏色範圍的YUV420P,像素使用表示顏色的數值範圍發生了變化。

YUV420p的像素顏色範圍是[16,235],16表示黑色,235表示白色。

YUVJ420P的像素顏色範圍是[0,255],0表示黑色,255表示白色。

從這裡來看,貌似是YUVJ420P表示的更準確一下。

YUVJ420P的字面含義是「使用了JPEG顏色範圍的YUV420P,像素使用表示顏色的數值範圍發生了變化。YUV420p的像素顏色範圍是[16,235],16表示黑色,235表示白色 YUVJ420P的像素顏色範圍是[0,255]。0表示黑色,255表示白色

從這裡來看,貌似是YUVJ420P表示的更準確一下。

區別的緣由

YUV420p對應的是電視。

YUVJ420P對應的是顯示器。

灰階

何謂灰階?通常來說,液晶屏幕上人們肉眼所見的一個點,即一個像素,它是由紅、綠、藍(RGB)三個子像素組成的。

每一個子像素,其背後的光源都可以顯現出不同的亮度級別。而灰階代表了由最暗到最亮之間不同亮度的層次級別。這中間層級越多,所能夠呈現的畫面效果也就越細膩。以8bit面板為例,能表現2的8次方,等於256個亮度層次,我們就稱之為256灰階。

LCD屏幕上每個像素,均由不同亮度層次的紅、綠、藍組合起來,最終形成不同的色彩點。也就是說,屏幕上每一個點的色彩變化,其實都是由構成這個點的三個RGB子像素的灰階變化所帶來的。

電腦如果想顯示準確的色彩,那麼必須要0-255灰階全部齊全。灰階的損失,就意味着色彩的損失。

對於PC主機,灰階的輸出是0-255。灰階輸出為0的情況下,顯示全黑畫面;灰階為255的情況下,顯示全白畫面。

液晶顯示器為了適應PC主機,所可接受的灰階信號範圍同樣是0-255。

256個灰階輸出圖,如果PC接電視,必然會有13%的灰階損失 而液晶電視是不同的,它的灰階範圍是16-235,當接收到信號16時,液晶電視將其還原成白色;當接收到信號235時,顯示全白畫面。

電視的輸入設備,比如說有線電視信號、DVD影碟機等輸出的也是16-235的灰階信號。液晶電視如果接收到了低於16的信號,會被認為是干撓,將不被顯示;如果接收到了高於235的信號,大部分液晶電視只能做削波處理,即仍當做235信號來處理。簡單點說,就是0-15全部顯示純黑,236-255全部顯示純白,中間的過渡全部損失。

總結

YUV420P 和 YUVJ420P 沒啥太大的區別。

如果偏色不嚴重,你也可以對客戶解釋說是顯示器的色差,而不是你的程序的問題。

來源:https://blog.csdn.net/lanxiaziyi/article/details/74347911

技術交流,歡迎加我微信:ezglumes ,拉你入技術交流群。

私信領取相關資料

推薦閱讀:

音視頻開發工作經驗分享 || 視頻版

OpenGL ES 學習資源分享

開通專輯 | 細數那些年寫過的技術文章專輯

Android NDK 免費視頻在線學習!!!

你想要的音視頻開發資料庫來了

推薦幾個堪稱教科書級別的 Android 音視頻入門項目

覺得不錯,點個在看唄~

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()