第1课 配置FFmpeg+OpenCV开发环境

本教程所对应的SDK下载链接:

https://download.csdn.net/download/XiBuQiuChong/88657539

本课对应源文件下载链接:

https://download.csdn.net/download/XiBuQiuChong/88657528

一、配置开发环境

1.下载FFmpeg+OpenCV开发所用的SDK压缩包,并解压到E:\SDK下,解压后的路径应为:E:\SDK\ffmpeg-sdk\58\x86\dll及E:\SDK\opencv-sdk\340\x86\dll。

2.新建VC++项目,名称为demo,项目类弄为MFC应用程序,并按以下图标进行配置,其余选项默认即可。

3.删除对话框中默认控件,右单击打开工程"属性"页并配置包含文件目录及库目录。

(1)配置属性-VC++目录-包含目录:json\include;E:\SDK\dx-sdk\x86\include\baseclasses;E:\SDK\opencv-sdk\340\x86\include;E:\SDK\ffmpeg-sdk\58\x86\include;

(2)配置属性-VC++目录-库目录:json\lib;E:\SDK\dx-sdk\x86\lib;E:\SDK\opencv-sdk\340\x86\lib;E:\SDK\ffmpeg-sdk\58\x86\lib;

(3)配置属性-链接器-输入-附加依赖项:avcodec.lib;avformat.lib;avutil.lib;avdevice.lib;avfilter.lib;postproc.lib;swresample.lib;swscale.lib;strmbase.lib;winmm.lib;opencv_core340d.lib;opencv_highgui340d.lib;opencv_imgproc340d.lib;opencv_videoio340d.lib;

二、编写代码测试环境搭建是否正确。

1.右单击项目新建类,类名为fmlp。

2.打开fmlp.h并加入常用头文件,注意ffmpeg头文件要用extern "C"包含。

#pragma once

#include <dshow.h>

#include <queue>

extern "C"

{

#include "libavcodec/avcodec.h"

#include "libavcodec/dxva2.h"

#include "libavformat/avformat.h"

#include "libavfilter/buffersink.h"

#include "libavfilter/buffersrc.h"

#include "libavutil/avutil.h"

#include "libavutil/opt.h"

#include "libavutil/pixdesc.h"

#include "libavutil/time.h"

#include "libavutil/mathematics.h"

#include "libavdevice/avdevice.h"

#include "libswscale/swscale.h"

#include "libswresample/swresample.h"

#include "libavutil/audio_fifo.h"

#include "libavutil/imgutils.h"

};

#include <opencv/cxcore.h>

#include <opencv/cv.h>

#include <opencv2/highgui/highgui_c.h>

#include <opencv2/opencv.hpp>

#include <opencv2/core/core.hpp>

#include <opencv2/highgui/highgui.hpp>

using namespace std;

class fmlp

{

public:

fmlp();

~fmlp();

int init();

};

3.打开fmlp.cpp并输入以下测试代码:

#include "stdafx.h"

#include "fmlp.h"

fmlp::fmlp()

{

init();

}

fmlp::~fmlp()

{

}

int fmlp::init()

{

TRACE("init.....\n");

char info[40000] = { 0 };

av_register_all();

AVCodec *avcodec = av_codec_next(NULL);

while (avcodec != NULL) {

if (avcodec->decode != NULL) {

sprintf(info, "%s[Dec]", info);

}

else {

sprintf(info, "%s[Enc]", info);

}

switch (avcodec->type) {

case AVMEDIA_TYPE_VIDEO:

sprintf(info, "%s[Video]", info);

break;

case AVMEDIA_TYPE_AUDIO:

sprintf(info, "%s[Audio]", info);

break;

default:

sprintf(info, "%s[Other]", info);

break;

}

sprintf(info, "%s[%10s]\n", info, avcodec->name);

avcodec = avcodec->next;

TRACE("%s", info);

}

return 0;

}

4.在demoDlg.h中引入fmlp的头文件以便在主对话框中使用fmlp类:

#include "fmlp.h"

5.在主对话框的OnInitDialog()函数中加入以下代码:

// TODO: 在此添加额外的初始化代码

fmlp *myFmlp = new fmlp();

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

6.单击工具栏上的"本地Windows调试器"开始运行程序,提示以下错误:

7.把SDK目录下的dll拷贝到debug目录再次运行,错误消除。

8.程序正常运行且能正常输出信息则表示环境配置成功。

相关推荐
罗西的思考6 分钟前
【Agent】 ACE(Agentic Context Engineering)源码阅读笔记---(3)关键创新
人工智能·算法
Elastic 中国社区官方博客12 分钟前
通过混合搜索重排序提升多语言嵌入模型的相关性
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
猫头虎15 分钟前
昆仑芯 X HAMi X 百度智能云 | 昆仑芯 P800 XPU/vXPU 双模式算力调度方案落地
人工智能·百度·开源·aigc·文心一言·gpu算力·agi
大千AI助手33 分钟前
探索LoSA:动态低秩稀疏自适应——大模型高效微调的新突破
人工智能·神经网络·lora·大模型·llm·大千ai助手·稀疏微调
说私域38 分钟前
“开源链动2+1模式AI智能名片S2B2C商城小程序”在拉群营销中的应用与效果
人工智能·小程序
PyAIGCMaster1 小时前
钉钉的设计理念方面,我可以学习
人工智能·深度学习·学习·钉钉
sensen_kiss1 小时前
INT305 Machine Learning 机器学习 Pt.5 神经网络(Neural network)
人工智能·神经网络·机器学习
极造数字2 小时前
从EMS看分布式能源发展:挑战与机遇并存
人工智能·分布式·物联网·信息可视化·能源·制造
深蓝电商API2 小时前
告别混乱文本:基于深度学习的 PDF 与复杂版式文档信息抽取
人工智能·深度学习·pdf
算家计算2 小时前
视觉-文本压缩框架——Glyph本地部署教程,以视觉压缩重塑长上下文处理范式
人工智能