我想拉出一個AVFrame的矩形區域,並已啓動一個函數,將這樣做。我只對使用格式爲PIX_FMT_RGB24的AVFrame感興趣。我可能也會在這裏重新發明輪子,所以如果已經有一個功能可以做到這一點,請跳進去。到目前爲止,我的功能看起來是這樣的:從AVFrame複製一個矩形區域 - ffmpeg
AVFrame * getRGBsection(AVFrame *pFrameRGB, const int start_x, const int start_y, const int w, const int h) {
AVFrame *pFrameSect;
int numBytes;
uint8_t *mb_buffer;
pFrameSect = avcodec_alloc_frame();
numBytes = avpicture_get_size(PIX_FMT_RGB24, w, h);
mb_buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t));
avpicture_fill((AVPicture *) pFrameSect, mb_buffer, PIX_FMT_RGB24, w, h);
int curY, curX, i = 0;
for (curY = start_y ; curY < (start_y + h); curY++) {
for (curX = start_x; curX < (start_x + w); curX++) {
int curIndex = curX * 3 + curY * pFrameRGB->linesize[0];
pFrameSect->data[0][i] = pFrameRGB->data[0][curIndex];
pFrameSect->data[0][i + 1] = pFrameRGB->data[0][curIndex + 1];
pFrameSect->data[0][i + 2] = pFrameRGB->data[0][curIndex + 2];
i += 3;
}
}
return pFrameSect;
}
的功能似乎當我在(0,0)開始工作(我認爲),但是當我在圖像中移動到別處它輸出類似於應該有什麼顏色但是不對。我想我在這裏很親密,任何人都可以提供指導?
vf_crop過濾出於這樣的目的?你還想用自己的方法嗎? – rajneesh