最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码。Windows 以及 Linux 环境下的 FFmpeg 动态库、头文件等资源都非常容易获得,编译环境也容易构建,但 Mac OS X 下的开发编译环境就不那么容易了。因为 FFmpeg 默认没有提供 Mac OS X 下的已经编译好的动态链接库(甚至连静态库都没有提供),而网上找到的多是编译好的单独的 FFmpeg 可执行程序,满足不了开发过程中对 FFmpeg 动态库(或静态库)的编译连接要求,因此考虑自己动手从源代码编译安装 FFmpeg,以获得 Mac OS X 下的 FFmpeg 动态链接库(以及静态库)版本,并构建好开发编译环境。

首先要确保 Mac OS X 下已经具备编译开发环境,一般都是安装 XCode 以及对应的 Command line tools。

然后,从 FFmpeg 官方网站下载 FFmpeg 最新版本的源代码,可直接下载打包好的源代码压缩文件,也可以通过 git 获取完整源代码镜像,推荐用 git,命令如下:

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

这时不要急着马上开始进行编译配置!因为首先要明白一点,FFmpeg 是一个编解码框架,能够支持各种不同的编解码器,并采用统一的 api 去调用。但其默认只提供了针对各种媒体格式的解码器(基本上涵盖得比较全了),而编码器默认提供很少的几个开源的格式(或者已经无需专利保护的格式)。所以,如果你需要 FFmpeg 具备支持多种媒体格式的编码能力,你需要额外下载并安装那些编码器(主要是通过安装这些编码器获得它们的头文件、动态库及静态库用于 FFmpeg 编译),才能保证在 FFmpeg 编译时载入这些编码器的二进制代码,使 FFmpeg 具备这些编码功能。经过对比分析,就我这个项目需求而言,基本上编码器需要先额外下载并安装这几个:x264、fdk-aac、libvpx、libvorbis、LAME(mp3)就足够了。

接着,分别下载 x264、fdk-aac、libvpx、libvorbis、LAME 的源代码,然后分别编译安装。注意在执行各自的 configure 创建编译配置文件时,最好都强制带上 --enable-static 和 --enable-shared 参数以确保生成静态库和动态库。另外因为是在 Mac OS X 环境下编译,因此在各自编译完后,都要执行 sudo make install,安装到默认的 /usr/local 目录下相应位置(Mac OS X 下不推荐 /usr),因此不要在 configure 时指定 --prefix,就用默认的 /usr/local 目录前缀即可。

在安装完上述编码器后,就可以开始编译安装 FFmpeg 了。进入 FFmpeg 的源代码目录,执行以下命令:

./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-static --enable-shared

make

sudo make install

即可完成编译安装,FFmpeg 的头文件将会复制到 /usr/local/include 下面相应位置,静态库及动态库会被复制到 /usr/local/lib 目录下,FFmpeg 的可执行程序(ffmpeg、ffprobe、ffserver)会被复制到 /usr/local/bin 目录下,这样 FFmpeg 的开发环境就构建好了。补充说明一点,因为默认情况下 Mac OS X 没有 SDL,所以 FFmpeg 编译时检测不到 SDL 支持,就不会编译 ffplay 这个可执行程序了。

在 Mac OS X 环境中从源代码编译安装 FFmpeg的更多相关文章

  1. Linux 环境中从源代码编译安装 ReText 问题与解决

    从源代码编译安装 ReText 问题与解决 1. 如何安装 Python Markups 1.1 从 https://launchpad.net/python-markups 下载 Python Ma ...

  2. 如何在linux中从源代码编译安装nodejs?

    $ sudo yum groupinstall 'Development Tools'安装开发环境$ wget https://nodejs.org/dist/v0.12.2/node-v0.12.2 ...

  3. anaconda环境中---py2.7下安装tf1.0 + py3.5下安装tf1.5

    anaconda环境中---py2.7下安装tf1.0 + py3.5下安装tf1.5 @wp20181030 环境:ubuntu18.04, anaconda2, ubuntu系统下事先安装了pyt ...

  4. linux源代码编译安装OpenCV

    为了尽可能保证OpenCV的特性,使用OpenCV源代码编译安装在linux上.先从安装其依赖项開始,以ubuntu 14.04.X为例解说在Linux上源代码编译安装OpenCV,其它linux版本 ...

  5. Python3源代码编译安装

    Python3源代码编译安装 安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo yum install yum-u ...

  6. LNAMP服务器环境搭建(手动编译安装)

    LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...

  7. 源代码编译安装Python3.5.2

    由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...

  8. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  9. centos6.5环境Redis下载及编译安装

    centos6.5环境Redis下载及编译安装 1:官方站点: http://redis.io/download 下载最新版或者最新stable版 2:解压源码并进入目录 tar -zxvf redi ...

随机推荐

  1. Mac配置gdb的一些问题

    1.Unable to find Mach task port for process-id 1527: (os/kern) failure (0x5).   (please check gdb is ...

  2. python入门:输出1-100之内的所有奇数和偶数(自写)

    #!/urs/bin/env python # -*- coding:utf-8 -*- #输出1-100之内的所有奇数和偶数(自写) """ 给x赋值等于1,wehil ...

  3. tomcat如何登录Server Status、Manager App、Host Manager

    启动tomcat后,访问127.0.0.1会进入如下页面 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址:https://www.cnblogs.com/poterliu/p/9602 ...

  4. Memcached配置失误引发的Keystone token丢失的问题

    故障现象 近期公司的OpenStack上频繁出现虚拟机创建失败的情况,查看日志定位到问题出在neutron-server向keystone认证token失败. 故障原因 Keystone所使用的Mem ...

  5. 笔记-python-*号解包

    笔记-python-*号解包 在码代码时发现*号可以这样使用: str = ["abcd", "abce", "abcf"]st = &qu ...

  6. 解决获取View的width和Height为0的4种方法

    很经常当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0.view.getWid ...

  7. 用HashMap优化斐波那契数列 java算法

    斐波那契是第一项为0,第二项为1,以后每一项是前面两项的和的数列. 源码:Fibonacci.java public class Fibonacci{ private static int times ...

  8. ogre3D学习基础9 -- 光源程序实例

    这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光.具体内容前面说过,这里就不解释了. 继续在上一章的程序的基础上实现. 1.创建摄像机(Camera) createCamera()函数是 ...

  9. 静态代码扫描工具使用教程 - SonarQube+SonarScanner

    预置条件: Jdk已安装 Mysql已安装 1. 下载 SonarQube和Sonar scanner. SonarQube: http://www.sonarqube.org/downloads/ ...

  10. 初学-BeautifulSoup爬取豆瓣页面

    # -*- coding: utf-8 -*-import osimport urllibimport urllib2from bs4 import BeautifulSoup headers = { ...