下面是以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 ****************