iOS 利用FFmpeg 開發(fā)音視頻流(一)——Mac 系統(tǒng)上編譯 FFmpeg

說到 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 一只我們直接跳過第二步吧。

檢測是否安裝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
ffmpeg info

看到以上這一大堆東西,我就知道我已經(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普监。


.flv 格式的小視頻

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é)果:


.flv 格式小視頻 轉(zhuǎn)換 .mp4小視頻 成功

(__)


@end

好了琉兜,今天先說這么多,接下來我將帶打進(jìn)進(jìn)入如何在 IOS 上集成 FFmpeg 的大坑了
毙玻,準(zhǔn)備跟著博主的步伐入坑吧!

心如止水豌蟋,奮力前行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桑滩,隨后出現(xiàn)的幾起案子梧疲,更是在濱河造成了極大的恐慌,老刑警劉巖运准,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幌氮,死亡現(xiàn)場離奇詭異牧牢,居然都是意外死亡烈疚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門辕宏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韭畸,“玉大人慢洋,你說我怎么就攤上這事÷脚蹋” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵败明,是天一觀的道長隘马。 經(jīng)常有香客問我,道長妻顶,這世上最難降的妖魔是什么酸员? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮讳嘱,結(jié)果婚禮上幔嗦,老公的妹妹穿的比我還像新娘。我一直安慰自己沥潭,他們只是感情好邀泉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钝鸽,像睡著了一般汇恤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拔恰,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天因谎,我揣著相機(jī)與錄音,去河邊找鬼颜懊。 笑死财岔,一個胖子當(dāng)著我的面吹牛风皿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匠璧,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼桐款,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了患朱?” 一聲冷哼從身側(cè)響起鲁僚,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裁厅,沒想到半個月后冰沙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡执虹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年拓挥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袋励。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡侥啤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茬故,到底是詐尸還是另有隱情盖灸,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布磺芭,位于F島的核電站赁炎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钾腺。R本人自食惡果不足惜徙垫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望放棒。 院中可真熱鬧姻报,春花似錦、人聲如沸间螟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厢破。三九已至邮府,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溉奕,已是汗流浹背褂傀。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留加勤,地道東北人仙辟。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓同波,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叠国。 傳聞我的和親對象是個殘疾皇子未檩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容