資源簡介
詳細信息請參考:
http://blog.csdn.net/ajaxhe/article/details/7383800
代碼片段和文件信息
//?tutorial01.c
//?Code?based?on?a?tutorial?by?Martin?Bohme?(boehme@inb.uni-luebeckREMOVETHIS.de)
//?Tested?on?Gentoo?CVS?version?5/01/07?compiled?with?GCC?4.1.1
//?A?small?sample?program?that?shows?how?to?use?libavformat?and?libavcodec?to
//?read?video?from?a?file.
//
//?Use
//
//?gcc?-o?tutorial01?tutorial01.c?-lavutil?-lavformat?-lavcodec?-lz
//
//?to?build?(assuming?libavformat?and?libavcodec?are?correctly?installed
//?your?system).
//
//?Run?using
//
//?tutorial01?myvideofile.mpg
//
//?to?write?the?first?five?frames?from?“myvideofile.mpg“?to?disk?in?PPM
//?format.
//#include?
#include?
extern?“C“{
#include?
#include?
#include?
#include?“jpeglib.h“?//?for?jpeglib
};
//實現視頻幀的jpeg壓縮
void?saveAsJpeg(AVframe?*pframeRGB?int?width?int?height?int?framenum)
{
char?fname[128];
//?AVPicture?my_pic?;
struct?jpeg_compress_struct?cinfo;
struct?jpeg_error_mgr?jerr;
JSAMPROW?row_pointer[1];
int?row_stride;
uint8_t?*buffer;
FILE?*fp?=?NULL;
buffer?=?pframeRGB->data[0];
int?size?=?sizeof(buffer);
cinfo.err?=?jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
//_snprintf(fname?sizeof(fname)?“frames%d.jpg“?framenum);
sprintf(fname?“frames%d.jpg“?framenum);
fp?=?fopen(fname?“wb“);
if?(fp?==?NULL)
return;
jpeg_stdio_dest(&cinfo?fp);
cinfo.image_width?=?width;
cinfo.image_height?=?height;
cinfo.input_components?=?3;
cinfo.in_color_space?=?JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo?80?true);
jpeg_start_compress(&cinfo?TRUE);
row_stride?=?width?*?3;
while?(cinfo.next_scanline? {
/*?jpeg_write_scanlines?expects?an?array?of?pointers?to?scanlines.?
*?Here?the?array?is?only?one?element?long?but?you?could?pass?
*?more?than?one?scanline?at?a?time?if?that‘s?more?convenient.?
*/?
row_pointer[0]?=?&buffer[cinfo.next_scanline?*?row_stride];
jpeg_write_scanlines(&cinfo?row_pointer?1);
}
jpeg_finish_compress(&cinfo);
fclose(fp);
jpeg_destroy_compress(&cinfo);
printf(“compress?%d?frame?finished!\n“framenum)?;
return?;
}
bool?saveAsBitmap(AVframe?*pframeRGB?int?width?int?height?int?iframe)
{
FILE?*pFile?=?NULL;
BITMAPFILEHEADER?bmpheader;?
BITMAPINFO?bmpinfo;?
uint8_t?*buffer?=?pframeRGB->data[0];?//?got?the?raw?RGB24?data
char?fileName[32];
int?bpp?=?24;
//?open?file
sprintf(fileName?“frame%d.bmp“?iframe);
pFile?=?fopen(fileName?“wb“);
if?(!pFile)
return?false;
bmpheader.bfType?=?(‘M‘?<<8)|‘B‘;?
bmpheader.bfReserved1?=?0;?
bmpheader.bfReserved2?=?0;?
bmpheader.bfOffBits?=?sizeof(BITMAPFILEHEADER)?+?sizeof(BITMAPINFOHEADER);?
bmpheader.bfSize?=?bmpheader.bfOffBits?+?width*height*bpp/8;?
bmpinfo.bmiHeader.biSize?=?sizeof(BITMAPINFOHEADER);?
bmpinfo.bmiHeader.biWidth?=?width;?
bmpinfo.bmiHeader.biHeight?=?-height;?//reverse?the?image
bmpinfo.bmiHeader.biPlanes?=?1;?
bmpinfo.bmiHeader.b
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????7770624??2012-03-08?10:55??tutorial01\Debug\avcodec-53.dll
?????文件?????240640??2012-03-08?10:55??tutorial01\Debug\avfilter-2.dll
?????文件????1099264??2012-03-08?10:55??tutorial01\Debug\avformat-53.dll
?????文件?????151040??2012-03-08?10:55??tutorial01\Debug\avutil-51.dll
?????文件?????312320??2012-03-08?10:55??tutorial01\Debug\swscale-2.dll
?????文件?????434056??2012-03-22?16:34??tutorial01\Debug\tutorial01.ilk
?????文件??????56692??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\avcodec.lib
?????文件???????2484??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\avdevice.lib
?????文件??????35348??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\avfilter.lib
?????文件??????46224??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\avformat.lib
?????文件??????41838??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\avutil.lib
?????文件?????580418??2012-03-22?15:44??tutorial01\ffmpeg0.10-for-win(bad)\bin\libjpeg.lib
?????文件???????3804??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\swresample.lib
?????文件??????44436??2012-03-08?10:55??tutorial01\ffmpeg0.10-for-win(bad)\bin\swscale.lib
?????文件?????????91??2012-03-08?11:33??tutorial01\ffmpeg0.10-for-win(bad)\include\inttypes.h
?????文件???????1333??1997-10-19?03:41??tutorial01\ffmpeg0.10-for-win(bad)\include\jconfig.h
?????文件??????13936??1997-10-19?02:59??tutorial01\ffmpeg0.10-for-win(bad)\include\jerror.h
?????文件???????3250??1994-04-02?04:29??tutorial01\ffmpeg0.10-for-win(bad)\include\jinclude.h
?????文件??????12553??2012-03-22?15:47??tutorial01\ffmpeg0.10-for-win(bad)\include\jmorecfg.h
?????文件??????46205??1998-02-22?03:48??tutorial01\ffmpeg0.10-for-win(bad)\include\jpeglib.h
?????文件?????163547??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\avcodec.h
?????文件???????2913??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\avfft.h
?????文件???????1931??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\dxva2.h
?????文件???????1027??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\opt.h
?????文件???????3895??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\vaapi.h
?????文件???????4085??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\vda.h
?????文件???????2848??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\vdpau.h
?????文件???????4563??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\version.h
?????文件???????5796??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavcodec\xvmc.h
?????文件???????2786??2012-03-08?10:56??tutorial01\ffmpeg0.10-for-win(bad)\include\libavdevice\avdevice.h
............此處省略76個文件信息
評論
共有 條評論