遇到问题不好查找原因时,在windows上用visual studio设断点调试能够提供一个便利。
gstreamer选择一个版本比如1.18.5,下载或者git clone源代码,下载gstreamer在windows上的安装包,安装包与源代码需要一致,断点跟踪的时候才能显示正确的执行语句。
在windows也能编译gstreamer,但是却需要一个msys或者mingw,这个没有尝试。
在windows上安装参照
https://gstreamer.freedesktop.org/documentation/installing/on-windows.html?gi-language=c
安装包下载位置
https://gstreamer.freedesktop.org/data/pkg/windows/1.18.5/msvc/
下载安装包
- Development files installer: gstreamer-1.0-devel-msvc-x86_64-1.18.5.msi
- Runtime installer: gstreamer-1.0-msvc-x86_64-1.18.5.msi
参照 gstreamer安装(Windows + VS2022)
因为是Linux下开发,windows只用于小的调试,所以没有配置visual studio
主要包括下载runtime和sdk,然后配置E:\gstreamer\1.0\msvc_x86_64\bin
环境变量到PATH,按照这个文档拷贝一下头文件glibconfig.h。
F:\gstreamer\1.0\msvc_x86_64\bin 因为windows下面的lib和exe都位于这个目录
获取源代码
- https://gitlab.freedesktop.org/gstreamer/gst-build/-/tree/1.18.5
visual studio打开源代码:
调试gst-play位于gst-plugins-base
,核心库gstreamer
;另外插件可能位于不同的插件库,比如gst-plugins-good
/gst-plugins-bad
,这里在一个解决方案中加载了前三个工程
再说如何在visual studio上面打开正确打开源代码
从0开始打开visualstudio窗口,欢迎屏幕之后,既不打开已有,也不新建工程,而是选择“继续但无需代码
”。
打开visual studio后,文件 > 新建 > 从现有代码新建项目;
项目类型 Visual Studio C++
找到项目位置,如D:\tmp\gst-build\subprojects\gst-plugins-good
设置项目名称gst-plugins-good,其他默认;
下一步
指定项目设置,您希望如何生成项目?
: 要使用外部生成系统
下一步
生成命令,随意,比如python -V
,只有能正确返回就可以,不用于实际生成。
输出:E:\gstreamer\1.0\msvc_x86_64\bin\gst-play-1.0.exe
最终启动并调试的程序
下一步
完成。
此时保存了项目,但没保存解决方案。
依次新建gst-plugins-base
/gstreamer
两个项目,在一个解决方案中加入三个工程。
visual studio项目属性
将其中一个项目设置为启动
启动工程的属性设置比较特殊,其他工程的设置可忽略或者与启动工程一致。
项目属性:
配置管理器中增加Win32平台,
配置Debug+Win32
调试 - 命令行参数输入播放文件路径
NMAKE - 常规 - 生成命令行 只要输入一个可以返回成功的命令即可,如:meson --version
NMAKE - 常规 - 输出,这个比较关键,是启动的exe,E:\gstreamer\1.0\msvc_x86_64\bin\gst-play-1.0.exe
这样F5的时候,限制性编译meson --version
,通过后启动E:\gstreamer\1.0\msvc_x86_64\bin\gst-play-1.0.exe
,在源代码的正确位置设置断点程序就会中断并调试状态。
Windows下面编译gstreamer,没有尝试,可以参照https://www.jianshu.com/p/7863404c1909.
Ubuntu下面的编译,依赖也挺多的,在Ubuntu下面编译源代码,可以修改源代码增加打印输出观察现象,Windows和Ubuntu相互配置。