avilib库介绍

avilib顾名思义,是对avi文件处理的工具。他是一个使用c语言编写的库,可以很方便的对avi文件提取帧和生成avi视频文件。如下列出avilib库的代码。

2. avilib的使用

本文简单的使用avilib库,读取另外的一个数据接受和解析线程提取到的一帧图片,产生的一个avi视频文件。

首先这个项目是使用QT编写的,所以是一个使用c++编程语言开发的,而avilib库是使用c语言开发的。本项目又是基于linux操作系统的。所以要在qt的项目中引用c语言库 包含头文件的时候,一定要如下格式:

extern "C"

{

#include"avilib.h"

}

首先使用avilib自定以的结构体类型avi_t定义一个avi格式的文件描述符。

然后对这个文件描述符进行初始化操作,

绑定一个avi文件;

设置视频的尺寸和格式,还有帧率。

写入一帧图像

关闭文件,并且封装格式。

案例:

/*

*ToAviThread.h

*这是一个生成avi文件的线程类。

*

*/

#ifndef TOAVITHREAD_H

#define TOAVITHREAD_H

#include

extern "C"

{

#include"avilib.h"

}

class ToAviThread : public QThread

{

Q_OBJECT

public:

ToAviThread(QString aviFilePath="./avi");

~ToAviThread();

void stop();

protected:

void run();

public slots:

void mDealWithFrame(QByteArray);

private:

char *frameBuffer;  //一帧的图片缓冲区,保存从其他线程发来的图片

long bytes;         //帧的长度

avi_t *out_fd;      //avilib库中定义的文件数据结构

char  *filename;    //要保存的文件名

volatile bool stopFlag;

QString toAviFilePath;

};

#endif // TOAVITHREAD_H

/*avi线程类的实现文件

*

*ToAviThread.cpp

*

*/

#include "toavithread.h"

#include

#include

#include

ToAviThread::ToAviThread(QString aviFilePath)

{

frameBuffer = NULL;

bytes = 0;

stopFlag = false;

toAviFilePath = aviFilePath;

}

ToAviThread::~ToAviThread()

{

AVI_close (out_fd);

}

/*

*qt中的一个槽函数,接受其他类的信号发来的一帧图像

*

*/

void ToAviThread::mDealWithFrame(QByteArray frame)

{

frameBuffer = frame.data();

bytes = frame.length();

}

void ToAviThread::run()

{

QString tmpFile= toAviFilePath+QDateTime::currentDateTime().toString("yyyy-MM-dd--hh:mm:ss")+".avi";

filename = tmpFile.toUtf8().data();//以当前时间定义文件名和路径

out_fd = AVI_open_output_file(filename); //把文件描述符绑定到此文件上

if(out_fd == NULL)

{

qDebug()<

}

AVI_set_video(out_fd,320,240,15,"MJPG");//设置视频文件的格式

while(!stopFlag)

{

if(frameBuffer != NULL && bytes !=0)

{

if(AVI_write_frame(out_fd,frameBuffer,bytes)<0)//向视频文件中写入一帧图像

{

qDebug()<

}else{

frameBuffer = NULL;

bytes = 0;

}

}

}

AVI_close (out_fd);  //关闭文件描述符,并保存文件

}

//退出线程,

void ToAviThread::stop()

{

stopFlag = true;

}

c语言如何读取avi文件,avilib库的使用相关推荐

  1. R语言中读取xlsx文件的方法

    R语言中读取xlsx文件的方法 安装包 install.packages("openxlsx") library(openxlsx) 文件名+sheet的序号 data<- ...

  2. [转载]vfw的AVI族函数读取AVI文件

    #include "vfw.h"#pragma comment(lib, "vfw32.lib") #pragma comment(lib, "Win ...

  3. C语言如何读取txt文件(最新免费代码)

    C语言如何读取txt文件(最新免费代码) 运行效果展示 第一步添加头文件 写函数 完整的代码 运行效果展示 第一步添加头文件 #include <stdio.h> 写函数 使用的API是 ...

  4. R语言批量读取txt文件并合并

    气象数据处理-R语言批量读取txt数据并合并 处理地面气候资料日值数据集v3.0 数据集以月为单位存储,每个月是一个单独的文件,上图. 在处理数据过程中,我们往往会将单独的数据合并到一起做进一步分析, ...

  5. linux c++读取excel文件的库

    1.libxls 该库只能读取xls文件 首先下载源码,地址:https://github.com/libxls/libxls 下载其Releases版本,如图所示,下载libxls-1.6.2.ta ...

  6. OpenCV读取AVI文件

    问题:为什么我的电脑支持AVI或者能够播出AVI,但为什么使用cvCreateFileCapture函数总返回NULL呢? 答案:尽管是AVI文件,但也可能使用了某种codec,例如:MJPEG De ...

  7. matlab读取avi文件出错

    1,出现问题 在使用matlab做实验的时候出现问题,具体信息如下: >> m2=aviread('C:/test.avi'); ??? Error getting frame data. ...

  8. c语言编程读取bmp文件数据,c语言读取BMP图片的RGB数据

    BMP图片是位图(bitmap),一般未压缩,要读取BMP文件只要知道它的文件结构就可以了,具体格式可以百度或者google,就不多说了,几个重要的点在代码里面有注释. /** c语言读取位图信息 * ...

  9. c语言实现读取csv文件,并对数据进行分析。

    总代码: ```c在这里插入代码片 #include <stdio.h> #include <stdlib.h> #include <string.h> struc ...

最新文章

  1. 阶乘C语言超出范围,阶乘新问题-题解(C语言代码)
  2. [Visual Studio] 未能完成操作 不支持此接口
  3. Django Tips
  4. python系列(四)python元组与字典
  5. 重新安装Jenkins
  6. 直播盒子源码与直播盒子APP如何对接自动发卡平台
  7. 道路-水系河流-铁路-人口等栅格数据获取途径
  8. c语言字符串内容匹配,C语言字符串匹配函数
  9. 博客迁移说明 : )
  10. 打地鼠游戏的制作与心得
  11. uniapp 微信支付功能
  12. Java代理(静态代理、JDK动态代理、CGLIB动态代理)
  13. Hbuilder上架苹果app流程(上)
  14. android 设置壁纸,Android 代码设置壁纸的方式,兼容各大ROM
  15. linux mysql insert into_MySQL的INSERT语句小结
  16. uni-app实战教程
  17. OKR之剑·总结篇01:如何开好一场OKR复盘会
  18. 《浪潮之巅》——当年摩托罗拉系统输在Java慢,Android赢在C++
  19. 应用统计432考研复试提问总结精简版【二】
  20. 设计模式与软考试题之状态模式(二)

热门文章

  1. 安卓数据恢复_19款数据恢复软件,全平台IOS+WIN+安卓+U盘+硬盘+SD卡......
  2. 用猎豹免费Wifi解决高校NetKeeper客户端不能共享网络的问题
  3. 【牛客刷题-算法】1-算法入门-数据结构-栈
  4. 微波射频学习笔记15-------了解1/4波长天线
  5. 贴片陶瓷天线原理 与 HFSS模型建立和仿真分析总结
  6. 计算机英语词汇带英标,小学英语词汇带英标(13页)-原创力文档
  7. 程序设计基础python答案_Python程序设计基础免费答案
  8. Xilinx XCKU115 FPGA 加速卡
  9. 下载工具你用那个?迅雷 or 网际快车
  10. 如何通过Python分析中国演员排名?他第一你认可吗?