VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)

目录

VScode下载及安装:

下载

安装c/c++扩展包

MinGW-64下载及安装:

下载:

安装:

测试:

VScode配置c++编译调试环境

新建测试工程

配置c/c++环境配置文件文件c_cpp_properties.json

配置编译配置文件 task.json

生成调试配置文件launch.json

测试:

ffmpeg下载及相关说明

gyan.dev和BtbN版本区别:

ffmpeg的版本:

share版和非share版区别:

gpl版和lgpl版的区别:

FFMEPG目录文件介绍

lib目录下的.dll.a文件、.lib文件、def文件作用是?

SDL2下载:

VScode工程测试:

创建测试工程、测试代码:

将ffmpeg和sdl2.0的资源加入到工程

修改配置文件

测试:

附录: 

c_cpp_properties.json

launch.json

task.json

settings.json

相关下载资源

1.vscode-x64-v1.72.2forwindow

2.mingw-x86-64-win32-seh-8.1.0

3.ffmpegshare版-ffmpeg-n4.4-latest-win64-lgpl-shared-4.4.zip

4.SDL2-devel-2.24.2

5.整个工程,用vsCode打开即可使用

参考:


VScode下载及安装:

直接去官网下载安装,安装后增加c/c++插件和简体中文包插件。

下载

Visual Studio Code - Code Editing. Redefined

已经下载好的安装包:VSCode_x64 for window

安装c/c++扩展包

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第1张图片

MinGW-64下载及安装:

下载:

MinGW-64 installer下载地址:

Download MinGW-w64 - for 32 and 64 bit Windows from SourceForge.net

这个下载费了好大功夫,下载一个installer,下图是installer配置节面,相关意义请参考参考文章。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第2张图片

 installer安装时又报这个错误,没办法,转而去下载离线包。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第3张图片

 离线包下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第4张图片

 离线包大小大概47MB左右,还是下载不下来。

没办法,去CSDN搜索资源,花了积分下载。我也把我买到的资源上传了,只需3个积分,麻烦各位支持。如果你下载顺利,自己下载就行,我搞了好几个小时也没下载下来。

mingw-x86-64-win32-seh-8.1.0安装包,解压后配置环境变量即可用-Linux文档类资源-CSDN下载

安装:

安装就很方便了,解压,把解压后得到的文件目录加在环境变量PATH里就好了。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第5张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第6张图片

新增环境变量

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第7张图片

 测试:

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第8张图片

VScode配置c++编译调试环境

新建测试工程

1.新建一个main.c,如下,用vscode打开包含这个文件的文件夹。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第9张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第10张图片

 配置c/c++环境配置文件文件c_cpp_properties.json

2.在main.c文件展示界面,ctrl+shift+p进入全局配置,输入c/c++,进入c/c++:编辑配置(UI),进入配置后会在代码文件夹下新建了一个.vscode文件夹,这个文件夹后续会存储vscode相关的配置文件。在这个配置里配置g++的路径,intelliSense选择windows-gcc-x64。此时在.vscode文件夹下会出现c_cpp_properties.json文件,内容就是c/cpp相关的配置。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第11张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第12张图片

配置编译配置文件 task.json

3.在main.c文件展示界面,ctrl+shift+p进入全局配置,输入task,进入任务:配置默认生成任务,会在.vscode文件夹下生成task.json,作用是描述如何编译文件,生成可执行文件,比如这个文件就描述生成可执行文件的命令是:g++ -g main.c -o main.exe。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第13张图片 VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第14张图片

生成调试配置文件launch.json

4.在main.c文件展示界面,点击左边第四个图标,运行和调试,点击创建launch.json文件,选择C++(GDB/LLDB),点击后就会在.vscode目录下生成launch.json文件。点击launch.json右下角添加配置,选择c/c++:(gdb)启动,会生成默认的配置。再修改默认配置项里面的1.要调试的可执行文件名字(要和上一步task.json中描述的生成的可执行文件名字一致)。2.gdb的路径。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第15张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第16张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第17张图片

 VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第18张图片

 VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第19张图片

 测试:

点击运行-》启动调试即可测试。

ffmpeg下载及相关说明

选择ffmpeg4.4,进入官网http://ffmpeg.org/download.html

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第20张图片

 gyan.dev和BtbN版本区别:

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第21张图片

都是ffmpeg官方推荐的持续更新的地址。可以都点击看下,比对来看BtbN的界面更为清晰,这里使用BtbN的版本。我理解这是两个持续对ffmpeg源码持续构建的两个服务,但是使用的ffmpeg源码肯定是同一份??这两个的区别我没找到特别官方的介绍,有知道的同学也麻烦share下,感谢。

ffmpeg的版本:

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第22张图片

 从下载资源看:win平台分share版和非share版,再分gpl版和lgpl版:

share版和非share版区别:

  • share版:是动态库版,ffmpeg的tools(ffmpeg、ffmplay、ffmprobe)没有将动态库包含在tools,3个可执行文件执行时动态加在可执行文件。
  • 非share版:非动态库版,三个tools里包含了库文件,所以非share版要比share版的size大很多。

gpl版和lgpl版的区别:

指gpl、lgpl两种开源协议:选择LGPL允许在私有程序中使用该库;选择普通的GPL则只允许在自由软件中使用它。比如264协议,GPL版本libx264; LGPL的h264库,是open h264,如果你的程序是私有使用的,要使用LGPL。

 这里选择share版、LGPL版本,V4.4。

为什么选择V4.4,是准备使用雷霄骅博士(感谢雷神在FFMPEG的推广上做出的卓越贡献)的最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)_雷霄骅的博客-CSDN博客

作为测试代码,太新的版本可能会有兼容问题。

FFMEPG目录文件介绍

 下载成功后解压的目录。bin目录:

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第23张图片

解压后的文件夹有4个目录:

bin目录:包含ffprobe、ffplay、ffmpeg3个可执行文件,以及运行所需的动态库文件。

doc目录:使用帮助文档,都是H5文件,可以直接使用浏览器打开学习。

include目录:顾名思义,头文件目录。

lib目录:包含.dll.a文件、.lib文件、def文件。

lib目录下的.dll.a文件、.lib文件、def文件作用是?

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第24张图片

def文件:(module definition file模块定义文件)是用来描述dll文件。在一个.def文件中,你可以指定dll将会导出哪些符号给用户使用。linker会根据def文件的说明来生成dll和lib。所以def文件只是描述dll文件的生成规则。经实测,将lib目录下的def文件全部删掉并不影响后续可执行文件的生成。

dll.a文件:是minggw使用的实际动态库的一个缩略文件,在mingw编译过程中可以代替实际动态库。

.lib文件:从测试来看,和dll.a文件是一个作用。dll.a文件和.lib文件只要有一种,就可以实现mingw编译可执行文件成功,但是可执行文件运行时必要依赖真正的dll文件。dll.a文件、lib文件都比实际的dll文件小很多(实际的dll文件40MB, dll.a文件和.lib文件都只有100-200KB)。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第25张图片

 lib目录VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第26张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第27张图片

SDL2下载:

SDL2官网下载:Simple DirectMedia Layer - Homepage

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第28张图片

下载SDL2-devel-2.24.2-VC版,为什么使用VC版,有相关的同学推荐,mingw版有问题,SDL不是本文的重点。

VScode工程测试:

创建测试工程、测试代码:

创建测试文件夹,FFMPEG_TEST,创建测试代码main.c,copy雷神的代码保存为main.c: 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)_雷霄骅的博客-CSDN博客

按照上述流程,生成c_cpp_properities.json,launch.json,task.json,还需要多生成一个settings.json,settings的内容如下,目的是让vscode能递归的寻找头文件定义,否则你会看到很多找不到定义。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第29张图片

 ​​​​​​VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第30张图片

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第31张图片

 将ffmpeg和sdl2.0的资源加入到工程

如下图,在文件夹内新建ffmpeg4.4文件夹和SDL2_2.24.2文件夹,将解压得到的ffmpeg资源和sdl资源放进去。并把ffmpeg/bin目录下的动态库、sdl/lib目录下的动态库,拷贝到和main.c一个路径。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第32张图片

 修改配置文件

1.在c_cpp_properties.json新增ffmpeg和sdl的头文件路径,方便vscode解析,不然使用vscode无法实现源代码跳转。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第33张图片

2.修改task.json,增加编译时需要的库文件名字及库文件搜索位置,头文件位置。这一步搜索的都是静态库.lib文件。编译需要的时ffmpeg和sdl的静态库lib文件,运行时需要的是ffmpeg和sdl的动态库。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第34张图片

测试:

在main.c同级目录下放一个test.mp4文件,并修改雷神代码的71行,把要播放的媒体文件改为test.mp4。 接着点击运行c/c++文件即可播放成功。

VScode配置ffmpeg+sdl2.0开发环境(window+MinGW)_第35张图片

附录: 

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}/ffmpeg4.4/include",
                "${workspaceFolder}/SDL2_2.24.2/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:\\mingw64\\bin\\g++.exe",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }

    ]
}

task.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "D:\\mingw64\\bin\\g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-L",
				"${fileDirname}\\ffmpeg4.4\\lib",//ffmpeg4.4的lib位置
				"-L",
				"${fileDirname}\\SDL2_2.24.2\\lib\\x64",//sdl2的lib位置
				"-I",
				"${fileDirname}\\ffmpeg4.4\\include",//ffmpeg4.4的头文件位置
				"-I",
				"${fileDirname}\\SDL2_2.24.2\\include",//sdl2的头文件位置

				"-lSDL2main", //注意,这里指定要引入的静态库,自动生成的默认配置文件没有此项
				"-lSDL2",
				"-lSDL2test",
				"-lavcodec",
				"-lavdevice",
				"-lavfilter",
				"-lavformat",
				"-lavutil",
				"-lswresample",
				"-lswscale",

				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: D:\\mingw64\\bin\\g++.exe"
		}
	]
}

settings.json

{
    "C_Cpp.intelliSenseEngineFallback": "Disabled",
    "C_Cpp.intelliSenseEngine": "Tag Parser"
}

相关下载资源

1.vscode-x64-v1.72.2forwindow

VSCode-x64-v1.72.2forwindow-WindowsServer文档类资源-CSDN下载

2.mingw-x86-64-win32-seh-8.1.0

mingw-x86-64-win32-seh-8.1.0安装包,解压后配置环境变量即可用-Linux文档类资源-CSDN下载

3.ffmpegshare版-ffmpeg-n4.4-latest-win64-lgpl-shared-4.4.zip

ffmpegshare版-ffmpeg-n4.4-latest-win64-lgpl-shared-4.4.zip-编解码文档类资源-CSDN下载

4.SDL2-devel-2.24.2

SDL2-devel-2.24.2-VC版-桌面系统文档类资源-CSDN下载

5.整个工程,用vsCode打开即可使用

基于vscode构建的ffmpeg+sdl2.0的视频播放器demo-桌面系统文档类资源-CSDN下载

参考:

从零开始的vscode安装及环境配置教程(C/C++)(Windows系统)_光中影zone的博客-CSDN博客

ffmpeg与SDL下载及VScode上相应的编程环境配置踩坑(windows系统)_光中影zone的博客-CSDN博客_vscode ffmpeg环境配置

MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本 - 『潇洒の背影』 - 博客园

安装MinGW-W64提示cannot download repository.txt-解决方法_不掉发的钟同学的博客-CSDN博客

你可能感兴趣的:(FFMPEG,ffmpeg)