PPM: header + RGBRGBRGB......
code:
#include<stdio.h>
#include<ffmpeg/avcodec.h>
#include<ffmpeg/avformat.h>
#include<stdlib.h>
#define WIDTH 352
#define HEIGHT 288
int main()
{
av_register_all();
FILE *fin=fopen("test.yuv","rb");
FILE *fout=fopen("test.ppm","wb");
uint8_t *buffer_in;
uint8_t *buffer_out;
AVFrame *pFrameYUV ,*pFrameRGB;
buffer_in=(uint8_t *)malloc(WIDTH*HEIGHT*1.5*sizeof(uint8_t));
buffer_out=(uint8_t *)malloc(WIDTH*HEIGHT*3*sizeof(uint8_t) );
fread(buffer_in,sizeof(uint8_t),WIDTH*HEIGHT*1.5,fin);
pFrameYUV=avcodec_alloc_frame();
avpicture_fill((AVPicture *)pFrameYUV, buffer_in, 0,WIDTH,HEIGHT);
pFrameRGB=avcodec_alloc_frame();
avpicture_fill((AVPicture *)pFrameRGB, buffer_out, 2,WIDTH,HEIGHT);
img_convert( (AVPicture *)pFrameRGB,2,(AVPicture *)pFrameYUV,0,WIDTH,HEIGHT);
fprintf(fout,"P6/n%d %d/n 255/n",WIDTH,HEIGHT);
int i;
for(i=0;i<HEIGHT;i++)
{
fwrite( pFrameRGB->data[0]+i*WIDTH*3,1,WIDTH*3,fout);
}
free(buffer_in);
free(buffer_out);
fclose(fin);
fclose(fout);
return 0;
}
gcc -o test test.c -lavutil -lavformat -lavcodec
本文介绍了一种从YUV格式文件转换为PPM图片格式的方法。通过使用FFmpeg库中的函数,该示例代码实现了读取YUV文件并将其转换为RGB格式,最后将RGB数据写入PPM文件中。
782

被折叠的 条评论
为什么被折叠?



