說到 FFmpeg,大家都知道這個怪物一開始就是用來做視頻播放器的,之所以這么受歡迎涣仿,是因?yàn)槠浣獯a手段非常牛,簡單點(diǎn)說示惊,就是不支持的播放格式很少好港,這當(dāng)然就成了很多做視頻相關(guān)開發(fā)的小伙伴為之傾慕了。
博主今天來給大家科普一下怎么優(yōu)雅的使用 FFmpeg 這個讓做視頻相關(guān)的程序員又愛又恨的庫米罚,今天第一編钧汹,我們就來點(diǎn)簡單的,在 Mac 上利用 FFmpeg 將 fly 格式轉(zhuǎn)成 成 mp4格式录择,這個技巧這么實(shí)用拔莱,相信各位小伙伴都會為之喜好吧,那么我們首先得準(zhǔn)備好工具了隘竭。
工具:
1.Xcode
2.homebrew
沒錯塘秦,就是這兩個工具這么簡單,那我們按部就班动看,好好說一下該如何做尊剔,該如何優(yōu)雅的編譯~。
1菱皆、安裝 Xcode
首先你得有一只 Xcode须误,什么?你沒有 Xcode仇轻?趕緊用大師球去捕捉呀京痢!這里我就不在說 Xcode 如何安裝了(PS: AppStore就可以了)。
那為什么要安裝 Xcode 呀拯田?
`XCode`提供了Mac平臺開發(fā)環(huán)境必須的gcc編譯器历造,要注意的是`XCode` 安裝后并沒有命令行的gcc可用,
還需要打開`XCode`,在某個設(shè)置里添加Command Line Tools吭产,`XCode`就會自動下載并安裝好gcc侣监,
同時還有g(shù)it也被安裝了。
2臣淤、安裝 homebrew
homebrew 是什么橄霉?
`homebre` 是 Mac 平臺上的一個包管理工具,提供了許多 Mac 下沒有的 Linux工具等邑蒋,
而且安裝工具極其簡單姓蜂,一句命令行 gameOver。
那么医吊,我們該如何安裝 homebrew
或我該如何知道自己是否安裝了 homebrew
呢钱慢?
1)打開終端, 輸入 brew,得到的結(jié)果如下卿堂,則恭喜束莫,你已獲得 homebrew 一只我們直接跳過第二步吧。
2)看到這里草描,就說明你并沒有安裝 homebrew
了览绿,我們繼續(xù)在終端上輸入以下下命令行:
ruby -e “$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))”
當(dāng)這個命令執(zhí)行完后,再重復(fù) 1)我們就可以知道是否已經(jīng)安裝成功了穗慕。
3饿敲、安裝 FFmpeg
ffmpeg的官方網(wǎng)站是:http://ffmpeg.org/
什么?我們要去官網(wǎng) download 嗎逛绵?我們是優(yōu)雅的編譯好嗎怀各,我們沒有這么 low~。
1)利用我們上面的 homebrew术浪,在終端輸入以下命令行:
brew install ffmpeg
2)當(dāng)命令執(zhí)行完畢渠啤,我們再輸入:
brew info ffmpeg
看到以上這一大堆東西,我就知道我已經(jīng)安裝完畢了添吗,只是正如大家所見沥曹,有很多選擇庫博主并沒有安裝。
當(dāng)然碟联,如果小伙伴們?nèi)蘸笙肷?ffmpeg妓美,可以輸入以下命令行:
brew update && brew upgrade ffmpeg
經(jīng)過這3步,我們現(xiàn)在就可以使用ffmpeg的強(qiáng)大功能了鲤孵。
4壶栋、轉(zhuǎn)換視頻格式
首先我們準(zhǔn)備好一個 .flv 格式的小視頻,然后我們的目標(biāo)是要將這個 .flv 格式的小視頻轉(zhuǎn)換成 .mp4 格式的小視頻, 并將其碼率設(shè)置為 640kbps普监。
1)打開終端贵试,輸入以下命令行:
ffmpeg -i 天臺愛情故事.flv -b:v 640k 天臺愛情故事.mp4
只見終端啪啪啪的輸出以下:
ffmpeg version 2.6.3 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, flv, from '/Users/hejiancong/Downloads/天臺愛情故事.flv':
Duration: 00:01:06.87, start: 0.000000, bitrate: 448 kb/s
Stream #0:0: Video: flv1, yuv420p, 320x240, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: mp3, 22050 Hz, mono, s16p, 32 kb/s
[libx264 @ 0x7fd28201e400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x7fd28201e400] profile High, level 2.0
[libx264 @ 0x7fd28201e400] 264 - core 148 r2665 a01e339 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=7 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=640 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/Users/hejiancong/Downloads/天臺愛情故事.mp4':
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 320x240, q=-1--1, 640 kb/s, 15 fps, 15360 tbn, 15 tbc
Metadata:
encoder : Lavc56.26.100 libx264
Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 22050 Hz, mono, s16, 128 kb/s
Metadata:
encoder : Lavc56.26.100 libvo_aacenc
Stream mapping:
Stream #0:0 -> #0:0 (flv1 (flv) -> h264 (libx264))
Stream #0:1 -> #0:1 (mp3 (native) -> aac (libvo_aacenc))
Press [q] to stop, [?] for help
frame= 226 fps=0.0 q=17.0 size= 1080kB time=00:00:14.92 bitrate= 592.6kbits/frame= 418 fps=417 q=17.0 size= 2290kB time=00:00:27.74 bitrate= 676.0kbits/frame= 607 fps=404 q=16.0 size= 3422kB time=00:00:40.33 bitrate= 695.2kbits/frame= 800 fps=399 q=16.0 size= 4634kB time=00:00:53.24 bitrate= 713.1kbits/frame= 997 fps=398 q=14.0 size= 5949kB time=00:01:06.33 bitrate= 734.6kbits/frame= 999 fps=380 q=-1.0 Lsize= 6298kB time=00:01:06.89 bitrate= 771.2kbits/s
video:5222kB audio:1046kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.469799%
[libx264 @ 0x7fd28201e400] frame I:49 Avg QP:11.00 size: 8288
[libx264 @ 0x7fd28201e400] frame P:927 Avg QP:14.59 size: 5232
[libx264 @ 0x7fd28201e400] frame B:23 Avg QP:16.51 size: 3925
[libx264 @ 0x7fd28201e400] consecutive B-frames: 95.5% 4.2% 0.3% 0.0%
[libx264 @ 0x7fd28201e400] mb I I16..4: 15.3% 78.0% 6.7%
[libx264 @ 0x7fd28201e400] mb P I16..4: 3.8% 35.4% 2.7% P16..4: 31.0% 11.0% 6.0% 0.0% 0.0% skip:10.1%
[libx264 @ 0x7fd28201e400] mb B I16..4: 0.2% 9.5% 1.8% B16..8: 37.2% 14.0% 5.6% direct: 6.9% skip:24.6% L0:66.1% L1:15.1% BI:18.8%
[libx264 @ 0x7fd28201e400] final ratefactor: 13.12
[libx264 @ 0x7fd28201e400] 8x8 transform intra:83.8% inter:89.1%
[libx264 @ 0x7fd28201e400] coded y,uvDC,uvAC intra: 85.7% 96.0% 71.2% inter: 48.1% 61.6% 42.9%
[libx264 @ 0x7fd28201e400] i16 v,h,dc,p: 27% 25% 18% 29%
[libx264 @ 0x7fd28201e400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 24% 29% 4% 3% 3% 3% 5% 5%
[libx264 @ 0x7fd28201e400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 30% 11% 4% 4% 4% 3% 4% 4%
[libx264 @ 0x7fd28201e400] i8c dc,h,v,p: 52% 20% 20% 8%
[libx264 @ 0x7fd28201e400] Weighted P-Frames: Y:8.4% UV:5.4%
[libx264 @ 0x7fd28201e400] ref P L0: 75.2% 14.5% 7.6% 2.5% 0.3%
[libx264 @ 0x7fd28201e400] ref B L0: 92.3% 7.6% 0.1%
[libx264 @ 0x7fd28201e400] ref B L1: 99.0% 1.0%
[libx264 @ 0x7fd28201e400] kb/s:642.20
最后得到如下結(jié)果:
(__)
@end
好了琉兜,今天先說這么多,接下來我將帶打進(jìn)進(jìn)入如何在 IOS 上集成 FFmpeg 的大坑了
毙玻,準(zhǔn)備跟著博主的步伐入坑吧!