前言
FFmpeg的源码如果能够使用 vs2019单步调试,这将是一件美事,极大方便阅读和调试整个 FFmpeg项目。
其实也很简单,借助开源项目 ShiftMediaProject 就可以得到一份可以使用 vs2019调试的 FFmpeg项目。
注意事项
- 一定要以管理员权限启动 PowerShell 控制台窗口
- 执行 project_get_dependencies.bat 下载脚本如果有些库没有下载下来,可能是网络问题,需要fan墙。
- 需要手动创建 include 文件夹,放入 AMF ffnvcodec GL KHR 头文件,具体下载地址参考 FFmpeg\SMP\readme.txt
- 先安装 nasm yasm 后打开 ffmpeg_deps.sln,否则有些项目无法加载
- 需要修改vs项目的 调试->命令 否则 F5 无法调试
下载编译 ShiftMediaProject 项目
目录结构
- msvc (OutputDir) (该项目默认的 VS 编译输出的目录,编译好的ffmpeg ffplay ffprobe都在这里)
- source (这个是需要的上一级目录,FFmpeg源码和三十几个个依赖项目都会下载到这里)
- FFmpeg (这个是 clone 到本地的项目目录)
- ..Any other libraries source code.. (其他的三十个依赖的项目)
编译流程
参考以下步骤,拉取并编译 ShiftMediaProject 项目
# 0.管理员权限启动 PowerShell 并创建项目源码目录
mkdir source && cd source
# 1.只拉取一层提交,加快下载速度
git clone --depth=1 https://github.com/ShiftMediaProject/FFmpeg.git
# 2.下载 yasm nasm
git clone https://github.com/ShiftMediaProject/VSYASM.git
git clone https://github.com/ShiftMediaProject/VSNASM.git
# 3.分别执行nasm 和yasm安装脚本
VSNASM\install_script.bat
VSYASM\install_script.bat
# 4.进入\FFmpeg\SMP 执行 project_get_dependencies.bat 自动下载ffmepg依赖项目
project_get_dependencies.bat
# 5.打开\FFmpeg\SMP\ffmpeg_deps.sln F7 编译整个项目
# 6. 编译完成后,打开 ffplay ffmpeg ffprobe 项目属性页
# 项目属性 -> 调试 -> 命令 修改为 $(OutDir)bin\x64\$(TargetFileName)
# 7.设置 ffplay 命令参数, F5 启动运行
FFVS-Project-Generator
这个项目可以生成自定义的 FFmpeg vs2019项目,感兴趣自行前往 Git 主页查看 https://github.com/ShiftMediaProject/FFVS-Project-Generator
技术参考
- FFmpeg在VS2017下的编译:https://www.cnblogs.com/YZFHKMS-X/p/13601126.html
- 使用 VS2015 编译并调试 ffmpeg:https://www.cnblogs.com/BensonLaur/p/10989115.html
- ShiftMediaProject Git 地址:https://github.com/ShiftMediaProject/FFmpeg
- ShiftMediaProject 主页:https://shiftmediaproject.github.io/