?? avi2vp3.c
字號:
#include <stdio.h>#include <stdlib.h>#ifdef _WIN32#include <windows.h>#elsetypedef long DWORD;#endif/*extremely crude app to dump vp3 frames from an avi file*//*filenames are hardcoded*/#include "avilib.h"int main(int argc, const char **argv){ FILE * f = fopen("outfile.vp3", "wb"); char * buffer; int olength; int length; avi_t *avifile; int chunksize; int frame; int frames; int keyframegap = 0; int maxkeyframegap = 0; DWORD initialticks; int framew = 0; int frameh = 0; double framerate = 0.0f; double fps_numerator, fps_denominator; avifile = AVI_open_input_file("vp31.avi", 1); frames = AVI_video_frames(avifile); framew = AVI_video_width(avifile); frameh = AVI_video_height(avifile); framerate = AVI_frame_rate(avifile); chunksize = AVI_max_video_chunk(avifile); /* avilib only reports the max video chunk size if the file has an idx table. We fall back to an arbitrary limit otherwise. Better would be just to handle the chunks dynamically */ if (chunksize <= 0) chunksize = 131072; buffer = malloc(chunksize); printf("Frames(%d) Video(%dx%d) %3.2f fps\n",frames,framew, frameh,framerate); printf("Video Compressor: %s", AVI_video_compressor(avifile)); fps_denominator = 1000000.0F; fps_numerator = framerate * fps_denominator; sprintf(buffer,"AVI2VP31R W%d H%d F%.0f:%.0f Ip A0:0\n", framew, frameh, fps_numerator, fps_denominator); fwrite(buffer, strlen(buffer), 1, f); for (frame = 0; frame < frames;) { int keyframe; olength = length; length = AVI_frame_size(avifile, frame++); if( !length ) { length = olength; } AVI_read_frame(avifile, (char *) buffer, &keyframe); fwrite("FRAME\n", 6, 1, f); fwrite(&length, sizeof(int), 1, f); fwrite(&keyframe, sizeof(int), 1, f); printf("Frame size(%d) IsKeyframe(%d)\n", length, keyframe); fwrite(buffer, 1, length, f); if (!keyframe){ keyframegap++; } else { if (keyframegap>maxkeyframegap) maxkeyframegap=keyframegap; keyframegap = 0; } } fclose(f); printf("Max keyframegap (%d)\n", maxkeyframegap); free(buffer); exit(0);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -