转载地址 http://blog.sina.com.cn/s/blog_6eea02c50101629j.html
【下载ffmpeg】:
【
解压
】:
使用SSH或者FTP工具将下载的文件上传至linux服务器;
解压:
tar xvfj ffmpeg-0.4.9-p20051120.tar.bz2
得到解压后的目录是ffmpeg-0.4.9-p20051120,名字太长,利用mv命令改为ffmpeg:
mv ffmpeg-0.4.9-p20051120 ffmpeg
【
配置
】:
进入ffmpeg解压目录:
cd ffmpeg/
进行配置:
./configure --enable-shared --prefix=/usr/local/ffmpeg
其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。
【
编译并安装
】:
make
make install
【安装之后在/usr/local/ffmpeg会看到有三个目录】:
lib 动态链接库位置
include 编程要用到头文件
bin 执行文件所在的目录
【配置Path】:
安装完成以后并不能直接使用
ffmpeg 命令执行,系统会提示并没有这样的命令,需要进一步进行配置Path:
编辑profile文件:
vi /etc/profile
i (插入)
在文件末尾加上两句话:
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
保存并退出:
按Esc键 输入:wq! 回车
使修改生效:
source /etc/profile
【如果启动报错】:
若出现error while loading shared libraries:libavdevice.so.52错误,需要修改文件ld.so.conf。
修改
ld.so.conf:vi /etc/ld.so.conf
在末尾加上一句话:
/usr/local/ffmpeg/lib
保存并退出:
按Esc键 输入:wq! 回车
使修改生效:
ldconfig -v
修改/usr/local/ffmpeg/lib目录下的文件权限为777:
cd /usr/local/ffmpeg/lib/
chmod 777 *
【
使用Java与FFmpeg在linux上实现视频缩略图的截取】:
Java代码:
// 视频缩略图截取
// inFile 输入文件(包括完整路径)
// outFile 输出文件(可包括完整路径)
public static boolean transfer(String inFile, String outFile) {
String command = "ffmpeg -i " + inFile + " -y -f image2 -ss 00:00:10 -t 00:00:01 -s 176x144 " + outFile;
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null)
System.out.println(line);
} catch (Throwable t) {
t.printStackTrace();
return false;
}
return true;
}
注意点:
在linux上生成视频缩略图的时候很有可能会出现,程序上没有抛出任何异常,但是就是缩略图没有生成,这个时候请考虑文件夹的
权限问题, 往往是因为没有权限写入导致。可以对你要生成的文件夹添加最高权限,如相对test文件夹加权限:
chmod 777 test/ 即可。
【
总结
】:
本文主要简单的介绍了FFmpeg的安装与简单的获取视频的缩略图功能,它还可以支持更多文件格式,做更多有用的事情,有兴趣的童鞋可以自行研究。
本文参考的两篇博文地址:
风里密码(FFmpeg在Linux下的安装):
Gerry(FFmpeg在Linux下的安装):
FFmpeg在Linux下的安装
在centos5.3 成功安装了ffmpeg,现记录如下。
1、下载ffmpeg。
http://download.chinaunix.net/download.php?id=5532&ResourceID=2990
我是在这个网址上下载ffmpeg-0.4.9-p20051120.tar.bz2,看网上有人用的是svn下载,但是我的机子中没有svn客户端,然后就在网上搜索,下载了这个版本。如果利用svn可以下载ffmpeg最新的版本。
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
2、解压
tar xvfj ffmpeg-0.4.9-p20051120.tar.bz2
得到解压后的目录是ffmpeg-0.4.9-p20051120,名字太长,利用mv命令改为ffmpeg
mv ffmpeg-0.4.9-p20051120.tar.bz2 ffmpeg
3、配置
./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 <ffmpeg/avcodec.h>
编译: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
说明:-I是指明需要的头文件所在的文件,-L是指明动态库所在的目录,后面三个是指明需要的动态库。
编译成功之后,执行的时候还是需要动态库的支持,还是要把那三个动态库文件复制到/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文件。这在配置的时候很重要。
1、下载ffmpeg。
http://sourceforge.net/project/showfiles.php?group_id=205275&package_id=248632
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
2、解压
tar xvfj ffmpeg-0.4.9-p20051120.tar.bz2
3、配置
/configure --prefix=/usr/local/ffmpeg --enable-cross-compile --enable-shared
可能会产生异常/bin/sh^M
其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。
4、编译并安装
make
make install
5、安装之后在/usr/local/ffmpeg会看到有三个目录
lib 动态链接库位置
include 编程要用到头文件
bin 执行文件所在的目录
6、若出现error while loading shared libraries: libavdevice.so.52的错误
修改/etc/ld.so.conf 在最后一行加上/usr/local/ffmpeg/lib
ldconfig -v
并修改 /usr/local/ffmpeg/lib目录下的文件权限为777
若想支持更多的文件格式,参考如下:
软件安装部分
1. MP3 支持:Lame
下载地址:http://lame.sourceforge.net/download.php
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/lame-398-2
2.安装
http://www.xiph.org/downloads/
libogg-1.1.3-13.2.i586.rpm
libogg-devel-1.1.3-13.2.i586.rpm
libvorbis-1.1.2-13.2.i586.rpm
libvorbis-devel-1.1.2-13.2.i586.rpm
3. Xvid 支持:xvidcore
下载地址:http://www.xvid.org
cd xvidcore-1.1.3/build/generic && ./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/xvidcore-1.1.3
4. H264/AVC 支持:x264
要压HQ1080、iPod和PSP的影片,x264是少不了的。
安装x264需要先安装yasm http://www.tortall.net/projects/yasm/wiki/Download
下载x264 http://www.videolan.org/developers/x264.html
# 也可以 git clone git://git.videolan.org/x264.git #会下载最新源码到在当前目录下x264
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/x264-snapshot-20081007-2245
5. AC3 支持:liba52
http://liba52.sourceforge.net/
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/a52dec-0.7.4
6. MPEG4 AAC 支持:faac、faad2
faac是用来压AAC音轨的,而faad2就是AAC音轨的解码器。手机铃音和MP4影片都是使用AAC作声音编码.
faad2
下载: http://downloads.sourceforge.net/faac/
tar zxf faad2-2.6.1.tar.gz
autoreconf -vif
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/faad2 –with-mp4v2
faac
下载: http://downloads.sourceforge.net/faac/
tar zxf faac-1.26.tar.gz
./bootstrap && ./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/faac –with-mp4v2
要知道安装了faac和faad2之后有没有安装好libmp4v的话,只要找一找/usr/lib目录里有没有libmp4v2.so等一系列档案就可以了。找不到的话,就到http://resare.com/libmp4v2/dist/去下载,安装好之后再重头安装faac和faad2了。
7. 3GPP AMR Floating point 和 AMR-Wideband支持:libamrnb、libamrwb
3GP影片的影像是h263编码,而声音就用AMR-NB或AMR-WB编码,所以要转换手机影片,就要安装AMR链接库。
下载网址:http://www.penguin.cz/~utx/amr
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/amrnb-7.0.0.2
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/amrwb-7.0.0.3
8. 安装ffmpeg
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
./configure –prefix=/blog.zhangjianfeng.com/app/mediasrv/ffmpeg –enable-gpl –enable-shared –enable-libmp3lame –enable-libvorbis –enable-libamr-nb –enable-libamr-wb –enable-libxvid –enable-libx264 –enable-libfaac –enable-libfaad –enable-libfaadbin –enable-pthreads –disable-ffserver –disable-ffplay –enable-nonfree
其它: