本帖最後由 IT_man 於 2017-3-28 13:02 編輯
; s8 P% O4 c! s8 X5 B8 i8 T( d8 {+ I( |4 Y# X
FFmpeg是一款强大的視訊編解碼工具,可以處理大量的編碼格式。ffmpeg是開放原碼,在Linux平台下開發,同時也可以在其它作業系统下編譯執行,包括Windows、Mac OS X等# Q5 d/ s/ Z1 x
- T& p, t* A9 B+ f
方法一:9 m5 Z" C- q S- o
/ J3 p3 ]. N4 H/ c0 L[安裝]+ ^2 R ]( A# G' t6 U: L& T2 c
[/usr/local]#tar -jxvf ffmpeg-2.5.3.tar.bz2# p) \+ k) h8 v& M( y
[/usr/local]#cd ffmpeg-2.5.3$ i8 i+ m/ z4 Q% u: `, c0 y
, J. r7 h6 E5 H; ~) ~0 {
; S, Y( Y4 _0 L9 I1 W安裝yasm6 }" r+ i2 i2 @2 y+ [
ffmpeg編譯中為了提高compile速度,使用了匯編指令,于是需要使用這個工具。
6 @; G9 n, P1 F$ Y4 Z. Z: C8 d[/usr/local/ffmpeg-2.5.3]#yum -y install yasm! t- \; {8 o) P7 q* O& |1 K$ |' C
或者同樣使用源碼方式安裝,下載yasm源代碼,然后使用./configure、make以及make istall進行安裝; E- [- c7 S$ O- k) }/ e
[/usr/local/ffmpeg-2.5.3]#./configure --enable-shared --prefix=/usr/local/ffmpeg9 Y R! H; d3 r' s6 S- g" t: |
其中–enable-shared表示產生動態連接庫,可以供以后編程使用,同時生成的可執行程序也依賴這些動態庫。如果不加上–enable-shared選項則使用靜態連接的方式編譯,此時不會產生動態庫,同時產生的ffmpeg等的可執行檔也比較大,但他們不需要動態庫就可以直接執行。
+ p! [1 n& D6 k( s m A–prefix表示工具安裝的目錄,這裡設為/usr/local/ffmpeg。
& }- L) w9 t. b, Y9 N. `[/usr/local/ffmpeg-2.5.3]#make 2 b8 H; E: Q. }5 s4 }8 C
[/usr/local/ffmpeg-2.5.3]#make install - r1 o9 i- ^5 z8 V
% S# q+ B* t) q( @- N. r
) I: w( \, n z: H路径處理:安裝完成后在/usr/local/ffmpeg產生三個目錄: - bin:可執行檔目錄
- lib:動態連接庫目錄
- include:編程用到的頭文件目錄
$ `; H i B: L' @; c3 Z6 |- W" N 不管是藉由compile還是可執行程序的執行都需要依賴lib下面的動態庫,可以把里面的so文件拷貝到/usr/lib下,也可以直接修改配置文件。查看/etc/ld.so.conf文件:2 ?$ r, ^7 C4 {, ?* u$ _4 e4 E
[/usr/local/ffmpeg-2.5.3]#vi /etc/ld.so.conf- e" ~1 Q, t/ y
include ld.so.conf.d/*.conf
1 |$ t* q3 X- @" f% y# R& }' u1 Q# v1 n* G2 |: r% k) r7 y
於是可以在/etc/ld.so.conf.d/建一個新的文件ffmpeg.conf,新增一行,即為ffmpeg的lib目錄:7 y( B3 S4 w B% V
/usr/local/ffmpeg/lib
9 A/ Y5 {& D" @, G- i0 X b3 A+ }再執行ldconfig,更新ld.so.cache,使修改生效。When run ldconfig show error:
. o9 i2 K% D; j/ h$ bldconfig: /usr/lib64/libgd.so.2 不是一個符號連接檔 ==>
& P) O$ \/ w9 u4 Rll /usr/lib64/
c) y% F8 u& z& S& o" ~" D; g. A-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2 [' T7 e6 ?9 u; X( `9 y' @
-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2.0.0
( H7 P$ M& B$ l) HSo:, X6 h; B7 ?) M2 D; J8 B9 y% G G
ln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2 就解決9 v1 L: Z% V/ B$ A! V
可以 vi /etc/ld.so.cache 看看/usr/local/ffmpeg/lib 是否已加入 cache中
6 m: @# a. V7 U1 P+ Y: N+ s! J
" M3 @6 V* U# W/ }" d為了在任何地方能够直接用ffmpeg執行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式執行此工具,可以把可執行檔案複製到bin目錄下,或者在bin目錄下建立軟連結。類似于Windows下的捷徑,如果原可執行檔案被删除了,軟連結也不能繼續使用,而硬連結則可以繼續使用。建連結命令如下:
& ]8 g3 q. F |; S# _: [0 `: ]1 h4 d! x5 b" J5 f
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffmpeg . ) y& u& w- p# |, ]: s( @! P
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffprobe . % b* o: u! E. ~9 R7 z. M
sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffserver .
4 D$ {4 t1 t4 u* ~. g1 {/ A7 w
* L; W' m( w- {# `8 S另外,如果需要包含ffmpeg的頭文件,最好將include目錄下的ffmpeg複製到/usr/include中。' y( _( }( O0 p! _6 ?3 ^7 h; D3 {9 v
現在可以在shell中直接輸入ffmpeg執行,結果如下:- v; L% B! c1 g; Q+ u5 D. h
* |% h! K5 A5 J$ B+ q3 r) A4 ^ E6 o9 t6 ]6 P
[root@CentOS6 bin]# ffmpeg
5 U. q+ _$ f# o& u# U6 O% i' w: zffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
! D+ e( }7 F% ~/ v: l+ z( h* y built on Oct 9 2015 16:11:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
6 @' p- d2 d7 `9 H# e configuration: --enable-shared --prefix=/usr/local/ffmpeg
# b: e E- D/ I4 |5 m8 L libavutil 54. 7.100 / 54. 7.100
+ K: I N' T0 P/ {3 K% t libavcodec 56. 1.100 / 56. 1.100
9 d- E2 H F+ _$ E5 } libavformat 56. 4.100 / 56. 4.100/ q* r# A9 ? V! ?
libavdevice 56. 0.100 / 56. 0.1008 B( j8 g' F+ Y( q( ~
libavfilter 5. 1.100 / 5. 1.100
5 A. C6 a* @# [: n& `8 { libswscale 3. 0.100 / 3. 0.100
) w/ a- V; M0 r9 W4 F# @ libswresample 1. 1.100 / 1. 1.1001 Q/ j4 s) ^3 R; J2 {+ D- |
Hyper fast Audio and Video encoder. }' P0 g/ X0 Y$ R1 e" i
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}.../ W; j0 Q' }2 ~8 b5 P. ~8 d: p
Use -h to get full help or, even better, run 'man ffmpeg'
% a2 ]+ C4 c- j) Y# _3 o7 x8 z! z; Y) w) U3 f) w8 Z
方法二:
. c5 i I* ~5 ~! L
; P2 \! L4 D' W以 ffmpeginstaller 安裝 ffmpeg 相關套件:6 @1 R! m5 g- I. @5 V! s
6 n9 E2 f9 K% G0 M
到http://ffmpeginstaller.com下載到指定的目錄,例如:/tmp/' p; m; D. x8 b4 x4 C2 P$ w! `
解開壓縮檔後,會產生一個 ffmpeginstaller+版本號 的目錄,例如:我下載解開後的目錄為- R" J9 T; e/ b, s& U" A
/tmp/ffmpeginstaller.8.0/
' |0 P! W5 D% B G- ^2 e" S# t進去目錄後,下指令以執行
: U8 x# M- L! o* u) x: e, ?& Q* q/ f! K0 ]2 N
[root]# ./install
1 h0 ~' @3 H/ i; v/ D7 M8 n
/ p2 `: y0 p. i& H/ v$ m安裝程式就會開始進行安裝,還會視情況自己上網去下載需要的檔案。
1 @5 g5 v# g7 {& s其實這個安裝程式就是 yum install 的腳本,安裝過程大約 1 小時
0 r3 q; B ~5 y) V0 G2 Z. `$ ?下圖是 ffmpeginstaller 會安裝跟ffmpeg相關的套件: u2 u0 P' d# m1 W
- q- H. w% h4 H9 m# _* S* {& C2 }
: y0 @( K$ F; c( q" f2 M. [ L2 Y
參考原發: http://oldgrayduck.blogspot.tw/2 ... staller-ffmpeg.html
% `( Q. n; G$ r# y! R: Q
2 v1 z& D% Y z% P7 d1 t$ L8 V/ M/ O7 o" ^' v4 x# K
D% \" d7 J! A ]4 Q6 o |