北京专业企业营销网站建设注册企业邮箱免费

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

北京专业企业营销网站建设,注册企业邮箱免费,个性化定制软件,商业网站的基本构成建立在上一步#xff0c;vs已经能够正常调试qt项目#xff0c;可以实现#xff1a; 1#xff1a;qt可以使用mvsc #xff08;使用cdb#xff09;进行调试。 2#xff1a;vs已经可以加载qt项目#xff0c;借助vs进行调试。 本文目标#xff1a;编译ffmpeg库#xf…建立在上一步vs已经能够正常调试qt项目可以实现 1qt可以使用mvsc 使用cdb进行调试。 2vs已经可以加载qt项目借助vs进行调试。 本文目标编译ffmpeg库编译出对应的相关库使用qtvs进行调试demo为研究源码做准备。 windows安装ffmpeg以前整理过们可以参考音视频windows环境ffmpeg搭建_ 本文编译ffmpeg6.0,使调试源码环境能正常进行。 技巧which.exe cl.exe 可以查看当前生效的执行文件 1安装MSYS2(提供相关指令类似linux操作系统进行编译可能windows使用) 参考使用MSYS的一些经验 - 知乎 (zhihu.com) 可以官网下载https://www.msys2.org/ 建议通过阿⾥云的链接更快速下载https://mirrors.aliyun.com/msys2/distrib/x86_64/msys2-x86_64-20230318.exe。 2修改MSYS2的配置和源 安装目录下D:\software\msys2msys2_shell.cmd 文件进行修改 #inherit 代表把当前窗口的环境变量导入给 msys2 的命令行。 把vs窗口继承给msys2 #修改源文件中rem set MSYS2_PATH_TYPEinherit 为 set MSYS2_PATH_TYPEinherit修改对应文件下的源在文件开头增加 #D:\software\msys2\etc\pacman.d\mirrorlist.mingw32 中 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/ Server http://mirrors.ustc.edu.cn/msys2/mingw/i686/#D:softwaremsys2etcpacman.dmirrorlist.mingw64 中 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/ Server http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/#D:softwaremsys2etcpacman.dmirrorlist.msys 中 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/ Server http://mirrors.ustc.edu.cn/msys2/msys/$arch/修改验证方式

在D:\software\msys2\etcpacman.conf中

#大概40行位置 作用是修改源后屏蔽签名SigLevel Never #SigLevel Required #LocalFileSigLevel Optional #RemoteFileSigLevel Required3使用msys2安装基础组件 1这里要基于vs2019进行调试所以编译时基于vs2019启动msys2. 》在启动项中visual studio 2019 目录下以管理员身份启动命令行窗口x64 Native Tools Command Prompt for VS 2019
———–》用vs启动msys2加上上面配置过则msys2继承vs2019的环境变量了。 》跳转到对应msys2安装目录下启动 D:\software\msys2doskey /HISTORY D cd msys2 msys2_shell.cmd -mingw64 #启动对应指令#如果要打开msys2的msys窗⼝ #msys2_shell.cmd》启动对应的msys2窗口只想相关的安装指令 #刷新软件包数据 pacman -Sy #安装编译环境pacman -S mingw-w64-x86_64-toolchainpacman -S gitpacman -S makepacman -S automakepacman -S autoconfpacman -S perlpacman -S libtoolpacman -S mingw-w64-x86_64-cmake #注意这里安装的是x64的cmakepacman -S pkg-configpacman -S mingw-w64-x86_64-SDL2 #安装SDL 这里是mingw 使用时支持 vs要支持需要安装vc版下面安装 #安装一些编译需要依赖的库 pacman -S yasmpacman -S nasm》修改msys2窗口支持中文显示 窗⼝右键-Options-Text然后locale选择zh_CNCharacter set 选择 UTF-8。 4用msys2源码编译安装第三方库。 1libx264 要求编译ffmpeg时配置–enable-gpl –enable-libx264. cd ~ mkdir ffmpeg6.0_sources cd ffmpeg6.0_sources/ git clone –depth 1 https://github.com/mirror/x264.git cd x264/ CCcl ./configure –enable-shared make make install cp /usr/local/lib/libx264.dll.lib /usr/local/lib/libx264.lib#需要有/usr/local/lib/pkgconfig/x264.pc 文件 改成 prefix/usr/local exec_prefix\({prefix} libdir\){exec_prefix}/lib includedir\({prefix}/includeName: x264 Description: H.264 (MPEG4 AVC) encoder library Version: 0.164.x Libs: -L\){exec_prefix}/lib -lx264 Libs.private: Cflags: -I\({prefix}/include -DX264_API_IMPORTS2libx265 要求编译ffmpeg时配置–enable-gpl --enable-libx265. #libx265编译比较特殊 编译脚本文件是vs调用makefile文件并且要用nmake进行编译 #注释掉 msys2本身的cmake mv /mingw64/bin/cmake.exe /mingw64/bin/ccmake.exe #进行编译 cd ffmpeg6.0_sources/ git clone https://gitee.com/mirrors_videolan/x265.git cd x265/build/msys-cl/ #进行编译 ./make-Makefiles.sh#拷贝相关目标文件 及配置 cp x265.exe libx265.dll /usr/local/bin/ cp libx265.lib /usr/local/lib/x265.lib cp x265-static.lib /usr/local/lib/ cp x265_config.h /usr/local/include/ cp ../../source/x265.h /usr/local/include/ cp x265.pc /usr/local/lib/pkgconfig/#需要修改/usr/local/lib/pkgconfig/x265.pc 文件 改成 prefix/usr/local3libfdk-aac 要求编译ffmpeg时配置–enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上-- enable-nonfree). cd ffmpeg6.0_sources/ #下载网络问题 就多试几次 git clone https://github.com/mstorsjo/fdk-aac.git fdk-aac-2.0.1 cd fdk-aac-2.0.1/ git checkout v2.0.1 #注释掉msys2的link 要用vs2019的link mv /usr/bin/link.exe /usr/bin/link-bk.exe which.exe link #可以多看看 #编译和安装 nmake -f Makefile.vc all nmake -f Makefile.vc prefix/usr/local install #恢复link mv /usr/bin/link-bk.exe /usr/bin/link.exe#需要新增 /usr/local/lib/pkgconfig/fdk-aac.pc 文件 增加 prefix/usr/local exec_prefix\){prefix} libdir\({exec_prefix}/lib includedir\){prefix}/include Name: Fraunhofer FDK AAC Codec Library Description: AAC codec library Version: 2.0.1 Libs: -L\({libdir} -lfdk-aac Libs.private: Cflags: -I\){includedir}4安装SDL2(msvc支持需要安装vc版本) ffmpeg需要配置支持 –enable-sdl2 安装路径Release 2.26.5 · libsdl-org/SDL · GitHub 下载对应的包SDL2-devel-2.26.5-VC.zip #下载后解压对应的包后。 拷贝头文件和lib文件 #把SDL2目录下的include目录 拷贝到msys2安装目录下 \usr\local\include目录下并把文件夹改为SDL2 #把SDL2目录下的lib/x64下相关lib拷贝到 \usr\local\lib目录下#需要配置sdl2的环境变量使sdl2可以被系统识别到 export INCLUDE\(INCLUDE;D:\software\msys2\usr\local\include\SDL2 export LIB\)LIB;D:\software\msys2\usr\local\lib #查看 echo \(LIB#同样需要配置/usr/local/lib/pkgconfig/sdl2.pc 编辑如下 prefix/usr/local exec_prefix\){prefix} libdir\({prefix}/lib includedir\){prefix}/include Name: sdl2 Description: Simple DirectMedia Layer is a cross-platform multimedia libra ry designed to provide low level access to audio, keyboard, mouse, joystic k, 3D hardware via OpenGL, and 2D video framebuffer. Version: 2.26.5 Requires: Conflicts: Libs: -L\({libdir} -lSDL2main -lSDL2 Cflags: -I\){includedir}拷贝lib参考
5源码安装ffmpeg6.0 (6.0还有一些报错日志相关先屏蔽后) cd ffmpeg6.0_sources/ git clone https://github.com/FFmpeg/FFmpeg.git cd FFmpeg/ git checkout remotes/origin/release/6.0 cd ../ cp -arf FFmpeg ffmpeg6.0 cd ffmpeg6.0/ CCcl.exe PKG_CONFIG_PATH/usr/local/lib/pkgconfig/ ./configure –toolchainmsvc –enable-shared –enable-ffplay –enable-libx264 –enable-libx265 –enable-libfdk-aac –enable-sdl2 –enable-gpl –enable-nonfree –disable-optimizations –disable-stripping mv /usr/bin/link.exe /usr/bin/link.exe.bk which link #这里直接用vs的link编译了 make -j24 #这里编译有报错日志相关的直接注释掉就好暂不关注 但是测试时日志显示不全#这里还有一个编码的警告 c4828应该需要修改编码格式但是暂时没处理 make install#进行测试 ffplay.exe http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 ffplay.exe http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp45qt项目进行调试 ffmpeg以及相关依赖都已经安装成功使用qt调用进行调试。 》这里目的时可以debug ffmpeg api内部源码用vs2019qt插件MSCV。 》qtmingGw 无法调试ffmpeg api内部源码 》建立在上述ffmpeg编译时没有进行编译优化。 1使用qt新建一个项目c/c c项目 #include stdio.h #include libavutil/avutil.h int main() {printf(hello ffmpeg version is: %s \n,av_version_info());return 0; }c项目注意头文件的包含 #include iostraem // 包含ffmpeg头⽂件 #ifdef cplusplus //⽽这⼀部分就是告诉编译器如果定义了cplusplus(即如果是cpp⽂件 extern C{ #include libavutil/avutil.h #endif #ifdef __cplusplus } #endif int main() { std::cout Hello FFMPEG, version is av_version_info() std::end l; return 0; }注意在对应的.pro文件中增加头文件和lib文件识别 #win32代表了是windows上执行 $\(PWD代表项目目录本身。 win32 { INCLUDEPATH \)\(PWD/ffmpeg6.0\include LIBS \)\(PWD/ffmpeg6.0/lib/avformat.lib \\)\(PWD/ffmpeg6.0/lib/avcodec.lib \\)\(PWD/ffmpeg6.0/lib/avdevice.lib \\)\(PWD/ffmpeg6.0/lib/avfilter.lib \\)\(PWD/ffmpeg6.0/lib/avutil.lib \\)\(PWD/ffmpeg6.0/lib/postproc.lib \\)\(PWD/ffmpeg6.0/lib/swresample.lib \\)$PWD/ffmpeg6.0/lib/swscale.lib }》拷贝对应的头文件和lib到对应目录下这里应该可以配置成死目录 这里直接拷贝msys2目录下 /usr下的local目录到项目目录然后修改文件夹local为ffmpeg6.0 》编译时报找不到对应的lib 对目录进行修改把目录下bin目录中对应avformat.lib等lib文件拷贝到lib目录下。 》进行编译报错The CDB process terminated在相关的环境都安装正常场景下该问题是运行第三方库的问题。 拷贝对应的dll文件到构建后生成的项目文件夹下再次调试ok。 2使用vs加载qt项目进行尝试。 启动vs2019并不加载项目在扩展—-QT VS Tools–Open Qt Project(.pro)加载qt项目。 加载完成后会在对应的qt项目下生成相关vs的项目文件以vcxproj结尾。 用vs2019加载vcxproj项目文件即可以在vs2019中调试我们的项目。 总结 1调试环境搭建比较繁琐需要注意细节第一个demo调试程序要运行ok。 2使用msys2进行ffmpeg源码需要注意相关库的编译pkgconfig中配置编译时用到的cmakelink以及最终生成的lb头文件以及可执行文件目录位置以及需要配置环境变量。 3需要注意qt配置文件中相关头文件依赖lib文件运行时需要的dll文件的拷贝。 4vs2019也可以直接创建qt项目但是相关的各种依赖配置比较复杂和繁琐加载qt项目会直接转换过去同时需要研究vs中加载运行参数方法。 5项目中相关的头文件依赖运行时依赖可以配置在环境变量中方便多个项目的测试先在本目录下查再依次在环境变量目录中搜索