本帖最後由 IT_man 於 2017-3-28 13:02 編輯
+ n: Q5 N, f6 `0 a! N* y; N$ P) d% M6 k6 v/ z2 u* C
FFmpeg是一款强大的視訊編解碼工具,可以處理大量的編碼格式。ffmpeg是開放原碼,在Linux平台下開發,同時也可以在其它作業系统下編譯執行,包括Windows、Mac OS X等
! f* K' ~4 B6 M& {6 }* g: b, y
$ T) z. V$ i. Y x方法一:. x& s- j ^# x" B6 s$ |: Y! P. d
* C* H; p3 ^ b7 _3 \ y p; g[安裝]
0 y6 N! \( z1 i[/usr/local]#tar -jxvf ffmpeg-2.5.3.tar.bz28 C8 f3 D% L' u" Q) D
[/usr/local]#cd ffmpeg-2.5.3
Q) n: v" V, d0 g7 W+ A( P# ?* L% y x3 ~! g7 i
& M8 \5 k* N$ w5 c3 n/ t
安裝yasm$ v+ S5 Q) P& D b2 v: H b
ffmpeg編譯中為了提高compile速度,使用了匯編指令,于是需要使用這個工具。9 u' m1 n3 i: L9 Q
[/usr/local/ffmpeg-2.5.3]#yum -y install yasm
. w! b6 n1 B- c或者同樣使用源碼方式安裝,下載yasm源代碼,然后使用./configure、make以及make istall進行安裝: ~$ l4 I5 R8 }6 z
[/usr/local/ffmpeg-2.5.3]#./configure --enable-shared --prefix=/usr/local/ffmpeg/ J1 X% w$ g! m& s5 g: [7 S# f" [
其中–enable-shared表示產生動態連接庫,可以供以后編程使用,同時生成的可執行程序也依賴這些動態庫。如果不加上–enable-shared選項則使用靜態連接的方式編譯,此時不會產生動態庫,同時產生的ffmpeg等的可執行檔也比較大,但他們不需要動態庫就可以直接執行。
8 { A) ?) n- B–prefix表示工具安裝的目錄,這裡設為/usr/local/ffmpeg。* T, G2 c. Q- n' E
[/usr/local/ffmpeg-2.5.3]#make
0 ?- `& r" `) m2 o1 V[/usr/local/ffmpeg-2.5.3]#make install
) W7 D2 d( Y1 w9 o3 n1 X9 x, Y& Z" n) N+ |4 m: Z
7 r6 `- Y9 P4 D) ]路径處理:安裝完成后在/usr/local/ffmpeg產生三個目錄: - bin:可執行檔目錄
- lib:動態連接庫目錄
- include:編程用到的頭文件目錄
' b5 i1 T' G& f% Y% n 不管是藉由compile還是可執行程序的執行都需要依賴lib下面的動態庫,可以把里面的so文件拷貝到/usr/lib下,也可以直接修改配置文件。查看/etc/ld.so.conf文件:
6 M. [' g+ X3 B& _[/usr/local/ffmpeg-2.5.3]#vi /etc/ld.so.conf3 Y6 V& o: g) b: U7 l7 G
include ld.so.conf.d/*.conf
2 a; P8 a$ ?, p( i/ e+ }$ p. H/ Z8 B/ U) K
於是可以在/etc/ld.so.conf.d/建一個新的文件ffmpeg.conf,新增一行,即為ffmpeg的lib目錄:6 g3 j3 H( S( G( \7 o7 e
/usr/local/ffmpeg/lib4 Q/ d/ H6 F; I" n: }( @& t8 V
再執行ldconfig,更新ld.so.cache,使修改生效。When run ldconfig show error:
" ?1 }/ d P* v7 Tldconfig: /usr/lib64/libgd.so.2 不是一個符號連接檔 ==>" q$ o3 M7 F# o9 B+ S- ~# X& e
ll /usr/lib64/% O" o: e" Z3 E `8 w# m V
-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2
9 z+ o2 m# Z2 }4 _2 A: O-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2.0.0
$ w4 f" e1 o4 ^' c* YSo:
$ y9 b1 z. r0 s+ aln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2 就解決
7 g3 R+ {6 }8 n: X; t( b& P+ Z% F, j) H可以 vi /etc/ld.so.cache 看看/usr/local/ffmpeg/lib 是否已加入 cache中- ?1 L0 x& Y |+ p' j @" |
0 }' l; }& [+ h, [8 r
為了在任何地方能够直接用ffmpeg執行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式執行此工具,可以把可執行檔案複製到bin目錄下,或者在bin目錄下建立軟連結。類似于Windows下的捷徑,如果原可執行檔案被删除了,軟連結也不能繼續使用,而硬連結則可以繼續使用。建連結命令如下: 8 ^( o4 q/ i; i9 Y2 f0 ]3 Z. T
- j" |& h, }, a
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffmpeg .
8 p4 g8 l+ s$ k. ~1 Hsudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffprobe . 6 f2 N- `9 @' w3 ^% r. ^
sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffserver .
/ ]" o; `0 t8 N5 ?* |& r1 _
! B$ y( L' H: b# x+ n4 H5 p另外,如果需要包含ffmpeg的頭文件,最好將include目錄下的ffmpeg複製到/usr/include中。 Y8 y* k" m- I& r# T3 S
現在可以在shell中直接輸入ffmpeg執行,結果如下:
2 H1 \( T2 i+ T: [7 L4 ]
: ?% @0 D. V* V9 f
( \- E* i( h1 k" e R2 E8 {, O" X[root@CentOS6 bin]# ffmpeg
& j) M! R1 Z' \2 d; G* Lffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers: b4 W0 _8 H9 j: ^: h/ K+ v* p% O. E* {
built on Oct 9 2015 16:11:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4). J! r9 j# O& }1 d. X
configuration: --enable-shared --prefix=/usr/local/ffmpeg1 g! q5 ]$ Z c9 \% n- j# e
libavutil 54. 7.100 / 54. 7.100" o! P& q( ~: G- w' i' z. E
libavcodec 56. 1.100 / 56. 1.1002 n+ ~. g7 ~, g- d& A
libavformat 56. 4.100 / 56. 4.1004 q1 S/ A) j4 C) p) \/ k! P
libavdevice 56. 0.100 / 56. 0.100
/ S9 T2 {; Y/ G libavfilter 5. 1.100 / 5. 1.100
# a6 i2 S) V$ c" ]( \1 I libswscale 3. 0.100 / 3. 0.100
: z1 ]$ |' b) A& G4 C" I6 _0 k libswresample 1. 1.100 / 1. 1.100" |; a- F6 Y( C7 k/ O2 k
Hyper fast Audio and Video encoder3 n* c/ x4 T' f) {8 Z1 j
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
3 O' L6 W5 [; ?! h! b* AUse -h to get full help or, even better, run 'man ffmpeg'
! _& _! u% H! e# e1 P( y& d( ^; \% r9 {# z- T- e. d+ e1 y! `4 ~
方法二:
9 R: u7 u, x, ~5 u3 s# R( [9 b3 ]) \2 j a1 y
以 ffmpeginstaller 安裝 ffmpeg 相關套件:
) Q: K) d, C8 Q2 f4 u/ _3 j% e; G: g o8 ?* t3 j; Z* h
到http://ffmpeginstaller.com下載到指定的目錄,例如:/tmp/6 Z# W/ H; F3 l/ p$ y! m& e
解開壓縮檔後,會產生一個 ffmpeginstaller+版本號 的目錄,例如:我下載解開後的目錄為
7 B" t" U l- i3 s3 C% m. R$ {' M/tmp/ffmpeginstaller.8.0/0 |) O/ t% K! r( n, i
進去目錄後,下指令以執行3 o1 u: ~3 P$ @4 F) a; p
0 N1 H) G: ~! X/ u" r: b8 t* K2 w[root]# ./install' s5 Y, Z* v" R, f
+ y5 h: t1 G9 F0 [2 l* F安裝程式就會開始進行安裝,還會視情況自己上網去下載需要的檔案。
7 I5 ^! s" M& w& P) M其實這個安裝程式就是 yum install 的腳本,安裝過程大約 1 小時% W @/ C( X' Q: p
下圖是 ffmpeginstaller 會安裝跟ffmpeg相關的套件:9 g7 M. S+ F: i: J; _1 R
1 d2 h5 p( b: n7 [9 j( G
7 `& Z! I* M% j8 [0 H% L9 w5 U' i
. F( a0 H4 W/ q W' N$ {2 i參考原發: http://oldgrayduck.blogspot.tw/2 ... staller-ffmpeg.html
M2 w, `0 b; J: P/ H/ i0 _- k& Q: k4 `; b/ ?
3 J3 {/ S7 H$ `$ L4 ?3 U
$ r% ~& {. l' M5 J9 a) |' \+ q |