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

买源码做网站天津建设网站哪家好

买源码做网站,天津建设网站哪家好,中国机械加工网易下拉方法,企业电话认证本节的目的是在windows 上 编译 ffmpeg 源码#xff0c;这样做的目的是#xff1a;在工作中可以根据工作的实际内容裁剪 ffmpeg#xff0c;或者改动 ffmpeg 的源码。 第一步 #xff1a;下载#xff0c; 安装#xff0c;配置 #xff0c;运行 msys64 下载 下载地址这样做的目的是在工作中可以根据工作的实际内容裁剪 ffmpeg或者改动 ffmpeg 的源码。 第一步 下载 安装配置 运行 msys64 下载  下载地址 https://www.msys2.org/ MSYS2 (Minimal SYStem 2)是⼀个MSYS的独⽴改写版本主要⽤于 shell 命令⾏开发环境。同时它也 是⼀个在Cygwin(POSIX 兼容性层) 和 MinGW-w64(从MinGW-⽣成)基础上产⽣的追求更好的互操 作性的 Windows 软件。 MSYS2 是MSYS的⼀个升级版,准确的说是集成了panman和Mingw-64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件git/hg和MinGW-w64 ⼯具链。与MSYS最⼤的区别是移植了Arch linux的软件包管理系统Pacman(其实是与Cygwin的区别)。 安装 配置 1. 下载安装MSYS2(按照官⽹安装到⾃⼰指定的⽬录下本⼈安装于C:/msys64new) 2. 安装完成之后,先把安装⽬录下的msys2_shell.cmd中注释掉的 rem set MSYS2_PATH_TYPEinherit 改成 set MSYS2_PATH_TYPEinherit 这是为了将vs的环境继 承给MSYS2。 本节测试中安装在 C:\msys64new MSYS2可以选择msys或者MinGW-w64环境来编译不过在msys下使⽤gcc编译出来的exe和dll依赖 msys-2.0.dll⽽MinGW-w64下编译出来的⽂件不需要依赖这个dll从程序的运⾏效率来看不依赖这 个dll的程序的效率应该更⾼。所以选择MinGW-w64来编译更佳。 配置-修改pacman的源 - 在最新的msys64中已经不用改动改动后反而有错误 pacman是⼀个软件包管理器⽤来在MSYS2中安装软件但是默认的国外的源下载安装包时⾮常缓慢 ⼤概只有⼗⼏⼆⼗KB的速度⽽且还容易下载中断出错所以需要修改为国内源国内源可以选择中科⼤ 的源。 按照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/ 编辑 /etc/pacman.d/mirrorlist.mingw64 在⽂件开头添加 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/ Server http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/ 编辑 /etc/pacman.d/mirrorlist.msys 在⽂件开头添加 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/ Server http://mirrors.ustc.edu.cn/msys2/msys/$arch/ 运行 msys2_shell.cmd -mingw64 1. 启动命令⾏窗⼝在窗⼝中输⼊ 在cmd模式下 进⼊msys2安装⽬录cd c:\msys64 #如果要打开msys2的mingw64窗⼝ msys2_shell.cmd -mingw64 #如果要打开msys2的msys窗⼝ #msys2_shell.cmd 2. 然后在msys2的shell中执⾏ pacman -Sy 目的是 刷新软件包数据。 二 安装编译环境 gcc编译器、git等 msys2 遇到两类开发环境 1. MSYS2 ⾃带的开发环境安装的包叫 msys2-devel 2. MinGW-w64 的安装 17 这两者有什么区别呢 ⼀⾔以蔽之前者编译出来的可执⾏⽂件要依赖 MSYS2 提供的动态链接库⽽后者不需要。下⾯详细 说明⼀下 1 MSYS2 下的 gcc 编译环境编译的可执⾏⽂件要依赖于 msys-2.0.dll这个 DLL 提供了 Linux 下编程的提供的函数和接⼝例如 fork 函数。 这个编译环境对于编译基于 Linux 下编写的软件是⾮常适合的。例如编译 GNU 提供的各种⼯具。例 如你想编译最新版本的 GNU grep ⼯具MSYS2 下的这个环境是⾮常适合的。 2⽤ MinGW64 的编译环境 不再依赖于 msys-2.0.dll如果源代码就是基于 windows 开发的那 使⽤ MinGW 的编译环境⽐较好编译出来的可执⾏⽂件不⽤再依赖 MSYS 提供的动态链接库。当然 前提是代码中不能使⽤ Linux 的东⻄即 POSIX 的那套东⻄。 1  编译工具链 pacman -S mingw-w64-x86_64-toolchain 2  编译工具 pacman -S git pacman -S make pacman -S automake pacman -S autoconf pacman -S perl pacman -S libtool pacman -S mingw-w64-i686-cmake pacman -S pkg-config pacman -S mingw-w64-x86_64-SDL2 pacman -S mingw-w64-x86_64-yasm 编译当前最新x264时需要⽤到nasm。 pacman -S nasm 查看结果 which cl link yasm cpp 看返回结果 没有no的结果⼀般就没问题。 3  编译第三⽅库 将下载下的放置于/home/用户名/ffmpeg下本次用户名为Administrator因此会放在 /home/Administrator/ffmpeg下把第三⽅库编译的库⽂件放在 /home/Administrator/ffmpeg/build。 查看当前路径 AdministratorDESKTOP-SU7G9P3 MINGW64 ~ # pwd /home/Administrator mkdir ffmpeg cd ffmpeg 3.1 下载x264生成动态库文件静态库文件 git clone http://git.videolan.org/git/x264.git cd进入到 x264 目录下 cd x264 ./configure --prefix/home/Administrator/ffmpeg/build/libx264 --hostx86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags-Wl,--output-deflibx264.defmakemake install ⽣成libx264.lib cp ./libx264.def /home/Administrator/ffmpeg/build/libx264/lib/ cd /home/Administrator/ffmpeg/build/libx264/lib #若要生成64位lib文件则输入如下命令 lib /machine:X64 /def:libx264.def #若要生成32位lib文件则输入如下命令 lib /machine:i386 /def:libx264.def 缘由因为要借助mingw64来编译一个第三方库需要编译成Windows所需的lib文件其中执行到一条命令lib /machine:X64 /def:libx264.def结果出现错误bash: lib command not found最开始以为是libtool出了问题后来发现整个msys64目录下没有lib.exe然后就想到了Visual Studio自带的lib.exe。解决办法把Visual Studio自带lib.exe的所在目录添加到环境变量Path当中请注意上面是64位的请注意要根据实际路径来添加。 添加完毕之后记得要重启mingw64 然后使用cmd 命令进入到C:\msys64new\home\Administrator\ffmpeg\build\libx264\lib 执行  lib /machine:X64 /def:libx264.def 3.1.1 制作3rd库 新建lib264文件夹拷贝libx264-158.dll 到文件夹下并命名为libx264.dll 新建include和lib目录分别将x264.h、x264_config.h拷贝到include目录libx264.lib拷贝到lib目录下 libx264官⽹下载 https://www.videolan.org/developers/x264.html 3.2 下载和编译fdk-aac 下载fdk-aac cd /home/Administrator/ffmpeggit clone --depth 1 https://gitee.com/mirrors/fdk-aac.gitcd fdk-aac./autogen.sh./configure --prefix/home/Administrator/ffmpeg/build/libfdk-aac --enable-static --enable-sharedmake -j4make install libfdk_aac官⽹下载 https://sourceforge.net/projects/opencore-amr/files/fdk-aac/ 3.3下载编译mp3 cd /home/Administrator/ffmpeggit clone --depth 1 https://gitee.com/hqiu/lame.gitcd lame./configure --prefix/home/Administrator/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static make make install libmp3lame官⽹下载选择版本 3.98.3 https://sourceforge.net/projects/lame/files/lame/ 3.4 下载编译libvpx cd /home/Administrator/ffmpeg git clone --depth 1 https://github.com/webmproject/libvpx.git cd libvpx ./configure --prefix/home/Administrator/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --asyasm make -j4 make install 4.下载和编译ffmpeg 下载 ffmpeg 源码可以直接从ffmpeg网站上直接下载下载后解压。 https://ffmpeg.org/releases/ffmpeg-7.0.tar.xz cd /home/Administrator/ffmpeg ./configure \ --prefix/home/Administrator/ffmpeg/build/ffmepg-7.0 \ --archx86_64 \ --enable-shared \ --enable-gpl \ --enable-libfdk-aac \ --enable-nonfree \ --enable-libvpx \ --enable-libx264 \ --enable-libmp3lame \ --extra-cflags-I/home/Administrator/ffmpeg/build/libfdk-aac/include \ --extra-ldflags-L/home/Administrator/ffmpeg/build/libfdk-aac/lib \ --extra-cflags-I/home/Administrator/ffmpeg/build/libvpx/include \ --extra-ldflags-L/home/Administrator/ffmpeg/build/libvpx/lib \ --extra-cflags-I/home/Administrator/ffmpeg/build/libx264/include \ --extra-ldflags-L/home/Administrator/ffmpeg/build/libx264/lib \ --extra-cflags-I/home/Administrator/ffmpeg/build/libmp3lame/include\ --extra-ldflags-L/home/Administrator/ffmpeg/build/libmp3lame/lib make -j8 make install 如上在测试的时候第一天下午到晚上始终发生问题提示 lame的版本要38.6但是第二天就好了原因未知记录在案。 这时候如果我们在windows上通过cmd命令形式调用ffmpeg会提示各种dll 找不到。 此时bin目录中的ffmpeg、ffprobe、ffplay还是没法使用的因为缺少相关的dll需要从%MSYS2_HOME%/mingw64/bin中拷贝或者将%MSYS2_HOME%/mingw64/bin配置到环境变量Path中。 需要拷贝的dll有libwinpthread-1、SDL2、zlib1.dll、liblzma-5、libbz2-1、libiconv-2、libgcc_s_seh-1、libstdc-6、libx265、libx264-159、libfdk-aac-2  ,  libva_win32.dll 从 C:\msys64new\mingw64\bin 中拷贝数据到 C:\msys64new\home\Administrator\ffmpeg\build\ffmepg-7.0\bin --------------------------------------------------------- 三另一种安装方案。 参考博客如下 https://www.cnblogs.com/mjios?page3 下载安装MSYS2 进入MSYS2官网下载安装包我这边下载的是msys2-x86_64-20210228.exe然后进行安装。 安装完毕后打开命令行工具mingw64.exe。 安装依赖 pacmanPackage Manager是一个包管理工具。 pacman -Sl搜索有哪些包可以安装pacman -S安装pacman -R卸载 pacman -Sy 目的是 刷新软件包数据 # 编译工具链pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-yasm pacman -S mingw-w64-x86_64-SDL2 pacman -S mingw-w64-x86_64-fdk-aac pacman -S mingw-w64-x86_64-x264 pacman -S mingw-w64-x86_64-x265  这个不会有build error 但是执行的时候提示x265.dll找不到 中的某一个路径找不到因此也不安装了 pacman -S mingw-w64-x86_64-libmp3lame  这个好像不行使用pacman -Sl 查找并没有libmp3lame相关的有一个是 mingw-w64-x86_64-gimp3但是不知道是否就是libmp3lame这应该也是为什么在这种安装方式下参考中的博客没有将mp3弄进去的原因   # 需要单独安装makepacman -S make 关于软件包相关的默认路径 下载目录%MSYS2_HOME%/var/cache/pacman/pkg 安装目录%MSYS2_HOME%/mingw64 %MSYS2_HOME%是指MSYS2的安装目录 cd /C/msys64new/home/Administrator/ffmpeg/ffmpeg-7.0 ./configure --prefix/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 按照 如上有运行时异常总是说libx265.dll有问题错误如下 这块找了好久也没有找到方案解决因此直接 将 --enable-libx265 删除了重新build 了一版  ./configure --prefix/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 此时bin目录中的ffmpeg、ffprobe、ffplay还是没法使用的因为缺少相关的dll需要从%MSYS2_HOME%/mingw64/bin中拷贝或者将%MSYS2_HOME%/mingw64/bin配置到环境变量Path中。 需要拷贝的dll有libwinpthread-1、SDL2、zlib1.dll、liblzma-5、libbz2-1、libiconv-2、libgcc_s_seh-1、libstdc-6、libx265、libx264-159、libfdk-aac-2  ,  libva_win32.dll 从 C:\msys64new\mingw64\bin 中拷贝数据到 C:\msys64new\usr\local\ffmpeg\bin 总结 将 C:\msys64new\mingw64\bin 中的相关dll 拷贝到C:\msys64new\usr\local\ffmpeg\bin 将C:\msys64new\usr\local\ffmpeg\bin 设置为环境变量 四安装QT以及配置QT 下载 本教程中选择5.14.2版本从5.15版本开始是收费版本。 下载地址Index of /archive/qt/5.14/5.14.2Windows系统选择下载qt-opensource-windows-x86-5.14.2.exe 勾选MinGW 64bit编译器我电脑的系统是64bit。 如果后期想阅读Qt源码就选择勾选Qt源码。 默认已经勾选了QtCreator。 解决控制台中文乱码 工具 - 选项 文本编辑器 - 行为 - 文本编码 - 默认编码。 每次运行Qt程序你的控制台可能都会出现以下警告信息QT_DEVICE_PIXEL_RATIO已经过期。 Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.QT_SCREEN_SCALE_FACTORS to set per-screen DPI.QT_SCALE_FACTOR to set the application global scale factor. 解决方案设置环境变量QT_SCALE_FACTOR为1即可。 #include mainwindow.h#include QApplication// 导入头文件【也可以不导入因为QApplication中已经包含了QByteArray】 // #include QByteArrayint main(int argc, char *argv[]) {// 通过qputenv函数设置QT_SCALE_FACTOR为1qputenv(QT_SCALE_FACTOR, QByteArray(1));QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); } 集成FFmpeg到Qt项目中 在Windows中我们最终是通过调用FFmpeg动态库dll中的函数来操作音视频数据使用dll的其中一种方式是需要用到3种文件 .h头文件Header File 包含了函数的声明通过#include去导入相应的头文件.dll动态链接库Dynamic Link Library 包含了函数的具体实现代码Windows程序会在运行过程中动态调用dll中的函数.lib或.dll.a动态链接库的导入库Import Library .lib用于MSVC编译器中.dll.a用于MinGW编译器中包含了dll中函数的入口用于辅助找到并调用dll中的函数最终需要链接到Windows程序中比如合并到exe文件中 值得一提的是在Windows中静态链接库Static Link Library的扩展名也是.lib、.dll.a。静态链接库和导入库的区别是 静态链接库包含了函数的具体实现代码导入库不包含函数的具体实现代码函数的具体实现代码存储在dll中 修改.pro文件 # 设置头文件的目录以便编译器能够找到头文件 INCLUDEPATH %FFMPEG_HOME%/include # 设置导入库的目录和需要链接的导入库 LIBS -L%FFMPEG_HOME%/lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswscale \-lswresample #号后面的内容是注释 %FFMPEG_HOME%表示ffmpeg-4.3.2-2021-02-27-full_build-shared.7z解压后的目录 需要根据你的实际情况修改为真实的路径 -L设置导入库的目录以便编译器能够找到导入库 -l设置需要链接的导入库名称 导入库名称需要去掉文件名前面的lib比如libavcodec.dll.a就写成avcodec 调用函数 在main.cpp中调用av_version_info函数获取FFmpeg的版本信息。 #include mainwindow.h#include QApplication// 为了使用qDebug函数 #include QDebug// FFmpeg是C语言库 // 有了extern C才能在C中导入C语言函数 extern C { #include libavcodec/avcodec.h }int main(int argc, char *argv[]) {// 打印版本信息qDebug() av_version_info();QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); } 拷贝dll文件 Qt程序编译成功后会生成一个exe文件exe是Windows中的一种可执行文件 我们编写的程序代码最终都存在了exe文件中 为了保证exe在运行时能成功调用FFmpeg的函数那么就得让exe能够找到FFmpeg的dll文件动态库文件。可以将%FFMPEG_HOME%/bin目录中的所有dll文件拷贝到exe文件所在的目录中exe在运行的时候能自动找到跟它同一目录下的dll文件。 可以通过查看构建目录得知exe文件所在的目录。 运行程序后如果能在控制台看到当前ffmepg 的版本信息 字样的输出信息说明FFmpeg已经集成成功。 问题记录 这里实际测试中还有一个问题先记录一下但是原因暂时不知道 实际开发中 只有使用 MinGW 64-bit这个才能build pass并运行成功使用其他的三个都有build error 假设我们开发好程序要给 user 的windows电脑上使用那么user是不一定装过ffmpeg或者SDL的因此我自己觉得好的做法应该是如下的 在 03Recordaddtimer_home的 .pro文件中的写法如下 INCLUDEPATH ../include DEPENDPATH ../includeLIBS -L../lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswresample \-lswscale 这样就能将.h文件 引入将动态库索引引入。 在执行的时候还是会遇到 找不到各种dll的问题。 因此还需要将真正的dll文件放在 程序运行的exe 同一目录下
http://www.hkea.cn/news/14319110/

相关文章:

  • 上杭县建设局网站昆明做网站排名
  • 青岛专业建设网站网站后台管理系统需求
  • 自学网站建设要看什么书电子商务具体是干什么的
  • 东圃手机网站建设电话长沙环路建设开发有限公司网站
  • 北京网站开发教师招聘哪里可以做足球网站
  • 什么是网站接入商国外做二手服装网站有哪些
  • 宝山网站推广网页制作考证视频
  • 建德广元建设有限公司网站住房建设部官方网站居住区政策
  • 动漫网站开发 百度一下合同范本的网站
  • 长安网站建设推广公司淮南做网站
  • 深圳网站建设大公司好如何建立论坛
  • 专业做网站登录东莞网站建设的收费
  • 网站开发吧建设银行辽宁招聘网站
  • 用易语言做网站计算机前端和后端
  • 网站建设规划书主题做视频网站有什么
  • 山东建设监理协会网站无法登录wordpress火车头采集
  • 网站仿站教程下载app安装
  • 网站建设意义模板网店怎么开怎么运营
  • 宝塔建站wordpress如何快速搭建一个网站
  • 佛山当地网站建设公司长沙建站位找有为太极广大
  • 网站的图文链接怎么做的比价网站开发
  • 呼和浩特市城乡建设保障局网站物流网站的建设论文
  • 网站建设的商品编码简洁白wordpress瀑布
  • 网页游戏网站下载重庆妇科医院排行榜
  • 网址注册了怎么做网站开发网站找什么公司
  • 自己做的网站如何实现下载文件企业网站模板设计
  • 建站申请范文重庆做网站的网络公司
  • 网站备案局网络系统管理与维护形考任务2
  • 门户定制网站建设公司微信小程序开发网站建设
  • mvc网站入口asp东网站建设