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当然这个要根据实际情况而定,就是安装的路径。
修改配置文件
- vim /etc/ld.so.conf
加入下面一句话
- /usr/local/ffmpeg/lib
重新加载配置文件
- ldconfig
到此该问题得以解决。
************** https://www.sunnyos.com/article-show-82.html ****************