在FFMPEG软件中,AVPicture用于通过数据指针和行大小来存储图像数据。这意味着所有字幕都以图片形式存储在ffmpeg中。 现在,我想以.ppm格式文件从AVPicture转储字幕。
我已使用AVPicture中的数据将此代码编写为转储字幕。可能是我的红色,绿色,蓝色像素数据可能在循环中出错。
w = ctx->sub->rects[0]->w;
h = ctx->sub->rects[0]->h;
line_size = ctx->sub->rects[0]->linesize[0];
int m,n;
FILE *fp = fopen("first.ppm", "wb");
(void) fprintf(fp, "P3\n%d %d\n255\n", w, h);
for (m = 0; m < h; ++m)
{
for (n = 0; n < line_size; ++n)
{
static int r,g,b,a,z;
uint32_t *pallet = ctx->sub->rects[0]->data[1];
z = ctx->sub->rects[0]->data[0][n];
b = pallet[z]&0xFF;
g = (pallet[z]>>8) & 0xFF;
r = (pallet[z]>>16)& 0xFF;
a = (pallet[z]>>24)& 0xFF;
fprintf(fp,"%d %d %d %d",b,g,r,a);
}
fprintf(fp,"\n");
fflush(fp);
}
(void) fclose(fp);
该程序未转储字幕。 r,g,b,a中只有0进入,字幕不会转储。