簡體   English   中英

ffmpeg:如何從AVframe獲取YUV數據並使用opengl進行繪制?

[英]ffmpeg: how to get YUV data from AVframe and draw it using opengl?

如何從AVframe結構訪問YUV數據? 通過訪問其數據[]? 有沒有一種簡單的方法可以使用opengl繪制YUV數據而不是創建着色器並自己繪制Y,U,V圖像?

是的,您使用frame-> data []。 通常每個人都使用着色器/紋理,因此您也應該這樣做。 只需將它們作為紋理上傳,使用如下代碼上傳紋理:

glPixelStorei(GL_UNPACK_ROW_LENGTH, frame->linesize[0])
glActiveTexture(GL_TEXTURE0 + id);
glBindTexture(GL_TEXTURE_2D, texture[id]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, frame->width, frame->height,
             0, GL_LUMINANCE, GL_UNSIGNED_BYTE, frame->data[0]);

以相同的方式上傳數據[1]和[2],但將色度子采樣應用於寬度/高度(例如uvwidth =(width + 1)>> 1)。 此代碼還假定您已在名為texture []的數組中創建了3個紋理。 然后,在繪圖循環中,您可以引用這些紋理ID,以將它們鏈接到着色器中的均勻紋理,然后將它們最終用於繪制。 幾乎可以在任何地方找到進行YUV到RGB轉換的着色器示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM