libav를 사용하여 RGB 이미지 데이터 (.png 이미지에서 파생 됨)의 벡터를 YUV420p 형식으로 변환하려고합니다. , 첫째libav를 사용하여 rgb에서 yuv420p로 인코딩
나는 RGB를 재 배열해야합니까 : 여기 몇 가지에 대해 명확하지 않다
/* prepare a dummy image */
static void fill_yuv_image(AVFrame *pict, int frame_index, int width, int height)
{
int x, y, i;
i = frame_index;
/* Y */
for(y=0;y<height;y++) {
for(x=0;x<width;x++) {
pict->data[0][y * pict->linesize[0] + x] = x + y + i * 3;
}
}
/* Cb and Cr */
for(y=0;y<height/2;y++) {
for(x=0;x<width/2;x++) {
pict->data[1][y * pict->linesize[1] + x] = 128 + y + i * 2;
pict->data[2][y * pict->linesize[2] + x] = 64 + x + i * 5;
}
}
}
: 다음은 libav 샘플 코드에서
는 더미 이미지를 만드는 데 사용됩니다 입력 벡터의 데이터를 YUV420p로 인코딩하는 데 적합합니까?두 번째로 모든 픽셀에 대해 Y 값이 있고 Cb 및 Cr 값이 4x2 픽셀에 사용됨을 이해합니다. 내가 이해할 수없는 것은 RGB 데이터가 Cb 및 Cr 값으로 "감소"되는 방식입니다.이 방법을 어디서나 수행 할 수있는 방법이 있습니까?
먼저 답장을 보내 주셔서 감사합니다. 저는 OS 애니메이션 프로그램 인 Pencil2D에서 일하고 있습니다. 지금 나는 파일 내보내기 작업을 시도하고있다. 테스트로 하나의 이미지 (예 : 2 초의 정적 이미지)를 사용하여 동영상 파일을 인코딩하려고했습니다. – user2063909