tid=19906& 本帖最後由 IT_man 於 2017-3-28 13:02 編輯 8 P* \# _' S+ o2 U+ p @) a
0 R0 e! t& K ]" c* MFFmpeg是一款强大的視訊編解碼工具,可以處理大量的編碼格式。ffmpeg是開放原碼,在Linux平台下開發,同時也可以在其它作業系统下編譯執行,包括Windows、Mac OS X等
; w4 B# Y+ x5 M0 \0 k( j2 ]. Z4 R4 E7 W' T- j/ d D, ^+ L' g
方法一: k; ~1 ~2 h! f. q7 D) F0 O/ k$ k
* k# L3 _" w0 Z: z Y3 T& C- C4 Q- }[安裝]
+ ^6 v2 [8 M! s) b[/usr/local]#tar -jxvf ffmpeg-2.5.3.tar.bz2
* h4 N9 e. U# R' j% ?/ i[/usr/local]#cd ffmpeg-2.5.3
8 a' T f# j4 c" T0 O( Q- N% X- v1 k0 J2 N! q }7 E
; q# o$ \5 \& L7 B
安裝yasm. X1 K/ O1 H! w$ v: d
ffmpeg編譯中為了提高compile速度,使用了匯編指令,于是需要使用這個工具。4 u" k# i. T4 y |5 a
[/usr/local/ffmpeg-2.5.3]#yum -y install yasm2 \/ x, H4 F. G+ C+ `1 s$ G
或者同樣使用源碼方式安裝,下載yasm源代碼,然后使用./configure、make以及make istall進行安裝/ u. G6 Q1 e7 x+ @! h) S
[/usr/local/ffmpeg-2.5.3]#./configure --enable-shared --prefix=/usr/local/ffmpeg5 n, L1 i9 P& C/ C2 y
其中–enable-shared表示產生動態連接庫,可以供以后編程使用,同時生成的可執行程序也依賴這些動態庫。如果不加上–enable-shared選項則使用靜態連接的方式編譯,此時不會產生動態庫,同時產生的ffmpeg等的可執行檔也比較大,但他們不需要動態庫就可以直接執行。& [+ I4 G% d# c" i/ f
–prefix表示工具安裝的目錄,這裡設為/usr/local/ffmpeg。& @8 V+ e4 c: H: H
[/usr/local/ffmpeg-2.5.3]#make
5 ~% l! S) T5 G! c[/usr/local/ffmpeg-2.5.3]#make install
# P7 |0 ?9 e0 [3 L5 H" @) {
/ C4 I! c$ n, t3 l& K+ }, D/ h; p0 ?3 D f8 D
路径處理:安裝完成后在/usr/local/ffmpeg產生三個目錄: - bin:可執行檔目錄
- lib:動態連接庫目錄
- include:編程用到的頭文件目錄
6 R/ p: f1 f, f 不管是藉由compile還是可執行程序的執行都需要依賴lib下面的動態庫,可以把里面的so文件拷貝到/usr/lib下,也可以直接修改配置文件。查看/etc/ld.so.conf文件:
1 i# L9 U8 N1 z5 R. ]- X6 k[/usr/local/ffmpeg-2.5.3]#vi /etc/ld.so.conf
) Z& `% Q+ t6 j! I. b+ Pinclude ld.so.conf.d/*.conf
; R' ?. b& @; {$ L; X) d d
3 I& H, |& s' @於是可以在/etc/ld.so.conf.d/建一個新的文件ffmpeg.conf,新增一行,即為ffmpeg的lib目錄:
" r5 i9 E6 i* Y; A" z' L/usr/local/ffmpeg/lib
S$ s7 R) D! {, v+ `$ ~, L. `9 a5 n再執行ldconfig,更新ld.so.cache,使修改生效。When run ldconfig show error: e- b& }1 }6 p H
ldconfig: /usr/lib64/libgd.so.2 不是一個符號連接檔 ==>
# B: r7 o; p6 S5 D* Kll /usr/lib64/
% C# P& C) d: J( ]- P6 T& X; N6 y-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2
# F- h# b8 u0 Z2 P0 @-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2.0.0
( i7 ^) p5 O! ?# ySo:/ w8 I( `$ V& N. G& W4 H9 A. O
ln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2 就解決
8 | h7 X) H/ D, }+ S" D可以 vi /etc/ld.so.cache 看看/usr/local/ffmpeg/lib 是否已加入 cache中0 Q1 z* @0 y$ l# c7 B' F' d! Y
9 @: ^1 q) `4 H+ M
為了在任何地方能够直接用ffmpeg執行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式執行此工具,可以把可執行檔案複製到bin目錄下,或者在bin目錄下建立軟連結。類似于Windows下的捷徑,如果原可執行檔案被删除了,軟連結也不能繼續使用,而硬連結則可以繼續使用。建連結命令如下: 8 x6 B8 |0 _: M; c3 d, Y
; v5 g# `, m ^6 v" p, |' C& C+ f
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffmpeg .
$ }) |$ J+ v W) {# | d4 Wsudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffprobe . " g6 M! t1 Y6 G' \
sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffserver .
% w6 X- G' ~$ r1 F" w+ c$ W; a: w# w# s+ Y, y
另外,如果需要包含ffmpeg的頭文件,最好將include目錄下的ffmpeg複製到/usr/include中。0 n1 ^* Z6 q/ L- l
現在可以在shell中直接輸入ffmpeg執行,結果如下:# d& S [$ N. F
2 Q) `+ B6 F& A& y* I/ W/ h+ ^/ p
8 [6 i( H% d! }( m. \[root@CentOS6 bin]# ffmpeg/ v7 n0 n4 m. \) X
ffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
. P6 l6 ^0 c8 c- L: g$ K' P built on Oct 9 2015 16:11:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
8 {" _, V" h" @ configuration: --enable-shared --prefix=/usr/local/ffmpeg
, }+ v! o5 Y8 `, M, o libavutil 54. 7.100 / 54. 7.100
) ~/ |/ A, i& N6 k# h( Y libavcodec 56. 1.100 / 56. 1.100
% y, Z: a. M6 v; X0 ~: S6 G2 @3 u libavformat 56. 4.100 / 56. 4.100' {* Z$ X9 z# M# x0 i* E- T
libavdevice 56. 0.100 / 56. 0.100/ L8 S, \2 O& I* b# h! M
libavfilter 5. 1.100 / 5. 1.1009 D4 G* V- v! D+ j3 H/ x; L' G
libswscale 3. 0.100 / 3. 0.100, f" ?) O5 y. a7 h/ V
libswresample 1. 1.100 / 1. 1.100
6 e A2 n1 u) UHyper fast Audio and Video encoder
) h- H( o$ i( Nusage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
* H9 h3 @) E% {/ K; P- A9 S: n4 TUse -h to get full help or, even better, run 'man ffmpeg') F) D, b: r2 h8 R3 I6 \' y
; T9 e }9 z# r$ ]1 l方法二:
& b& `0 R9 _) z- g; p" F0 [+ x9 }+ ]) s4 z$ a
以 ffmpeginstaller 安裝 ffmpeg 相關套件:
: \: e2 g* z1 s5 S# e# z! w. H" \- X" O
到http://ffmpeginstaller.com下載到指定的目錄,例如:/tmp/0 m9 ~$ E& @3 g! Y
解開壓縮檔後,會產生一個 ffmpeginstaller+版本號 的目錄,例如:我下載解開後的目錄為" S% e6 [ L0 g$ B
/tmp/ffmpeginstaller.8.0/
' g) {- |. t9 [, L! x* U5 V% J進去目錄後,下指令以執行* y L- a. M( `7 L
0 u7 c! a2 t' w[root]# ./install
& N0 D- [# w6 T: U# @+ \0 h! Z: N
7 U4 x4 ^; W( q* f& T安裝程式就會開始進行安裝,還會視情況自己上網去下載需要的檔案。" _" K* X8 y: F0 ]
其實這個安裝程式就是 yum install 的腳本,安裝過程大約 1 小時* i7 P' V. c% g
下圖是 ffmpeginstaller 會安裝跟ffmpeg相關的套件:: K9 l5 }7 k, w. A$ J2 n7 r( a9 q, f
% p- s2 p+ q7 K' W# V' ^" n
# l; v5 u/ x, E/ Y5 j
3 W1 f# n! b0 X7 c! I1 H3 S參考原發: http://oldgrayduck.blogspot.tw/2 ... staller-ffmpeg.html' f& r g/ |2 N
4 O) }: v3 ]( p
4 x5 _5 e7 s# V0 ~7 q8 g
! l/ F- S+ d# N+ l6 e; `/ H' f0 F
|