日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用avilib库进行avi文件的读写

發布時間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用avilib库进行avi文件的读写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用avilib庫進行avi文件的讀寫


#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#else
typedef long DWORD;
#endif
#include "avilib.h"
/*
avi轉avi
by notsobad?
使用avilib進行avi文件的讀寫?
這個例子是用來將一個avi寫入另一個avi
just a simple test?
*/



int main(int argc, const char **argv)
{
char * vidbuf = malloc(327680);
char * audbuf = malloc(100000);
long framesize;
??? avi_t *avifile;
??? avi_t* pAviHandle;
??? int frame;
??? int frames;
??? int framew = 0;
??? int frameh = 0;
??? double framerate = 0.0f;


??? pAviHandle = AVI_open_output_file("test.avi");????
??? if(!pAviHandle)
??? { ??? ????
??????????? printf("avi file open failed /n");?
??????????? return -1;?
??? }
??? 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);????

????? AVI_set_video(pAviHandle,framew,frameh,framerate,AVI_video_compressor(avifile));//設置video文件頭?
????? AVI_set_audio(pAviHandle, AVI_audio_channels(avifile),?
??????????????????????????????? AVI_audio_rate(avifile),?
??????????????????????????????? AVI_audio_bits(avifile),
??????????????????????????????? AVI_audio_format(avifile),
??????????????????????????????? AVI_audio_mp3rate(avifile));
?????? //設置audio文件頭?????????????????????????
??? //framesize=(long)framew*frameh*3/2;
????? if (AVI_seek_start( avifile )) //尋找文件開始?
????? {
???????????? printf("bad seek start/n");?????????????
???????????? return -2;?
????? }
???? for (frame = 0; frame < frames;frame++)//read and write avi per fream?
???? {
??????? int iskeyframe;//if it's keyframe
??????? AVI_set_video_position(avifile, frame);//將avi文件移動到第fream幀?
??????? long audio_bytes=AVI_audio_size(avifile,frame);//get audo size?
????????
??????? AVI_read_frame(avifile,(char *)vidbuf,&iskeyframe);//read fream set video into vidbuf?
??????? AVI_read_audio(avifile, (char *)audbuf,audio_bytes);//set audio into audbuf
??????? /*
??????? long AVI_audio_size(avi_t *AVI, long frame)
??????? int AVI_write_audio(avi_t *AVI, char *data, long bytes)
??????? long AVI_read_audio(avi_t *AVI, char *audbuf, long bytes)
??????? */
?????? AVI_write_frame(pAviHandle,vidbuf,AVI_frame_size(avifile, frame),iskeyframe);//write video fream by fream
?????? AVI_write_audio(pAviHandle,audbuf,audio_bytes);//write audio fream by fream

????? }?
????? AVI_close(pAviHandle);????
????? AVI_close(avifile);????
??? return 1;?
}


avilib庫下載:http://download.csdn.net/detail/u011403718/9670611



總結

以上是生活随笔為你收集整理的使用avilib库进行avi文件的读写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。