安卓學(xué)習(xí)ndk必看!??!

有些同學(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)步?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容