本帖最後由 IT_man 於 2017-3-28 13:02 編輯 5 s, x5 ~' G( \. T0 D4 M9 b
+ v$ n# c/ G' Z9 y
FFmpeg是一款强大的視訊編解碼工具,可以處理大量的編碼格式。ffmpeg是開放原碼,在Linux平台下開發,同時也可以在其它作業系统下編譯執行,包括Windows、Mac OS X等- k$ }1 y5 q0 ^, ]9 U5 q; ^
; L+ d+ E' k3 ~/ t% ~1 ~% V方法一:' `. l' }! Y/ i/ R& \! C8 }
3 P" l* y4 A" U8 m
[安裝]6 z! n/ e3 w3 `* ?; i8 J4 \$ T' k' H
[/usr/local]#tar -jxvf ffmpeg-2.5.3.tar.bz2
6 x1 E' ^* u7 V: h) |7 G9 |3 O( P[/usr/local]#cd ffmpeg-2.5.32 I1 y9 K9 J5 e$ F- @
! R7 V& o# {: [3 U
/ G" T( W( m$ Q/ x" `" |安裝yasm* }, n: [7 D% H! j
ffmpeg編譯中為了提高compile速度,使用了匯編指令,于是需要使用這個工具。" Q7 t( e/ r+ \2 T* p& N0 C
[/usr/local/ffmpeg-2.5.3]#yum -y install yasm/ m4 C4 ?( b2 L
或者同樣使用源碼方式安裝,下載yasm源代碼,然后使用./configure、make以及make istall進行安裝2 M( S/ U; E$ O H, R+ _/ u
[/usr/local/ffmpeg-2.5.3]#./configure --enable-shared --prefix=/usr/local/ffmpeg, ~8 J6 r/ d( F- [
其中–enable-shared表示產生動態連接庫,可以供以后編程使用,同時生成的可執行程序也依賴這些動態庫。如果不加上–enable-shared選項則使用靜態連接的方式編譯,此時不會產生動態庫,同時產生的ffmpeg等的可執行檔也比較大,但他們不需要動態庫就可以直接執行。3 ^$ s( w, e( w
–prefix表示工具安裝的目錄,這裡設為/usr/local/ffmpeg。) v- f% \( ~: K% f$ @- A& O) B# S
[/usr/local/ffmpeg-2.5.3]#make ; }& y* s& m# d4 X3 r! k) i
[/usr/local/ffmpeg-2.5.3]#make install & @% y f! }" e& H
6 L0 S4 e( N3 s: a5 d3 K
6 {/ I7 b3 J& q' o
路径處理:安裝完成后在/usr/local/ffmpeg產生三個目錄: - bin:可執行檔目錄
- lib:動態連接庫目錄
- include:編程用到的頭文件目錄8 [+ i2 @, q, K. ?5 V* g
不管是藉由compile還是可執行程序的執行都需要依賴lib下面的動態庫,可以把里面的so文件拷貝到/usr/lib下,也可以直接修改配置文件。查看/etc/ld.so.conf文件:
7 V. `4 q" D: |. M( U7 k[/usr/local/ffmpeg-2.5.3]#vi /etc/ld.so.conf
. ^3 R: O8 w$ i% _; Dinclude ld.so.conf.d/*.conf+ \4 t3 s% W+ }' W$ B
0 j& w2 ~; q" P ~( h2 ]) Q8 a5 ]
於是可以在/etc/ld.so.conf.d/建一個新的文件ffmpeg.conf,新增一行,即為ffmpeg的lib目錄:" d9 ^! y8 J7 @( U
/usr/local/ffmpeg/lib* Q; Z" z9 [9 I! f
再執行ldconfig,更新ld.so.cache,使修改生效。When run ldconfig show error:
/ G# f/ B& ~% c& x& uldconfig: /usr/lib64/libgd.so.2 不是一個符號連接檔 ==>, T, i3 G* x3 n( f+ b
ll /usr/lib64/
0 L$ v& Q/ P' o3 D+ R-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.28 L- N0 f0 f% \) R+ ?2 w: X
-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2.0.03 l! A+ Y, ?% _& i
So:& ]2 k, v: v+ q: ]/ W1 r. m
ln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2 就解決, z v$ w/ }+ _
可以 vi /etc/ld.so.cache 看看/usr/local/ffmpeg/lib 是否已加入 cache中, M! ]' p% F( W4 k: t: G, N
9 C6 ]4 ]3 P- z7 o7 F0 c/ P2 T' J
為了在任何地方能够直接用ffmpeg執行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式執行此工具,可以把可執行檔案複製到bin目錄下,或者在bin目錄下建立軟連結。類似于Windows下的捷徑,如果原可執行檔案被删除了,軟連結也不能繼續使用,而硬連結則可以繼續使用。建連結命令如下:
5 N0 k. X1 M6 K; E. \
4 w$ w; _3 c# r4 F0 m2 zsudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffmpeg .
% D$ `- Y2 c6 M. r' Rsudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffprobe .
' @. ? Z0 c; I. {4 qsudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffserver . . z1 n! `4 ~8 R/ a5 Z) F0 k: s
8 L, K" _. `3 z) j& k) E7 R另外,如果需要包含ffmpeg的頭文件,最好將include目錄下的ffmpeg複製到/usr/include中。9 t3 t Q" ~% W( i! v$ d+ e6 [
現在可以在shell中直接輸入ffmpeg執行,結果如下:; b/ q" |. `3 m c: z. y
$ n9 C' ^$ |7 `. Q9 i& O
6 n& Y9 h. z% u7 F5 R& F[root@CentOS6 bin]# ffmpeg3 T$ S9 x2 f* z, ~) U
ffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
9 L* B7 W* }' `+ f$ W built on Oct 9 2015 16:11:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4), k$ e+ G* j4 O
configuration: --enable-shared --prefix=/usr/local/ffmpeg
1 ]& g8 U- \+ F2 V ~' [ libavutil 54. 7.100 / 54. 7.100
+ U3 b$ F) U# A8 k' O1 J% v* u& L libavcodec 56. 1.100 / 56. 1.100
0 J: g' J9 e3 s: f0 ]8 Z libavformat 56. 4.100 / 56. 4.100- }3 v$ @& ^) Z0 \
libavdevice 56. 0.100 / 56. 0.100( \1 t- \% f ?0 S4 U! L) c
libavfilter 5. 1.100 / 5. 1.100
9 v4 V m3 V2 G/ D5 R libswscale 3. 0.100 / 3. 0.1005 }! P# ?6 P$ F- x$ I) O+ F& s6 R/ Y
libswresample 1. 1.100 / 1. 1.100( ?9 B" J3 F; v5 @# @, I
Hyper fast Audio and Video encoder
1 k9 O( _8 }6 _3 u1 }6 i$ N0 zusage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...5 `" ]4 F' f! e9 a5 L2 a E
Use -h to get full help or, even better, run 'man ffmpeg', v9 V; i9 y# l1 w! f; u
( E6 m( C9 I! ~8 i方法二:
9 ]- ~- H: s, f/ M$ }2 p1 Q% t3 X, J3 E9 [+ t
以 ffmpeginstaller 安裝 ffmpeg 相關套件:
/ r$ Q/ ^2 W. }: m( c! O- Z0 X, p3 U5 E
到http://ffmpeginstaller.com下載到指定的目錄,例如:/tmp/3 T2 b4 d1 v0 Q( G, r
解開壓縮檔後,會產生一個 ffmpeginstaller+版本號 的目錄,例如:我下載解開後的目錄為6 j7 x4 A; @' k' l* B4 n
/tmp/ffmpeginstaller.8.0/
% E1 P- f8 f9 O2 r* C& I( Y進去目錄後,下指令以執行
/ s) h5 A2 A' ^4 m# ?9 g
) {- X2 E+ D( S[root]# ./install' \9 u3 n9 }$ t5 E9 {
- n/ [7 ? \* Z7 i8 g安裝程式就會開始進行安裝,還會視情況自己上網去下載需要的檔案。
6 b }+ i. {: l其實這個安裝程式就是 yum install 的腳本,安裝過程大約 1 小時2 N/ S1 R% ?) x, `6 p! s: D
下圖是 ffmpeginstaller 會安裝跟ffmpeg相關的套件:
: P% U9 E- Y0 P! _* t! P
' f) H# h& z6 F
3 V/ a' |; g* f6 a1 Q
" F$ e O3 M* z7 h0 B7 _7 |
參考原發: http://oldgrayduck.blogspot.tw/2 ... staller-ffmpeg.html' t' ^% H/ T2 k4 p; f0 I D
8 [+ J. J* E6 J6 m6 f- t
5 d- Q7 M. r- h* d" u, |0 x' I- \0 s% T* G
|
|