1、下载ffmpeg。
在网上搜索一下,或者到官方网站下载
http://www.ffmpeg.org/releases
http://www.ffmpeg.org/download.html
tar命令解压
tar xvzf ffmpeg-git-c995644
./configure --enable-shared --prefix=/usr/local/ffmpeg
其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。
4、编译并安装
make
make install
5、安装之后在/usr/local/ffmpeg会看到有三个目录
lib 动态链接库位置
include 编程要用到头文件
bin 执行文件所在的目录
6、为了以后方便编程,我们把lib中的三个链接库libavcodec.so libavformat.so libavutil.so复制到/usr/lib下。把include目录下的ffmpeg目录复制到/usr/include下。
执行bin目录下的ffplay,可以去播放音频或者视频文件。例如播放1.mp3
./ffplay 1.mp3
另外,bin目录下还有两个文件:ffmpeg和ffserver
ffmpeg是一个很好的视频和音频的格式转化工具。网上有很多它的说明文档。如果不想生成ffserver,只要在./configure的时候加--disable-ffserver即可。
7、编程
如果写了一个test.c文件,要包含ffmpeg的头文件,可以这样写:
#include
编译:gcc -o test test.c -lavformat -lavcodec -lavtuil (前提是有第6步的操作)
如果没有第6部的操作,则编译的时候如下:
gcc -o test test.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavcodec -lavtuil
编译成功之后,执行的时候还是需要动态库的支持,还是要把那三个动态库文件复制到/usr/lib或者/lib中,不然执行的时候会说找不到动态库链接。还有一个方法可以解决这个问题,就是把/usr/local/ffmpeg/lib这个目录加入到/etc/ld.so.config中,然后执行 ldconfig,或者重启电脑,这样执行的时候系统就可以从/usr/local/ffmpeg/lib这个目录下去找这三个动态库文件了。
以上的方式是采用动态库编译ffmpeg的,如果在configure的时候不加上--enable-shared的,则采用静态链接的方式,不会生成那三个动态库。同时生成的ffplay、ffmpeg的执行文件也比较的大,因为他们不需要动态库的支持,就可以执行。但是不利于再次开发,所以我采用动态链接的方式。configure中还有很多的选项,可以通过./configure --help查看,也可以直接查看configure文件。这在配置的时候很重要。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
基于linux内核的操作系统中编译:
我所用的操作系统是ubuntu, 将下载ffmpeg的源码放在/home目录下面。或者你也可以用svn从服务器上checkout ffmpeg的代码。ubuntu默认情况下是没有安装svn,但是你可以通过一个非常的简单的命令就完成安装,命令是sudo apt-get subversion。前提是你可以访问因特网。这个过程大约需要几分钟,具体的时间跟你的网络状况有关系。
打开终端,进入ffmpeg目录。依次输入以下命令:
./configure --enable-memalign-hack --disable-debug
注:有时候会提示没有yasm,使用"--disable-yasm",或者从http://www.tortall.net/projects/yasm/releases下载相关的版本,当然你也可以用sudo apt-get install yasm 安装,当然前提是ubuntu里有yasm的package
make
你也可以将2条命令合成一条,一次性执行完成。
./configure --enable-memalign-hack --disable-debug && make
当命令完成之后你就可以在ffmpeg的目录下找到8个可执行程序:
ffmpeg.exe
ffmpeg_g.exe
ffprobe.exe
ffprobe_g.exe
ffplay.exe
ffplay_g.exe
ffserver.exe
ffserver_g.exe
每个可执行程序有一个_g的相对应。这个带调试信息的可执行程序。
这样编译任务完成。
注:默认没有编译ffplay的可执行文件,从Makefile里面可以看出,没有SDL,你可以从http://www.libsdl.org/releases去下载相应的版本去安装,也可以通过
sudo apt-get install libsdl1.2-dev 安装,当然前提也是ubuntu里面有libsdl的package。
似乎很顺利, 接下来我们轻松一下,用我们编译出来的成果来看个电影,敲入如下命令:
./ffplay /media/downdriver/hly.mp4
然而我们被告知:
Could not initialize SDL library: No avaiable video device
这是怎么回事呢? 原来我的系统中没有安装x11的库文件, 因此编译出来的SDL库就没有加载视频设备的能力了。那接下来我们首先下载对应x11的库文件,然后重新编译SDL, 那么有没有必要重新编译ffmpeg呢, 没有必要。
下载库文件:
sudo apt-get install libx11-dev
下载必要的头文件:
sudo apt-get install xorg-dev
安装成功后,再次进入sdl源代码目录重新编译, 不要忘了首先执行:
make clean
接着是:
./configure
make && make install
再来一次:
./ffplay /media/downdriver/hly.mp4