[英]Getting color mismatch while converting from NV12 raw data to H264 using FFMPEG
我正在嘗試使用FFMPEG的硬件編碼器將NV12原始數據轉換為H264。
將原始數據傳遞到編碼器我正在使用以下邏輯傳遞AVFrame結構:
uint8_t * buf;
buf = (uint8_t *)dequeue();
frame->data[0] = buf;
frame->data[1] = buf + size;
frame->data[2] = buf + size;
frame->pts = frameCount;
frameCount++;
但是使用這種邏輯,我得到的是顏色不匹配的H264數據,
有人可以告訴我,如何將緩沖區傳遞給AVFrame數據嗎?
在此先感謝,Harshil
我通過傳遞正確的行大小和AVFrame結構的數據值解決了顏色不匹配的問題。
假設NV12具有用於4x4圖像的YYYYUVUV平面,那么在ffmpeg中,我們需要通過
linesize [0] = y的起始位置
linesize [1] = 4,因為u的位置從4開始,並且由於uv被打包,我們不需要指定linesize [2]。
還有數據
數據[0] = y的起始位置
數據[1] = 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.