有些同學(xué)可能看了我之前的文章,知道我在做什么,如果有不明白的,我在這里解釋下,其實我就是想在自己學(xué)習(xí)ndk開發(fā)的基礎(chǔ)上,整理出自己的所學(xué)所想,分享出來,對和我一樣有想在安卓開發(fā)進(jìn)階的路上取得提升的同學(xué)一點點幫助。
我自己最終是要想要掌握ffmpeg的開發(fā)。ffmpeg是一款屌炸天到?jīng)]朋友的開源框架,基本上可以處理一切的音視頻領(lǐng)域,據(jù)我了解到的,所有的播放器都是基于ffmpeg的開發(fā),如qq影音,暴風(fēng)影音,時下最火的抖音,頭條也是使用的ffmpeg進(jìn)行音視頻領(lǐng)域的開發(fā)。
ffmpeg主要包括視頻采集功能,視頻格式轉(zhuǎn)換,加水印等等十分強大的功能,各位可以直接百度一下ffmpge,看下百度百科里的介紹的比我詳細(xì)的多的多,我這里就不說廢話了。
有的人可能蒙蔽了,會說我不是在寫ndk學(xué)習(xí)嗎,怎么扯到ffmpeg上了,實際上ndk開發(fā)就是使用安卓進(jìn)行底層代碼的調(diào)用,也就是android和c,c++的交互。對于我們安卓開發(fā)來說,學(xué)會了ffmpeg框架,基本上所有的ndk開發(fā),都能順心應(yīng)手了。
之后我寫的文章可能會使很多人覺得亂七八糟,所以我這里需要提前描述下整套ffmpeg的開發(fā)流程,避免大家蒙蔽哈。
我們首先需要直接在ffmpeg官網(wǎng)上下載ffmpeg源碼,
1.我們需要使用ndk交叉編譯ffmpeg源碼為靜態(tài)庫(.a)或者動態(tài)庫(.so),靜態(tài)庫和動態(tài)庫唯一的區(qū)別就是是否需要分享出去供給別人使用,所以我下面統(tǒng)稱動態(tài)庫,所以我們需要學(xué)習(xí)ndk的交叉編譯。
2.很多動態(tài)庫的編譯在windows上是無法編譯的,只能在linux上編譯,所以我們需要學(xué)習(xí)linux系統(tǒng)以及基本指令的學(xué)習(xí)。
3.在linux系統(tǒng)中編譯需要使用到shell腳本,所以我們也需要學(xué)習(xí)shell腳本語法。
4.在linux上編譯好動態(tài)庫后,安卓需要使用jni去調(diào)用so庫,jni調(diào)用實際上就是java和c,c++的交互語言,動態(tài)庫都是c或者c++,ffmpeg源碼全是c編寫的,所以我們需要學(xué)習(xí)c語言,c++語言,jni語言等的學(xué)習(xí)。
5.要學(xué)習(xí)音視頻開發(fā),還要了解到音視頻編解碼等的知識
概述就是這樣,以上文章僅是我個人學(xué)習(xí)目標(biāo)和方法,如果有不對的地方,希望大家評論區(qū)指出,互相學(xué)習(xí),互相進(jìn)步?。?!