VS2008+OPENCV+FFMPEG实现从摄像头采集数据并进行H264编码

本文介绍了如何使用VS2008、OpenCV和FFmpeg实现从摄像头采集视频并进行H264编码的过程。详细讲解了从数据采集、编码到解决编译和运行时遇到的问题,包括头文件缺失、INT64_C定义、DLL不匹配等。
摘要由CSDN通过智能技术生成

因为项目要求,需要实现通过摄像头进行视频采集并进行H264的编码。于是就开始了和度娘热火朝天的交流。现在把整个过程整理一下和大家分享。

过程如下:

OpenCV实现摄像头的数据采集和显示:

代码如下:

IplImage *pFrame = NULL;
CvCapture *pCapture = cvCreateCameraCapture(-1); //创建摄像头操作句柄

cvNamedWindow("video",1); //创建图像像是窗体

pFrame = cvQueryFrame(pCapture); //从摄像头中获取一帧图像

cvShowImage("video",pFrame); //显示一帧图像

使用OpenCv实现视频采集和显示起始很简单,在我操作过程一次成功。紧接 着实现视频数据的编码,问题来了!

首先从ffmpeg官网中下载ffmpeg开数据包:

链接如下:http://www.ffmpeg.org/download.html

下载之后将文件解压获取到如下目录:


此处请注意需要更具操作系统的差异选择不同的版本。ffmpeg提供四中种下载模式,分别为:

静态编译版本:提供编译好的指令文件如ffmpeg、ffmplay等可执行文件

共享库编译版本:提供编译好的指令文件如ffmpeg、ffmplay等可执行文件和对应的dll

开发版本:提供编译好的库文件、dll和头文件

源码:直接下载ffmpeg的所有源码。

我在开发中使用了开发版本。

将ffmpeg库文件的路径和头文件路径添加到VS2008的文件目录中:


在程序中添加编码代码:

int switch_format(AVFrame *pYuvFrame,int nWidth, int nHeight,int nDataLen,char *pData,uint8_t *pYuvBuffer)
{
AVFrame *pRgbFrame = NULL;
pRgbFrame =  new AVFrame[1];
SwsContext * scxt = sws_getContext(nWidth,nHeight,AV_PIX_FMT_BGR24,nWidth,nHeight,AV_PIX_FMT_YUV420P,SWS_POINT,NULL,NULL,NULL);  


//AVFrame *m_pYUVFrame = new AVFrame[1];  

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值