欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

编译方式安装 ffmpeg 有大用 有大大用 有大大大用

shiping1 的头像



1)yum各依赖  见  node/4978   
见各种解码器 node/4986 (要安装的解码器 有些无法安装)  node/4988 (安装的方法)  (如果想简单的话 各种解码可不安装)


2)安装 yasm 下载yasm,yasm是用于汇编的编译器,我们可以从http://yasm.tortall.net/Download.html下载yasm(根据自己的需求与系统环境选择对应的版本 主要目的是提高速度)

cd /App/src
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

3) 安装 ffmpeg
从ffmpeg官网:https://www.ffmpeg.org/download.html下载源代码,当前最新的版本为ffmpeg-2.5.3.tar.bz2。
wget http://ffmpeg.org/releases/
ffmpeg-2.5.3.tar.bz2

解压文件

tar -jxvf ffmpeg-2.5.3.tar.bz2

进入目录

cd ffmpeg-2.5.3

配置必要选项,这一步根据自己需要开启或关闭某些选项,具体可以使用./configure –help查看,或者直接查看configure文件。本文使用如下简单配置。

./configure --enable-shared --prefix=/usr/local/ffmpeg




其中–enable-shared表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。如果不加上–enable-shared选项则使用静态链接的方式编译,此时不会生成动态库,同时生成的ffmpeg等的可执行文件也比较大,但他们不需要动态库就可以直接运行

–prefix表示程序安装的目录,这里设为/usr/local/ffmpeg。

编译过程中可能会出现  yasm/nasm not found or too old.Use      --disable-yasm   for acrippled build

 

我使用 ./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg

(不安装解码器时的配置方法)
 ./configure --prefix=/usr/local/ffmpeg --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads  --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay
(如果安装了各种库 就用这里的方法 进行配置吧) (安装解码器时的配置方法)

编译安装

编译,需要较长时间,10分钟左右。

make


安装,很快完成。

 make install



路径处理

安装完成后在/usr/local/ffmpeg出现三个目录:

  • bin:可执行文件目录

  • lib:动态链接库目录

  • include:编程用到的头文件目录

不管是编程还是可执行程序的执行都需要依赖lib下面的动态库,可以把里面的so文件拷贝到/usr/lib下,但可以直接修改配置文件。通过查看/etc/ld.so.conf文件,发现里面只有一句话:

include ld.so.conf.d/*.conf


表明其包含了ld.so.conf.d下所有的conf文件,于是可以在/etc/ld.so.conf.d/创建一个新的文件ffmpeg.conf,其中之包含一句话,即为ffmpeg的lib目录:

/usr/local/ffmpeg/lib


再执行ldconfig,更新ld.so.cache,使修改生效。
 

为了在任何地方能够直接用ffmpeg运行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式运行程序,可以把可执行程序复制到bin目录下,这里选择在bin目录下创建软链接。软链接类似于Windows下的快捷方式,如果原可执行程序被删除了,软链接也不能继续使用,而硬链接则可以继续使用。创建链接命令如下:

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/
sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/


另外,如果变成需要包含ffmpeg的头文件,最好将include目录下的ffmpeg(即 /usr/local/ffmpeg/include 下面的东西)复制到/usr/include中。

运行

现在可以在shell中直接输入ffmpeg运行程序,得到以下结果:

[noalgo@NOALGO ~]$ ffmpeg
ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers
  built on Jan 14 2015 11:54:30 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
  configuration: --enable-shared --prefix=/usr/local/ffmpeg
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'


5)执行  ffmpeg -i 01_0.flv  -f mp4 -vcodec copy -acodec copy 01_0_453.mp4    #为何有问题

            ffmpeg -i 01_0.flv 01_0.mp4    # 我这样子才没有问题



这个切记  因为 可能其它的参数会出问题  (因为可能有各种解码器未装) 只有以上的参数才是正确的


使用videoview时出现提示:**不适合在此设备上播放 但是下载之后又可以播, 百思不解. 还是看下高人的解决方法:

FFMpeg转码由此得到的mp4文件中, meta信息是在文件尾部的, 而 videoview 在没有得到meta信息前不会播放文件, 因此只有等到文件完全下载完视频才会播放. 因此可以使用qt-faststart来把meta信息移到文件头部. 用法: /usr/bin/qt-faststart   INPUT OUTPUT

qt-faststart安装方法:

进入FFMpeg安装目录,执行命令:


  1. $ cd ffmpeg-2.5.3  #(这里是安装的目录) 

  2. $ ./configure  

  3. $ make tools/qt-faststart  

  4. $ cp -a tools/qt-faststart /usr/bin/ 

这样qt-faststart就安装好了。

假设转码后的文件名字为a.mp4,执行以下命令:


  1. $ /usr/bin/qt-faststart a.mp4 b.mp4 

再播放b.mp4就可以边加载边播放了。

来自 http://noalgo.info/874.html

普通分类: