当前位置: 首页 > news >正文

第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.程序正常运行且能正常输出信息则表示环境配置成功。

相关文章:

  • Kioptrix-3
  • 08 2024考研408-数据结构 第八章-排序学习笔记
  • 【51单片机系列】C51中的中断系统扩展实验
  • Linux ContOS7 日志管理(rsyslog)
  • Ubuntu 常用命令之 chown 命令用法介绍
  • STM32的以太网外设+PHY(LAN8720)使用详解(7):以太网数据接收及发送测试
  • ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
  • 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数
  • MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题
  • myspl左外连
  • Amazon Toolkit — CodeWhisperer 使用
  • 【Linux】进程周边007之进程控制
  • 麒麟V10 ARM 离线生成RabbitMQ docker镜像并上传Harbor私有仓库
  • Oracle的学习心得和知识总结(三十一)| ODBC开放式数据库连接概述及应用程序开发
  • 异方差与多重共线性对回归问题的影响
  • 力扣:205. 同构字符串(Python3)
  • 设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
  • webpack 常见面试题
  • 使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理
  • 计算机网络 网络安全技术
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 溢价26.3%!保利置业42.4亿元竞得上海杨浦宅地,楼板价80199元/平方米
  • 高盛上调A股未来12个月目标点位,沪深300指数潜在回报15%
  • 国家主席习近平同普京总统共见记者
  • 汪明荃,今生不负你
  • 圆桌丨中俄权威专家详解:两国携手维护战后国际秩序,捍卫国际公平正义