我有一個 AVFrame,我想將它保存到檔案中。如果我只將 frame->data[0] 存盤到檔案中,影像將是灰色影像,如何查看全彩色?我使用C語言。
你對我應該閱讀什么來理解和自己做這些事情有什么建議嗎?
uj5u.com熱心網友回復:
保存和查看影像的一種相對簡單的方法是將 Y、U 和 V(平面)資料寫入二進制檔案,并使用 FFmpeg CLI 將二進制檔案轉換為 RGB。
一些背景:
yuvj420p在 FFmpeg (libav) 術語中應用 YUV420“全范圍”格式。
我想輸入j來自yuvjJPEG - JPEG 影像使用“全范圍”YUV420 格式。
大多數視頻檔案使用“有限范圍”(或電視范圍)YUV 格式。
- 在“有限范圍”中,Y 范圍為 [16, 235],U 范圍為 [16, 240],V 范圍為 [0, 240]。
- 在“全范圍”中,Y 范圍為 [0, 255],U 范圍為 [0, 255],V 范圍為 [0, 255]。
yuvj420p已棄用,應該在 FFmpeg CLI 中使用yuv420pwith dst_range 1(or ) 進行標記。src_range 1我從來沒有尋找過在 C 中定義“全范圍”的方法。
yuvj420p在 FFmpeg (libav) 中應用“平面”格式。
Y 通道、U 通道和 V 通道的單獨平面。
Y 平面以全解析度給出,并且 U、V 在每個軸上縮小 x2 倍。
插圖:
Y - data[0]: YYYYYYYYYYYY
YYYYYYYYYYYY
YYYYYYYYYYYY
YYYYYYYYYYYY
U - data[1]: UUUUUU
UUUUUU
UUUUUU
V - data[2]: VVVVVV
VVVVVV
VVVVVV
在 C 中,每個“平面”都存盤在記憶體中的單獨緩沖區中。
將資料寫入二進制檔案時,我們可以簡單地將緩沖區一個接一個地寫入檔案。
為了演示,我正在重用我的以下
uj5u.com熱心網友回復:
AV_PIX_FMT_YUVJ420P是平面格式。
data[0]只是一個 Y 幀(灰度),對于具有您需要考慮的顏色的完整影像:
data[1]以及data[2]幀的 U 和 V 部分。
似乎這種格式 ( AV_PIX_FMT_YUVJ420P) 已被棄用,取而代之的是更常見的AV_PIX_FMT_YUV420P格式,如果取決于您,請使用此格式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424380.html
