目录
VScode下载及安装:
下载
安装c/c++扩展包
MinGW-64下载及安装:
下载:
安装:
测试:
VScode配置c++编译调试环境
新建测试工程
配置c/c++环境配置文件文件c_cpp_properties.json
配置编译配置文件 task.json
生成调试配置文件launch.json
测试:
ffmpeg下载及相关说明
gyan.dev和BtbN版本区别:
ffmpeg的版本:
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
4.SDL2-devel-2.24.2
5.整个工程,用vsCode打开即可使用
参考:
直接去官网下载安装,安装后增加c/c++插件和简体中文包插件。
Visual Studio Code - Code Editing. Redefined
已经下载好的安装包:VSCode_x64 for window
MinGW-64 installer下载地址:
Download MinGW-w64 - for 32 and 64 bit Windows from SourceForge.net
这个下载费了好大功夫,下载一个installer,下图是installer配置节面,相关意义请参考参考文章。
installer安装时又报这个错误,没办法,转而去下载离线包。
离线包下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
离线包大小大概47MB左右,还是下载不下来。
没办法,去CSDN搜索资源,花了积分下载。我也把我买到的资源上传了,只需3个积分,麻烦各位支持。如果你下载顺利,自己下载就行,我搞了好几个小时也没下载下来。
mingw-x86-64-win32-seh-8.1.0安装包,解压后配置环境变量即可用-Linux文档类资源-CSDN下载
安装就很方便了,解压,把解压后得到的文件目录加在环境变量PATH里就好了。
新增环境变量
1.新建一个main.c,如下,用vscode打开包含这个文件的文件夹。
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相关的配置。
3.在main.c文件展示界面,ctrl+shift+p进入全局配置,输入task,进入任务:配置默认生成任务,会在.vscode文件夹下生成task.json,作用是描述如何编译文件,生成可执行文件,比如这个文件就描述生成可执行文件的命令是:g++ -g main.c -o main.exe。
4.在main.c文件展示界面,点击左边第四个图标,运行和调试,点击创建launch.json文件,选择C++(GDB/LLDB),点击后就会在.vscode目录下生成launch.json文件。点击launch.json右下角添加配置,选择c/c++:(gdb)启动,会生成默认的配置。再修改默认配置项里面的1.要调试的可执行文件名字(要和上一步task.json中描述的生成的可执行文件名字一致)。2.gdb的路径。
点击运行-》启动调试即可测试。
选择ffmpeg4.4,进入官网http://ffmpeg.org/download.html
都是ffmpeg官方推荐的持续更新的地址。可以都点击看下,比对来看BtbN的界面更为清晰,这里使用BtbN的版本。我理解这是两个持续对ffmpeg源码持续构建的两个服务,但是使用的ffmpeg源码肯定是同一份??这两个的区别我没找到特别官方的介绍,有知道的同学也麻烦share下,感谢。
从下载资源看:win平台分share版和非share版,再分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博客
作为测试代码,太新的版本可能会有兼容问题。
下载成功后解压的目录。bin目录:
解压后的文件夹有4个目录:
bin目录:包含ffprobe、ffplay、ffmpeg3个可执行文件,以及运行所需的动态库文件。
doc目录:使用帮助文档,都是H5文件,可以直接使用浏览器打开学习。
include目录:顾名思义,头文件目录。
lib目录:包含.dll.a文件、.lib文件、def文件。
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)。
SDL2官网下载:Simple DirectMedia Layer - Homepage
下载SDL2-devel-2.24.2-VC版,为什么使用VC版,有相关的同学推荐,mingw版有问题,SDL不是本文的重点。
创建测试文件夹,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能递归的寻找头文件定义,否则你会看到很多找不到定义。
如下图,在文件夹内新建ffmpeg4.4文件夹和SDL2_2.24.2文件夹,将解压得到的ffmpeg资源和sdl资源放进去。并把ffmpeg/bin目录下的动态库、sdl/lib目录下的动态库,拷贝到和main.c一个路径。
1.在c_cpp_properties.json新增ffmpeg和sdl的头文件路径,方便vscode解析,不然使用vscode无法实现源代码跳转。
2.修改task.json,增加编译时需要的库文件名字及库文件搜索位置,头文件位置。这一步搜索的都是静态库.lib文件。编译需要的时ffmpeg和sdl的静态库lib文件,运行时需要的是ffmpeg和sdl的动态库。
在main.c同级目录下放一个test.mp4文件,并修改雷神代码的71行,把要播放的媒体文件改为test.mp4。 接着点击运行c/c++文件即可播放成功。
{
"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
}
{
"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
}
]
}
]
}
{
"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"
}
]
}
{
"C_Cpp.intelliSenseEngineFallback": "Disabled",
"C_Cpp.intelliSenseEngine": "Tag Parser"
}
VSCode-x64-v1.72.2forwindow-WindowsServer文档类资源-CSDN下载
mingw-x86-64-win32-seh-8.1.0安装包,解压后配置环境变量即可用-Linux文档类资源-CSDN下载
ffmpegshare版-ffmpeg-n4.4-latest-win64-lgpl-shared-4.4.zip-编解码文档类资源-CSDN下载
SDL2-devel-2.24.2-VC版-桌面系统文档类资源-CSDN下载
基于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博客