第1课 配置FFmpeg+OpenCV开发环境
一、配置开发环境
1.下载FFmpeg+OpenCV开发所用的SDK压缩包,并解压到E:\SDK下,解压后的路径应为:E:\SDK\ffmpeg-sdk\58\x86\dll及E:\SDK\opencv-sdk\340\x86\dll。
2.新建VC++项目,名称为demo1,项目类弄为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.在demo1Dlg.h中引入fmlp的头文件以便在主对话框中使用fmlp类:
#include "fmlp.h"
5.在主对话框的OnInitDialog()函数中加入以下代码:
// TODO: ?在此添加额外的初始化代码
 fmlp *myFmlp = new fmlp();
 return TRUE; ?// 除非将焦点设置到控件,否则返回 TRUE
6.单击工具栏上的“本地Windows调试器”开始运行程序,提示以下错误:
7.把SDK目录下的dll拷贝到debug目录再次运行,错误消除。

8.程序正常运行且能正常输出信息则表示环境配置成功。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!