Linux下安装ffmpeg与使用

下面是以Linux为例介绍ffmpeg的安装流程的简单的命令行对视频进行转码操作,是ffmpeg中最最简单的入门内容.

  首先去官网下载源码包,这里下载的是最新的ffmpeg-3.3.1.tar.bz2,下载之后上传至Linux准备安装,首先解压安装包:

tar -xjvf ffmpeg-3.3.1.tar.bz2
cd ffmpeg-3.3.1/

  如果现在直接执行configure配置的话,可能会报如下的错误:

错误的意思是 yasm/nasm 包不存在或者很旧,可以使用--disable-yasm禁用这个选项编译,yasm是一款汇编器,并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可,下载地址是:http://yasm.tortall.net/Download.html 进入后下载1.3.0的源码包,执行下面命令安装:

tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

  编译参数都是默认的,直接安装到系统中即可,安装成功之后继续回到ffmpeg解压后的目录,执行下面命令编译并安装:

./configure --enable-shared --prefix=/usr/local/ffmpeg    //自己想要存放的地方
make
make install

  编译过程有点长,耐心等待完成之后执行 cd /monchickey/ffmpeg/ 进入安装目录,查看一下发现有bin,include,lib,share这4个目录,其中bin是ffmpeg主程序二进制目录,include是C/C++头文件目录,lib是编译好的库文件目录,share是文档目录,然后进入bin目录,执行 ./ffmpeg -version 查看当前版本的详细信息,默认情况下一般会报libavdevice.so.57: cannot open shared object file: No such file or directory,原因是lib目录未加载到链接到系统库中,系统ld目录列表在/etc/ld.so.conf中,打开文件会发现,里面引用了/etc/ld.so.conf.d/下面所有的.conf文件,比如mariadb-x86_64.conf我们只需要创建一个文件并写入lib路径即可,执行命令: vim /etc/ld.so.conf.d/ffmpeg.conf 然后添加一行内容: /monchickey/ffmpeg/lib 之后保存并退出,然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了

  以上转账自https://www.cnblogs.com/freeweb/p/6897907.html#commentform-----------------------------------------------------

 

当我们在 Linux下执行一个命令时,报   -bash:  XXXX: command not found,这和Windows是相同的道理,都是环境变量惹的祸,

就是说你的 命令的 执行文件不在 /usr/bin 或者 /etc/init.d 中,他就找不到 执行该命令的 文件来执行.

思路是将 该应用的 bin 目录 放入到  profile 文件中就OK了


1、find / -name profile  #找到该文件(这个文件相当于 你在Windows 中加入环境变量那块),一般该文件在 /etc/profile 这里

2、vim profile                 #编辑该文件

3、export PATH="$PATH:/phpstudy/mysql/bin:/monchickey/ffmpeg/bin"     

#在该文件中加入 command not found 的应用 bin 目录,这里我是将 mysql 的 bin 放到这里,因为 我是因为 mysqld / mysqldump / mysqladmin 命令用不了

4、source /etc/profile  // 更新配置(不用重启系统)
---------------------
作者:qq_blog
来源:CSDN
原文:https://blog.csdn.net/zq199692288/article/details/78871046
版权声明:本文为博主原创文章,转载请附上博文链接!

 

---------------------------------

上面我们编译完了FFMPEG之后可以去运行以下bin目录下生成的可执行文件

~/tmp/ffmpeg/ffmpeg/host/bin$ ./ffmpeg 
./ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory

发现系统提示找不到动态库,可以用

ldd ffmpeg

来查看运行当前可执行文件需要哪些动态库

复制代码
~/tmp/ffmpeg/ffmpeg/host/bin$ ldd ffmpeg 
    linux-vdso.so.1 =>  (0x00007fffcfeaf000)
    libavdevice.so.57 => not found
    libavfilter.so.6 => not found
    libavformat.so.57 => not found
    libavcodec.so.57 => not found
    libswresample.so.2 => not found
    libswscale.so.4 => not found
    libavutil.so.55 => not found
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f41d6d9e000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f41d6b7f000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f41d67b9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f41d70c7000)
复制代码

应该有很多人和我一样,不想编译FFMPEG之后还要动自己系统的环境,这时有一个简单的方法可以解决这个问题。就是在当前终端export一个环境变量。

~/tmp/ffmpeg/ffmpeg/host$ export LD_LIBRARY_PATH=lib/

 

复制代码
~/tmp/ffmpeg/ffmpeg/host/bin$ export LD_LIBRARY_PATH=../lib/
~/tmp/ffmpeg/ffmpeg/host/bin$ ldd ffmpeg 
    linux-vdso.so.1 =>  (0x00007fff25150000)
    libavdevice.so.57 => ../lib/libavdevice.so.57 (0x00007f7348cc8000)
    libavfilter.so.6 => ../lib/libavfilter.so.6 (0x00007f73488e8000)
    libavformat.so.57 => ../lib/libavformat.so.57 (0x00007f73484cc000)
    libavcodec.so.57 => ../lib/libavcodec.so.57 (0x00007f7347034000)
    libswresample.so.2 => ../lib/libswresample.so.2 (0x00007f7346e17000)
    libswscale.so.4 => ../lib/libswscale.so.4 (0x00007f7346b8f000)
    libavutil.so.55 => ../lib/libavutil.so.55 (0x00007f7346917000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f73465f1000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f73463d3000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f734600d000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f7345dee000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7345be9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7348edb000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f73459e5000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f73457de000)
复制代码

然后再去运行上面的可执行文件就可以了

~/tmp/ffmpeg/ffmpeg/host/bin$ ./ffmpeg 
ffmpeg version n3.2.2-8-g64bb329 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --prefix=host --enable-shared --disable-static --disable-doc
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.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'

 *******  转载自https://www.cnblogs.com/CoderTian/p/6655568.html ***********

 

 

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

安装

建议通过Composer来安装PHP-FFMpeg 

转到项目下,cd /work/apps/ad.superdalan.com_test/,安装

$ composer require php-ffmpeg/php-ffmpeg

如果有安装composer,却提示command not found,把composer移到/usr/local/bin/下,查查composer有没有执行权限,没有执行 chmod +x composer给加个

然后编译。

 

基本使用

$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
    ->synchronize();
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');
$video
    ->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
    ->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
    ->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');

FFMpeg


FFMpeg\FFMpeg 是操作媒体主要的对象。可以使用静态调用FFMpeg\FFMpeg::create来创建。


$ffmpeg = FFMpeg\FFMpeg::create();

FFMpeg会自动探测 ffmpeg和ffprobe的二进制文件。如果你想给出确切的二进制文件路径, 可以通过一个数组来设置。 A Psr\Logger\LoggerInterface can also be passed to log binary executions.


$ffmpeg = FFMpeg\FFMpeg::create(array(
    'ffmpeg.binaries'  => '/usr/local/ffmpeg/bin/ffmpeg',  //这个地方就是上面安装ffmpeg的目录
    'ffprobe.binaries' => '/usr/local/ffmpeg/bin/ffprobe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use
), $logger);

********* https://www.cnblogs.com/peteremperor/p/6477743.html ********

执行命令的过程中有可能出现:/usr/local/ffmpeg/bin/ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory

这样的错误,这个错误是因为动态链接库没有找到导致的。也有可能是64位操作系统的原因。这里位给出解决办法,就是修改动态链接库配置文件/etc/ld.so.conf添加一句话/usr/local/ffmpeg/lib当然这个要根据实际情况而定,就是安装的路径。

修改配置文件

  1. vim /etc/ld.so.conf

加入下面一句话

  1. /usr/local/ffmpeg/lib

重新加载配置文件

  1. ldconfig

到此该问题得以解决。

************** https://www.sunnyos.com/article-show-82.html ****************

posted @ 2018-11-30 10:33  无脸男小姐  阅读(13871)  评论(0编辑  收藏  举报