本文主要是介绍FFmpeg系列-视频解码后保存帧图片为ppm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在正常开发中遇到花屏时怎么处理呢?可以把解码后的数据直接保存成帧图片保存起来,然后直接看图片有没有花屏来排除是否是显示的问题,如果花屏,则代表显示无问题,如果图片中没有花屏,则可以往显示的方向去排查了。
void saveFrame(AVFrame* pFrame, int width, int height, int iFrame)
{FILE *pFile;char szFilename[32];int y;//如果在android上//sprintf(szFilename, "sdcard/frame%d.ppm", iFrame);sprintf(szFilename, "frame%d.ppm", iFrame);pFile = fopen(szFilename, "wb");if (pFile == NULL)return;fprintf(pFile, "P6\n%d %d\n255\n", width, height);/*pFrame->data[0]是数据头,y是目前写入的行数,pFrame->linesize[0]是每行的字节数,pFrame->data[0]+y*pFrame->linesize[0]就是每行数据开头的地址。width是每行像素个数,width*3就是每行要写的数据个数,以像素分量为单位。*/for (y = 0; y < height; y++)fwrite(pFrame->data[0] + y*pFrame->linesize[0], 1, width * 3, pFile);fclose(pFile);
}int main(int argc, char* argv[])
{ AVFormatContext *pFormatCtx;int i, videoI
这篇关于FFmpeg系列-视频解码后保存帧图片为ppm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!