tid=19906& 本帖最後由 IT_man 於 2017-3-28 13:02 編輯
% p+ F p, _" V8 r$ X5 _7 C- d& C6 k9 u
FFmpeg是一款强大的視訊編解碼工具,可以處理大量的編碼格式。ffmpeg是開放原碼,在Linux平台下開發,同時也可以在其它作業系统下編譯執行,包括Windows、Mac OS X等4 z. O3 x/ c. [( Q0 ~! U3 K2 t* @0 R
4 t g/ V$ ]8 n- j" s+ D$ y
方法一:0 L6 D: q# R9 P7 ?6 [ F
$ V( N1 a- i8 k3 s% }7 k. G
[安裝]
1 B. J. V1 b* x+ A* K4 k r7 B( i[/usr/local]#tar -jxvf ffmpeg-2.5.3.tar.bz2
" m. @( m7 K5 @& Y' H5 D[/usr/local]#cd ffmpeg-2.5.3" m7 G/ J9 U3 E7 Z) a
& @- r& ]' s) }0 M
4 N! G0 S* O2 r V
安裝yasm" m, Q6 j$ M, \. I% Y) @, c( n8 j
ffmpeg編譯中為了提高compile速度,使用了匯編指令,于是需要使用這個工具。2 k9 k m4 F' Y5 E
[/usr/local/ffmpeg-2.5.3]#yum -y install yasm) n. X! V& r' n0 _
或者同樣使用源碼方式安裝,下載yasm源代碼,然后使用./configure、make以及make istall進行安裝
% p, e3 X x) P% ?[/usr/local/ffmpeg-2.5.3]#./configure --enable-shared --prefix=/usr/local/ffmpeg) I7 B3 t9 x7 U5 e5 k
其中–enable-shared表示產生動態連接庫,可以供以后編程使用,同時生成的可執行程序也依賴這些動態庫。如果不加上–enable-shared選項則使用靜態連接的方式編譯,此時不會產生動態庫,同時產生的ffmpeg等的可執行檔也比較大,但他們不需要動態庫就可以直接執行。
( v3 a, _+ ?. z+ p–prefix表示工具安裝的目錄,這裡設為/usr/local/ffmpeg。' Q7 X2 t6 I/ [! _) L- t0 q
[/usr/local/ffmpeg-2.5.3]#make 7 ?- F: j3 e- m* D2 o+ Z
[/usr/local/ffmpeg-2.5.3]#make install
! C4 t$ h4 c7 r% J$ P8 x% x. x9 E* O/ |- }! L* j6 j; Q% U0 R
- r: F9 c4 f& y$ U0 r
路径處理:安裝完成后在/usr/local/ffmpeg產生三個目錄: - bin:可執行檔目錄
- lib:動態連接庫目錄
- include:編程用到的頭文件目錄
4 }( T' A' V; i. q- c 不管是藉由compile還是可執行程序的執行都需要依賴lib下面的動態庫,可以把里面的so文件拷貝到/usr/lib下,也可以直接修改配置文件。查看/etc/ld.so.conf文件:6 |5 o+ \5 |" i: P
[/usr/local/ffmpeg-2.5.3]#vi /etc/ld.so.conf
" A/ u7 k/ J; s) b- C1 N j! @include ld.so.conf.d/*.conf3 D9 d$ U0 P! p; r9 a% p
7 C( H! C* V- f3 k+ g- N6 I* z1 A4 ^於是可以在/etc/ld.so.conf.d/建一個新的文件ffmpeg.conf,新增一行,即為ffmpeg的lib目錄:& H5 ^- d1 D& T7 ?( c
/usr/local/ffmpeg/lib
* y* X G- @' k0 R Y" j再執行ldconfig,更新ld.so.cache,使修改生效。When run ldconfig show error:
& N- D: E9 M+ D! t* Uldconfig: /usr/lib64/libgd.so.2 不是一個符號連接檔 ==>' K6 a- F9 x/ j% z: X5 B- S) O
ll /usr/lib64/
* X. g% }; Y2 \% I1 R! V; U-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2
& t5 Y) z, x8 M: s-rwxr-xr-x 1 root root 275328 2015-01-11 08:03 /usr/lib64/libgd.so.2.0.0) P5 N8 H0 w- w; j: j
So:$ |5 g- m; f; ]" u, j5 z
ln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2 就解決
4 U. o( t& d/ U4 |6 `1 \8 g可以 vi /etc/ld.so.cache 看看/usr/local/ffmpeg/lib 是否已加入 cache中2 O0 x3 {( G4 k
4 z5 Q: m. ?* R; d3 U5 ?為了在任何地方能够直接用ffmpeg執行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式執行此工具,可以把可執行檔案複製到bin目錄下,或者在bin目錄下建立軟連結。類似于Windows下的捷徑,如果原可執行檔案被删除了,軟連結也不能繼續使用,而硬連結則可以繼續使用。建連結命令如下: ) m4 a6 s: D0 C7 n7 H( ~4 Q: t k
& x2 e7 I5 }" o [/ Y3 ]& z" r
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffmpeg .
/ ?; `2 M; g' A9 u5 A. psudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffprobe . ' I0 I. t2 t0 g) ?; \, |7 d; o
sudo ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/ or [/usr/local/bin]# sudo ln -s /usr/local/ffmpeg/bin/ffserver . # W4 ~8 Y7 J, j) S
: ~8 c0 r$ n4 A3 N* U7 E另外,如果需要包含ffmpeg的頭文件,最好將include目錄下的ffmpeg複製到/usr/include中。& o5 \; z8 d1 {: e. V# }
現在可以在shell中直接輸入ffmpeg執行,結果如下:
9 _3 Z, A5 `0 T; v1 Q. J
; ]% Y- c; b J
& K. v4 X7 d! n4 _) G[root@CentOS6 bin]# ffmpeg
) T# k0 d- Y- f- ? L. effmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
$ I5 S C0 P/ V5 r built on Oct 9 2015 16:11:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)$ G& S8 s- }6 T6 P) J/ ^8 Q8 ?
configuration: --enable-shared --prefix=/usr/local/ffmpeg+ s3 f/ E9 q) F% y: E5 j8 F8 z
libavutil 54. 7.100 / 54. 7.1005 A+ v" f$ c2 H! ?* O: w P8 z
libavcodec 56. 1.100 / 56. 1.100
. ?, n( J; e. Q _ libavformat 56. 4.100 / 56. 4.100
5 b8 h% e; v/ ^8 p; A libavdevice 56. 0.100 / 56. 0.100
" l, m3 u( \0 z* i; D libavfilter 5. 1.100 / 5. 1.100
k) }5 P1 a; c- K libswscale 3. 0.100 / 3. 0.100$ E* M! s$ o& w, E
libswresample 1. 1.100 / 1. 1.100
/ o) S- t! E+ R( E' MHyper fast Audio and Video encoder2 I: p5 M6 @, p. F
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
- J$ v1 A1 ~0 UUse -h to get full help or, even better, run 'man ffmpeg'" _+ {! P o" o5 s) f. D' _
! |% E& ?5 } F3 w4 Q# Y方法二:
. P+ P8 P1 ]) X; v9 j
" q/ Y1 I' n3 n0 S以 ffmpeginstaller 安裝 ffmpeg 相關套件:
# I" q- p/ d" k- b
; @& |. s$ p$ v* z到http://ffmpeginstaller.com下載到指定的目錄,例如:/tmp/& A: e C' S' \% @. y
解開壓縮檔後,會產生一個 ffmpeginstaller+版本號 的目錄,例如:我下載解開後的目錄為& C) B$ W( D0 P/ h* K: w
/tmp/ffmpeginstaller.8.0/0 i6 b% A: i5 O" o
進去目錄後,下指令以執行
/ j) G+ y+ x9 E7 L' P3 O; p
1 L* `3 c! g7 m! t) S5 J[root]# ./install
* {( o' o e7 A0 @: n; H# |7 k4 _) c7 b: |' K
安裝程式就會開始進行安裝,還會視情況自己上網去下載需要的檔案。
( X. M, y" j+ O- c, _其實這個安裝程式就是 yum install 的腳本,安裝過程大約 1 小時
( L4 F1 D7 _+ g+ ~8 X下圖是 ffmpeginstaller 會安裝跟ffmpeg相關的套件:
! m0 k+ |7 e. e5 V& Y. f
3 s( l* \+ \/ Z$ X2 t7 z
/ X5 a* {1 | c- [+ C2 z/ z( p! }6 V8 V$ x6 P1 G- I3 \7 a0 N' d
參考原發: http://oldgrayduck.blogspot.tw/2 ... staller-ffmpeg.html
& j7 ` u" e% Q) J) _6 z2 z, L. ^$ `/ ?6 {+ K7 p) Q$ O5 w
! l! q4 J( @+ a' {% |3 |3 A
5 V! n* {# f. u) J1 q( n, A: I1 D |