生成的ffmpeg.exe未按预期工作 在我的C++应用程序中,我想静态使用FFMPEG LIB。
我下载了ffmpeg-3.4.1源代码,并使用MINGW、Yasm和VS2015命令提示符构建了静态链接的ffmpeg,如下所示:生成的ffmpeg.exe未按预期工作 在我的C++应用程序中,我想静态使用FFMPEG LIB。,c++,windows,ffmpeg,C++,Windows,Ffmpeg,我下载了ffmpeg-3.4.1源代码,并使用MINGW、Yasm和VS2015命令提示符构建了静态链接的ffmpeg,如下所示: 下载了msys2-x86_64-20161025.exe 在打开MINGW命令提示符时,使用命令“pacman-S make gcc diffutils”安装所需的gcc工具 将C:\msys64\usr\bin\link.exe重命名为C:\msys64\usr\bin\link\u orig.exe 下载yasm 32位exe并将其路径设置为path环境变量。(
如果没有外部库链接,FFmpeg已经可以完成许多(但不是所有)您希望它完成的事情,而且在许多情况下,它在这些方面的表现也不如专门的LIB好。
因此,简而言之,是的,对于大多数常见情况,您都需要这些外部lib(特别是当它涉及MP4和其他现代格式时) 这就引出了构建FFmpeg的问题:
构建FFmpeg是一种噩梦般的体验。在linux上,这是最简单的 在你似乎需要它的窗户上,它达到了洛夫克拉夫特式的恐怖程度——你已经看过了 谢天谢地,这个奇妙的助手脚本存在:
设置一个运行最新Ubuntu(或其他发行版,如果您愿意)的虚拟机,并遵循“从Linux环境交叉编译”步骤。
我不建议将Windows管道与cygwin或msys一起使用,因为与在linux上(甚至在虚拟机上)以本机方式进行相比,这是非常缓慢的
脚本也是非常可配置的,因此您可以根据需要进行更改。例如,在我的例子中,我从构建脚本中删除了“-disable shared”选项,因为我需要一个动态构建。如果没有外部库链接,FFmpeg已经可以完成许多(但不是所有)您希望它做的事情,而且在许多情况下,它在这些方面的表现也不如专门的LIB好。
因此,简而言之,是的,对于大多数常见情况,您都需要这些外部lib(特别是当它涉及MP4和其他现代格式时) 这就引出了构建FFmpeg的问题:
构建FFmpeg是一种噩梦般的体验。在linux上,这是最简单的 在你似乎需要它的窗户上,它达到了洛夫克拉夫特式的恐怖程度——你已经看过了 谢天谢地,这个奇妙的助手脚本存在:
设置一个运行最新Ubuntu(或其他发行版,如果您愿意)的虚拟机,并遵循“从Linux环境交叉编译”步骤。
我不建议将Windows管道与cygwin或msys一起使用,因为与在linux上(甚至在虚拟机上)以本机方式进行相比,这是非常缓慢的
脚本也是非常可配置的,因此您可以根据需要进行更改。例如,在我的例子中,我从构建脚本中删除了“-disable shared”选项,因为我需要动态构建。输出文件大小和其他参数可以配置为ffmpeg二进制文件的参数(编码、编解码器、质量…)检查坏mp4文件的流信息和编码过程。您的构建选择了哪个编码器,以及编码参数?输出文件大小和其他参数可以配置为ffmpeg二进制文件的参数(编码、编解码器、质量…)检查坏mp4文件的流信息和编码过程。您的构建选择了哪个编码器,以及编码参数?直接在Windows上使用-不涉及cygwin。不过,仍然使用MinGW&MSYS。这两者都比linux上的“真正的交易”要慢,甚至在VM上也是如此。编辑了答案以反映这一点。根据选项的不同,运行配置需要2-4分钟,使用
-j8
构建需要1.5-5分钟。几乎没有“难以置信的慢”。很抱歉,但是“洛夫克拉夫特的恐怖等级”是一种严重的夸张。你可以随心所欲地感到抱歉,但这并不能改变事实。如果没有像这样的构建脚本,情况就是这样。FFmpeg是一款很棒的软件,但在我10多年的经验中,我从未遇到过其他如此复杂的软件,在用户对开发人员的各个方面都不友好。而且速度非常慢,我指的是最大版本的初始构建,不是更改后的后续版本。直接在Windows上使用-不涉及cygwin。但仍然使用MinGW&MSYS。这两者都比linux上的“真正的交易”要慢,甚至在VM上也是如此。编辑答案以反映这一点。运行配置需要2-4分钟,具体取决于选项和1