ffmpeg生成图片

转载地址 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
 
其它:

终于装上了,把过程记录一下 
首先要安装各种解码器 
1、lame 
lame-3.97.tar.gz 
Url: http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309  
安装方法如下:
Java代码   收藏代码
  1. tar -zxvf lame-3.97.tar.gz  
  2. cd lame-3.97  
  3. ./configure --enable-shared --prefix=/usr  
  4. make  
  5. make install  


2、libogg 
libogg-1.1.3.tar.gz  
Url: http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz  
安装方法如下: 
Java代码   收藏代码
  1. ./configure --prefix=/usr  
  2. make  
  3. make install  


3、libvorbis 
libvorbis-1.1.2.tar.gz  
Url: http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz  
安装方法如下: 
Java代码   收藏代码
  1. ./configure --prefix=/usr  
  2. make  
  3. make install  


4、xvid 
xvidcore-1.1.3.tar.gz  
Url: http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz  
安装方法如下: 
Java代码   收藏代码
  1. tar zvxf xvidcore-1.1.3.tar.gz  
  2. cd xvidcore-1.1.3/build/generic  
  3. ./configure --prefix=/usr  
  4. make  
  5. make install  


5、x264 
x264-snapshot-20071107-2245.tar.bz2  
Url: http://www.videolan.org/developers/x264.html  
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/  
安装方法如下:
Java代码   收藏代码
  1. bunzip2 x264-snapshot-20070913-2245.tar.bz2  
  2. tar xvf x264-snapshot-20070913-2245.tar  
  3. ./configure --prefix=/usr --enable-shared  
  4. make  
  5. make install  


6、libdts 
libdts-0.0.2.tar.gz  
[url]http://download.videolan.org/pub/videolan/libdca/0.0.2/libdca-0.0.2.tar.gz [/url] 
安装方法:
Java代码   收藏代码
  1. tar zxvf libdts-0.0.2.tar.gz  
  2. cd libdts-0.0.2  
  3. ./configure --prefix=/usr  
  4. make  
  5. make install  


7、a52 
a52dec-0.7.4.tar.gz  
http://liba52.sourceforge.net/downloads.html  
安装方法:
Java代码   收藏代码
  1. ./configure --prefix=/usr  
  2. make  
  3. make install  


8、faad2 
faad2-2.6.1.tar.gz  
http://www.audiocoding.com/downloads.html  
安装方法
Java代码   收藏代码
  1. autoreconf -vif  
  2. ./configure --prefix=/usr --with-mp4v2 --enable-shared  
  3. make  
  4. make install  


9、faac 
faac-1.26.tar.gz  
http://linux.softpedia.com/progDownload/FAAC-Download-554.html  
安装方法:
Java代码   收藏代码
  1. tar zxvf faac-1.26.tar.gz  
  2. cd faac  
  3. ./bootstrap  
  4. ./configure --prefix=/usr  
  5. make   
  6. make install  


10、amr-nb 
amrnb-6.1.0.4.tar.bz2  
http://ftp.penguin.cz/pub/users/utx/amr/amrnb-6.1.0.4.tar.bz2  
安装方法:
Java代码   收藏代码
  1. ./configure --prefix=/usr  
  2. make  
  3. make install  


11、amr-wb 
amrwb-7.0.0.1.tar.bz2  
http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.1.tar.bz2  
安装方法:
Java代码   收藏代码
  1. ./configure --prefix=/usr  
  2. make  
  3. make install  


12、lib52 
a52dec-0.7.4.tar.gz  
http://liba52.sourceforge.net/downloads.html  

如果前面的安装一切顺利的话,恭喜你,可以安装ffmpeg了 

安装ffmpeg 
Java代码   收藏代码
  1. ./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pp --enable-pthreads --disable-ffserver --disable-ffplay  
  2. make  
  3. make install  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值