ffmpeg源码编译_开源代码平台

ffmpeg源码编译_开源代码平台 注:本文来转自http://www.aurora-x.net/wiki/CompileFFmpegWindows,前段时间用ffempg和x264开发了h264编码和解码的Filter,这篇文章是我编译ffmeg工程从网上搜到的最好的一份文档,及其详尽,我就是按照这个文档的一步一步地来做,第一次就顺利地完成了ffmepg的编译。如果你也在学习ffmpeg,来仔细学习一下这份文档吧,以后

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 

注: 本文来转自http://www.aurora-x.net/wiki/CompileFFmpegWindows,

前段时间用ffempg和x264开发了h264编码和解码的Filter,这篇文章是我编译ffmeg工程从网上搜到的最好的一份文档,及其详尽,我就是按照这个文档的一步一步地来做,第一次就顺利地完成了ffmepg的编译。如果你也在学习ffmpeg,来仔细学习一下这份文档吧,以后有机会我会详细写一下如何编译ffmpeg包含x264库,以及如何用编译好ffmpeg开发h264编解码Filter 

                                                       智慧的鱼 2008.3.8

  1. 对于compile和build这两个词,本文统一的使用编译这个词,根据上下文读者应能区分语义上的差别。

本文的目的是提供一切与FFmpeg在Windows下的相关帮助。它最初是一个针对用MSys+MinGW系统编译的手把手的教程,现在也增加了如何在你的项目中链接FFmpeg所产生的库(C++,C#)。

我们不讨论Cygwin,因为它的工作方式基本上与Unix系统相一致。

开始之前,首先要明确以下几点:

  • 由于MSVC++并不严格的遵循C标准,因此FFmpeg不能使用MSVC++来编译,而且将来也不会支持。所以整个编译过程必须使用MSys+MinGW系统来完成。

  • 如果你选择编译动态链接库(dll),这些库将和其他的动态链接库一样在使用上没什么差别。你可以使用MSVC++来链接这些库进入到你的程序,只有这种情况下MSVC++是被支持的。

 

介绍

本指南是十分冗长的。如果你已经以前曾有过编译开源软件的经验,你可以尝试读一下这篇。它要简短的多,只需要一些小的微调就能正常工作。

但是如果你遇到了任何问题,在你向ffmpeg的邮件列表报告错误时请先仔细的通读本文,它是非常直观的,不少地方的细节甚至可能过于详细了。我们试图涵盖一切可能出错的地方,如果你精确的遵照文中的方法,你不会在Windows环境下的FFmpeg上有任何问题。

尽你的努力去解决你所遇到的问题,绝大多数的FFmpeg开发人员不使用Windows,所以他们帮不了你什么。

 

预备

这里的内容可能和本文没有什么关系,但是我不想留下任何可能出错的地方。对于绝大多数人来说,这一部分可以跳过。

你需要一个解压的工具软件支持“*.tar.gz”和“*.tar.bz2”文件。你将需要把这些压缩包解压缩到指定的目录下。如果你已经有这样的程序了,并且知道如何解压到特定目录下,请阅读准备MSys+MinGW系统

这里我将演示如何使用7-Zip或WinRAR来解压缩。推荐使用7-Zip,因为它是开源且免费的。

准备MSys+MinGW系统

获取最新的MSys+MinGW系统。注意以下几个包的版本要求:

  • 不要使用2.0.4的bash,这个是有缺陷的,2.05b的bash用来编译FFmpeg没有问题,但是更推荐3.1版本。

  • 使用msys-1.0.dll-SNAP-1.0.11-2006.04.23

  • 不要使用binutils-2.15.91-20040904-1,它无法正确的链接。

如果你已经安装配置完毕,那么请阅读下一部分用SVN方式获取FFmpeg,否则的话请依次执行下面的步骤。

用SVN方式获取FFmpeg

如果你已经知道如何获取FFmpeg的源代码,那么请阅读下一部分编译

由于FFmpeg的源代码存放在SVN仓库里,你必须使用命令行程序或是图形界面程序来访问。我个人推荐TortoiseSVN,因为它和Windows资源管理器结合的非常棒,所以我只介绍使用TortoiseSVN的方法。

编译

链接

编译FFplay

你必须事先安装了SDL-devel

  1. 解压该软件包。
  2. lib下的所有文件复制到C:/msys/mingw/lib

  3. include下的所有文件复制到C:/msys/mingw/include

  4. bin下的i386-mingw32msvc-sdl-config复制到C:/msys/mingw/bin,并重命名为sdl-config

  5. bin下的SDL.dll复制到C:/msys/mingw/bin

SDL.dll必须在ffplay.exe德PATH路径中,程序才能启动。在MSys环境下mingw/bin在PATH环境变量中,因此运行ffplay.exe不会有问题。但如果你想在MSys外部运行,则应SDL.dll复制到和ffplay.exe同一个目录下。

现在你可以按照前面的方式静态或动态重新编译FFmpeg,在运行configure脚本后,它将正确的找到SDL和ffplay。

对第三方库的支持

你必须完全的理解编译动态库部分。

在向FFmpeg的二进制文件中添加其他的库时,你必须首先考虑库是以静态还是动态的链接到FFmpeg中。不要把这个和FFmpeg本身是静态/动态链接库搞混,你可以把静态的将第三方库链接到FFmpeg中,但是FFmpeg的库本身是动态加载的dll库。

考虑这种情况:你想要更换xvidcore却不希望重新编译FFmpeg,那你就应该把xvidcore编译成动态链接库。

其次你要考虑的是这些第三方库被安装到MSys系统中的什么位置上。

对于绝大多数的是库,如果你把它们安装到缺省路径,你就得向FFmpeg的configure脚本传递额外的参数,这样才能在编译的时候找到这些库。如果你把这些库安装到gcc的缺省includelib路径下,就不需要额外指定这些参数了。如果你希望把动态库和静态库分开保存,那就不得不指定路径。这样的路径被称为你所安装的库的prefix

如果你把库安装在了非gcc的缺省寻找路径,你必须向FFmpeg的configure脚本传递这些路径信息。

--extra-ldflags=-L<prefix>/lib --extra-cflags=-I<prefix>/include

类似这样:

./configure --enable-memalign-hack --enable-mp3lame /
            -–extra-ldflags=-L/usr/local/lib /
            --extra-cflags=-I/usr/local/include

在MSys下gcc的缺省路径是

/mingw

另外,如果你把这些库的dll安装后,确保你的应用程序能在PATH环境变量中找到相应的dll。

我将展示下面这些库的安装:

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189736.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为什么有些人除了上课时间以外都没有学习,成绩却还是很好?

    为什么有些人除了上课时间以外都没有学习,成绩却还是很好?新高二学生,成绩在班级10~12名左右。有两个女生特别6。第一个,我室友,上课以外的时间都是看漫画,看小说,画画,睡觉,吃零食。但是成绩就是很好,她化学进了学校的竞赛培训班,数学也很好,但是平时完全没有死命学的迹象。第二个,另一个寝室的,我们是寄宿学校要求交手机,她没交,经常看见她玩,成绩也是铁打的特别好。我观察了一下,她们共同特点就是上课听讲特别认真,然后就是会玩。我真的很想

    2022年6月2日
    50
  • Log:Spdlog初探(1)

    Log:Spdlog初探(1)文章目录Log:Spdlog初探简介spdlog简介安装/使用Headeronlyversion编译静态库Linux版本Windows版本代码说明设置日志输出样式Log:Spdlog初探简介公司需要开新项目,提议更换日志库,交给我让我调研一下spdlog库的使用。spdlog简介Github地址:Github地址官网介绍:Veryfast,header-only/compile…

    2022年6月23日
    43
  • Ubuntu安装和卸载CUDA和CUDNN[通俗易懂]

    Ubuntu安装和卸载CUDA和CUDNN[通俗易懂]目录目录前言卸载CUDA安装CUDA下载和安装CUDA下载和安装CUDNN测试安装结果参考资料前言最近在学习PaddlePaddle在各个显卡驱动版本的安装和使用,所以同时也学习如何在Ubuntu安装和卸载CUDA和CUDNN,在学习过程中,顺便记录学习过程。在供大家学习的同时,也在加强自己的记忆。卸载CUDA为什么一开始我就要卸载CUDA…

    2022年6月12日
    27
  • win7 64位官方旗舰版上搭建ruby on rails的步骤

    win7 64位官方旗舰版上搭建ruby on rails的步骤今天在win7上安装ruby成功,步骤记录下来了,分享给朋友们。亲测,可行。———-第一步:安装ruby————1.安装rubyinstaller-2.2.4-x64.exe,记得勾选addpath…选项,安装完之后ruby-v查看版本号,比如ruby2.2.4p230(2015-12-16revision53155)[x64-mi

    2022年6月5日
    29
  • android 壁纸尺寸,常见手机壁纸的尺寸是多少

    android 壁纸尺寸,常见手机壁纸的尺寸是多少不同的手机屏幕分辨率不一样,对应的屏幕壁纸尺寸大小也不一样,这里改图宝整理了一些市面上常见的手机型号的壁纸尺寸给大家(单位都为像素):苹果AppleiPhone6:872×1634;iPhone6Plus::2706×2706;iPhone5s:640×1136;iPhone5:640×1136;iPhone8:1334×750;iPhoneX:2436x1125iP…

    2022年6月20日
    137
  • Iocomp.Ultra Pack V5.SP3 for .Net Crack

    Iocomp.Ultra Pack V5.SP3 for .Net CrackIocomp的UltraPack是一套56个控件,用于创建专业仪器应用程序。这些控件是用100%托管代码编写的,Ω578867473支持Microsoft和Borland/CodeGear/Embarcadero开发环境。结合了我们的ProPack和PlotPack。所有控件都是面向对象的,并共享许多公共类以保持一致性、易于使用和相互连接。每个控件都经过优化,以在.Net框架下获得最佳性能,同时仍然使用高级GDI+绘图例程,这大大改善了控件的外观。大多数控件在与应用

    2022年7月25日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号