int Yuv420ToFile(AVFrame *avFrame,int width,int height,FILE *pFile)
{
if(!pFile || !avFrame)
{
return -1;
}
for(int j=0; j<height; j++)
{
fwrite(avFrame->data[0] + j * avFrame->linesize[0], 1,width, pFile);
}
for(int j=0; j<height/2; j++)
{
fwrite(avFrame->data[1] + j * avFrame->linesize[1], 1,width/2, pFile);
}
for(int j=0; j<height/2; j++)
{
fwrite(avFrame->data[2] + j * avFrame->linesize[2], 1,width/2,pFile);
}
return 0;
}
或用下面的方式效率更高
int Yuv420ToFile(AVFrame *avFrame,int width,int height,FILE *pFile)
{
if(!pFile || !avFrame)
{
return -1;
}
fwrite(avFrame->data[0],1,width*height,pFile); //Y
fwrite(avFrame->data[1],1,width*height/4,pFile); //U
fwrite(avFrame->data[2],1,width*height/4,pFile); //V
return 0;
}