原來(lái)FFmpeg這么有意思(一)

前言

其實(shí)FFmpeg大家都耳熟能詳?shù)牡囊粋€(gè)東西了谆奥,知名的ijkplayer 就是有Bilibili開源出來(lái)的播放器也是基于FFmpeg做出來(lái)的。但是FFmpeg不僅僅止于音視頻的播放裁剪功能,還能干些更有趣的事情,就比如說(shuō)視頻的畫面拼接襟交,對(duì)于一個(gè)Android開發(fā)者來(lái)說(shuō),一想到FFmpeg c/c++是跑不掉的伤靠。下載官方庫(kù)捣域,然后編譯成不同平臺(tái)的so,然后在通過(guò)jni集成到項(xiàng)目中宴合,這一個(gè)開頭就難倒了不少開發(fā)者竟宋。一個(gè)問(wèn)題是如何編譯出這個(gè)so。如何把編譯好的文件集成到項(xiàng)目中形纺。這個(gè)我之后的文章會(huì)詳細(xì)說(shuō)明,這里我只和大家說(shuō)說(shuō)有趣在哪里徒欣。

說(shuō)道這里 我不得不說(shuō)逐样,現(xiàn)在各個(gè)大廠都在做統(tǒng)一前端的開發(fā)語(yǔ)言和框架,搞得開發(fā)者TMD頭都大打肝,其實(shí)不還是做得都是一些UI頁(yè)面而已脂新,通過(guò)不同的方式渲染而已,如果真的要做一些定制化的功能粗梭,還是離開不了原生争便。

Android FFmpeg視頻畫面拼接

通過(guò)標(biāo)題大家可能還是不太明白啥意思,我就上幾張我做的這個(gè)App的截圖吧断医,順便放幾張動(dòng)態(tài)圖滞乙,可能大家能知道個(gè)大概功能奏纪。其實(shí)大家看了之后,可能感覺感覺市面上已經(jīng)有做到了這種效果的App了斩启,但是作為一個(gè)Android攻城獅序调,必須要知道他是怎么做出來(lái)的,在ios上做這種效果很容易兔簇,有原生的Api提供发绢,但是苦逼的Android 那只能通過(guò)C/C++來(lái)實(shí)現(xiàn),原生搞的話很難垄琐。

這個(gè)App大概有以下功能(目前并未開源,項(xiàng)目地址

  • 視頻畫面拼接(主要的)
  • 視頻寬高裁剪
  • 視頻時(shí)長(zhǎng)裁剪
  • 添加視頻邊框及修改邊框顏色
  • 添加視頻封面
  • 添加視頻背景圖片
  • 添加視頻水印
  • 添加背景音樂

下面是App做出來(lái)的兩個(gè)視頻轉(zhuǎn)gif的圖片

threemegerone.gif
onebyone.gif

想看視頻的 話點(diǎn)擊下面的鏈接即可
三合一視頻
二合一視頻

這個(gè)app已有下面的頁(yè)面边酒,不過(guò)現(xiàn)在還沒有開源缸濒,還有很多地方要改据某。功能是實(shí)現(xiàn)了。但是頁(yè)面還有很多優(yōu)化的地方曲楚,所以啊 FFmpeg真的很牛逼朦前。接下來(lái)我會(huì)教大家自己怎么實(shí)現(xiàn)這個(gè)功能介杆。那么來(lái)看看做出來(lái)的視頻如何,某音好像沒有這個(gè)功能哦韭寸,

first.png
second.png
third.png
four.png

如何實(shí)現(xiàn)這種效果

這一期春哨,我只是教大家如何通過(guò)shell 命令實(shí)現(xiàn)一個(gè)視頻畫面拼接。首先從最基礎(chǔ)的功能來(lái)實(shí)現(xiàn)吧恩伺。然后在根據(jù)當(dāng)前的功能進(jìn)行擴(kuò)展赴背。至于FFmpeg庫(kù)的編譯,一時(shí)半會(huì)兒也說(shuō)不完晶渠。參數(shù)配置也很麻煩凰荚,尤其是不同的平臺(tái)坑很多。這里我就以最簡(jiǎn)單的方式交大家如何實(shí)現(xiàn)吧

第一步

既然要做功能褒脯,第一步當(dāng)然是找相應(yīng)的工具了便瑟,我們可以通過(guò)FFmpeg官網(wǎng)找到,對(duì)應(yīng)自己平臺(tái)的靜態(tài)庫(kù)番川,大家別下錯(cuò)了哈到涂,static binary不要下載錯(cuò)了,下載成源文件了颁督。因?yàn)楣俜揭呀?jīng)給我們編譯好了靜態(tài)庫(kù)践啄,可以直接通過(guò)shell 腳本就可以簡(jiǎn)單的走起來(lái)。

FFmpeg官方網(wǎng)站庫(kù)

打開鏈接沉御,我這邊選中的是mac os 可以看到底下提供了 static 庫(kù)屿讽。我們可以直接下載下來(lái)就行了。Ubuntu 和windows 都是一樣的 都有現(xiàn)成的庫(kù)吠裆》ヌ福可以下載下來(lái)烂完。

ffmpeg static.png

下載下來(lái)就是一個(gè)這個(gè)東西。我這邊大概71M衩婚。還挺大的窜护,因?yàn)槔锩婀俜浇o我們把大部分基本的功能都給編譯進(jìn)去了。所以這么大非春,但是如果我們自己編譯的話柱徙,會(huì)小很多∑骊迹可以吧一下不需要的東西直接disable


屏幕快照 2019-03-03 下午6.39.38.png

第二步

那當(dāng)然是打開我們的terminal,windows 直接win+R 然后cmd就ok护侮,然后cd 到我們下載的ffmpeg靜態(tài)庫(kù)的文件路徑,執(zhí)行一下命令储耐,不出意外的話羊初,這時(shí)候你應(yīng)該可以看到以下頁(yè)面

./ffmpeg

如果出現(xiàn)一下內(nèi)容,說(shuō)明這時(shí)候你的ffmpeg 已經(jīng)ok了

屏幕快照 2019-03-03 下午6.48.23.png

如果說(shuō)權(quán)限不足的話 什湘,cd到你的靜態(tài)庫(kù)路徑下執(zhí)行這個(gè)就可以了长赞。加個(gè)sudo,然后在change mode 一下 賦予777權(quán)限

chmod +x  ffmpeg
chmod 777 ffmpeg

這時(shí)候ffmpeg環(huán)境已經(jīng)準(zhǔn)備好了闽撤。接下來(lái)萬(wàn)事俱備只欠東風(fēng)了得哆。

第三步

視頻拼接,那么如何視頻拼接呢哟旗,不用擔(dān)心 ffmpeg 已經(jīng)給我們做好了相應(yīng)的封裝了贩据。只要了解相應(yīng)的命令就可以完成了最基礎(chǔ)的視頻拼接功能了。其實(shí)ffmpeg不僅僅如此啊闸餐,他的功能太強(qiáng)大了饱亮。

先簡(jiǎn)單的來(lái)幾個(gè)命令看看,查看視頻文件信息

./ffmpeg -i input.mp4

這時(shí)候我們可以看到視頻的具體信息fps舍沙,寬高啊近上,視頻質(zhì)量啊,等等很多信息

屏幕快照 2019-03-03 下午7.05.36.png

-i 的指令就是入?yún)⒌姆髡。酉聛?lái)我們直接看如何通過(guò)命令把一個(gè)視頻合在一起戈锻,就比如上面兩個(gè)視頻合在一起的小姐姐,我們通過(guò)電腦簡(jiǎn)單的來(lái)合成一下和媳。

./ffmpeg -i input2.mp4  -i input2.mp4  -filter_complex [0][1]vstack -y output.mp4 

成功的話應(yīng)該是以下頁(yè)面

屏幕快照 2019-03-03 下午7.06.08.png

這一個(gè)MP4文件是同級(jí)目錄下的文件,大家可以換成自己的文件名就可以哈街,至于filter_complex嗎留瞳?我這邊就大白話講了,就相當(dāng)于我們java 中的函數(shù)一樣骚秦,你把輸入給他 在這個(gè)方法體內(nèi)她倘,把相應(yīng)的輸出給你璧微。
vstack 可以官網(wǎng)看到這樣的介紹 Stack input videos vertically.就是垂直拼接視頻的意思,同理如何想水平的話硬梁,只要把vstack 改成hstack就可以了前硫,老鐵們是不是很簡(jiǎn)單,很給力荧止,

最主要的是自己通過(guò)命令行就可以完成一些視頻的基本操作屹电,什么ps,Photoshop跃巡,我命令行就ok了危号。哈哈哈哈哈哈哈哈

剛剛作出來(lái)的視頻效果,截圖給大家看看

vstack.png

說(shuō)好的小姐姐呢素邪,tmd 這是什么鬼很可怕外莲,博主換了個(gè)視頻 哈哈哈,但是這個(gè)效果的話產(chǎn)品看到會(huì)罵死人的兔朦,接下來(lái)的文章將會(huì)給大家講解如何優(yōu)化視頻效果偷线。

Ending

希望給老鐵們帶來(lái)的是知識(shí)的儲(chǔ)備而不是時(shí)間的浪費(fèi)。這一期就說(shuō)到這里沽甥,最簡(jiǎn)單的方式實(shí)現(xiàn)視頻畫面的拼接声邦,下一期將會(huì)給大家?guī)?lái)更多的內(nèi)容。大家也可以在留言里說(shuō)說(shuō)更想了解哪一方面的內(nèi)容安接。我會(huì)根據(jù)大家的意見來(lái)寫翔忽,

原來(lái)FFmpeg這么有意思 (二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盏檐,隨后出現(xiàn)的幾起案子歇式,更是在濱河造成了極大的恐慌,老刑警劉巖胡野,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件材失,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡硫豆,警方通過(guò)查閱死者的電腦和手機(jī)龙巨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)熊响,“玉大人旨别,你說(shuō)我怎么就攤上這事『骨眩” “怎么了秸弛?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我递览,道長(zhǎng)叼屠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任绞铃,我火速辦了婚禮镜雨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘儿捧。我一直安慰自己荚坞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布纯命。 她就那樣靜靜地躺著西剥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亿汞。 梳的紋絲不亂的頭發(fā)上瞭空,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音疗我,去河邊找鬼咆畏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吴裤,可吹牛的內(nèi)容都是我干的旧找。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麦牺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钮蛛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起剖膳,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魏颓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吱晒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甸饱,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年仑濒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹话。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墩瞳,死狀恐怖驼壶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喉酌,我是刑警寧澤辅柴,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布箩溃,位于F島的核電站,受9級(jí)特大地震影響碌嘀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歪架,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一股冗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧和蚪,春花似錦止状、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至催束,卻和暖如春集峦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抠刺。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工塔淤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人速妖。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓高蜂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親罕容。 傳聞我的和親對(duì)象是個(gè)殘疾皇子备恤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件锦秒、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,094評(píng)論 4 62
  • 概述 網(wǎng)上充斥著大量的 iOS FFmpeg 編譯的教程露泊,有的時(shí)間比較早了,有的很多都沒有說(shuō)詳細(xì)脂崔,或者有個(gè)別坑作者...
    ForestSen閱讀 25,738評(píng)論 26 186
  • 這次感冒是真滴難受滤淳。 原因和上次一樣,又是頭發(fā)沒吹干砌左,這次更過(guò)分脖咐,頭頂心還被吹了電風(fēng)扇。所謂自作孽吧汇歹。 第一天感覺...
    江江小流兒閱讀 233評(píng)論 0 0
  • 失眠的人無(wú)非兩種 一是手里拿著手機(jī) 二是腦子里有個(gè)劇場(chǎng)
    娜簡(jiǎn)書閱讀 135評(píng)論 0 1
  • 不知從什么時(shí)候開始弯囊,“情懷”在人們的討論語(yǔ)境中慢慢變得越來(lái)越不像個(gè)褒義詞。每每說(shuō)起胶果,仿佛總有半是“將就”半是“賣老...
    pizCat閱讀 483評(píng)論 0 0