現(xiàn)在隨著音視頻的應(yīng)用越來越多,直接使用系統(tǒng)原生相機(jī)進(jìn)行拍照裁剪和拍視頻伊佃,已經(jīng)不能滿足需求了。
需要通過Camera API進(jìn)行自定義相機(jī)開發(fā)沛善,滿足一些復(fù)雜的業(yè)務(wù)場(chǎng)景航揉,開篇先介紹Camera的基礎(chǔ)知識(shí),為后面Camera開發(fā)提供支持金刁。
基礎(chǔ)知識(shí)
Android Framework提供Camera API來實(shí)現(xiàn)拍照與錄制視頻的功能帅涂,目前Android有三類API,
-
Camera
此類是用于控制設(shè)備相機(jī)的舊版 API尤蛮,現(xiàn)已棄用媳友,在Android5.0以下使用 -
Camera2
此軟件包是用于控制設(shè)備相機(jī)的主要 API,Android5.0以上使用 -
CameraX
基于Camera 2 API封裝产捞,簡(jiǎn)化了開發(fā)流程醇锚,并增加生命周期控制
相關(guān)開發(fā)類
-
android.hardware.camera2
控制相機(jī)的核心API,使用它可以實(shí)現(xiàn)拍照和錄制視頻的功能坯临。 -
Camera
此類是用于控制設(shè)備相機(jī)的舊版 API搂抒,現(xiàn)已棄用。 -
SurfaceView
此類用于向用戶呈現(xiàn)實(shí)時(shí)相機(jī)預(yù)覽尿扯。 -
TextureView
也是用于實(shí)時(shí)相機(jī)預(yù)覽,Android4.0之后引入 -
MediaRecorder
用于錄制視頻 -
Intent
MediaStore.ACTION_IMAGE_CAPTURE 或 MediaStore.ACTION_VIDEO_CAPTURE 的 Intent 操作類型可用于捕獲圖像或視頻焰雕,而無需直接使用 Camera 對(duì)象衷笋。
術(shù)語
-
ISO(感光度)
CMOS(或膠卷)對(duì)光線的敏感程度,用ISO100的膠卷矩屁,相機(jī)2秒可以正確曝光的話辟宗,同樣光線條件下用ISO200的膠卷只需要1秒即可,用ISO400則只要0.5秒吝秕。
常見的標(biāo)準(zhǔn):ISO100泊脐,ISO200,ISO400 -
曝光時(shí)間
曝光時(shí)間是為了將光投射到相機(jī)感光片上烁峭,相機(jī)快門所要打開至關(guān)閉的時(shí)間 -
光圈
用來控制光線透過鏡頭容客,進(jìn)入相機(jī)內(nèi)感光面光量的裝置 -
焦距
指的是平行的光線穿過鏡片后,所匯集的焦點(diǎn)至鏡片間之距離约郁。
數(shù)值越小缩挑,代表可以拍攝的角度越廣,數(shù)值越大鬓梅,代表可以拍攝的角度越小 -
景深
拍攝時(shí)供置,當(dāng)鏡頭聚集于某個(gè)被攝體時(shí),這個(gè)被攝體就能在相機(jī)上結(jié)成清晰影像绽快。使被攝體產(chǎn)生較為清晰影像的縱深的范圍叫景深 -
測(cè)光
測(cè)光模式:中央平均測(cè)光(average metering)芥丧、中央局部測(cè)光紧阔、點(diǎn)測(cè)光(spot metering)、多點(diǎn)測(cè)光续担、評(píng)價(jià)測(cè)光 -
自動(dòng)曝光(Auto Exposure)
相機(jī)根據(jù)光線條件自動(dòng)來調(diào)整曝光時(shí)間等來確定曝光量 -
對(duì)焦
對(duì)焦模式:自動(dòng)對(duì)焦 AE(Auto Focus)擅耽、手動(dòng)對(duì)焦 MF(Manual Focus)
自動(dòng)對(duì)焦分為對(duì)比度對(duì)焦(contrast)、相位對(duì)焦(PDAF: Phase Detection Auto Focus)和混合對(duì)焦(hybrid) -
閃光燈(Flashlight)
通過閃光燈打閃照亮物體來達(dá)到拍出清晰圖片的目的 -
ScreenFlash
通過屏幕打閃赤拒,照亮周圍物體秫筏,拍出高清圖片 -
高動(dòng)態(tài)范圍圖像(HDR)
HDR全稱是High-Dynamic Range,即高動(dòng)態(tài)范圍圖像技術(shù)挎挖。在拍照過程中開啟HDR这敬,可以讓原先的暗場(chǎng)景變得更明亮更通透。 -
零延時(shí)拍照(ZSD)
為了減少拍照延時(shí),讓拍照&回顯瞬間完成的一種技術(shù) -
連拍(ContinuousShot)
通過節(jié)約數(shù)據(jù)傳輸時(shí)間來捕捉攝影時(shí)機(jī) -
預(yù)覽大小(PreviewSize)
相機(jī)預(yù)覽圖片的大小 -
拍照大小(PictureSize)
拍照生成圖片的大小 -
自動(dòng)白平衡(Auto white balance)
AWB(Auto white balance)蕉朵,自動(dòng)白平衡是相機(jī)的默認(rèn)設(shè)置崔涂,相機(jī)中有一結(jié)構(gòu)復(fù)雜的矩形圖,它可決定畫面中的白平衡基準(zhǔn)點(diǎn)始衅,以此來達(dá)到白平衡調(diào)校 -
對(duì)比度
圖像最亮和最暗之間的區(qū)域之間的比率冷蚂,比值越大,從黑到白的漸變層次就越多汛闸,從而色彩表現(xiàn)越豐富 -
飽和度
指色彩的鮮艷程度 -
銳度
是反映圖像平面清晰度和圖像邊緣銳利程度的一個(gè)指標(biāo)
相機(jī)功能
Android 支持多種相機(jī)功能蝙茶,您可使用相機(jī)應(yīng)用控制這些功能,如圖片格式诸老、閃光模式隆夯、對(duì)焦設(shè)置等等。
通過Camera.Parameters
可以設(shè)置大部分的功能别伏,下面介紹幾個(gè)重要功能:
- 區(qū)域測(cè)光和對(duì)焦
- 人臉檢測(cè)
- 延時(shí)視頻
區(qū)域測(cè)光和對(duì)焦
從 Android 4.0(API 級(jí)別 14)開始蹄衷,通過Camera.Parameters
來確定對(duì)焦或亮度設(shè)置的區(qū)域,然后進(jìn)行拍照或者錄像
人臉檢測(cè)
這個(gè)和真正的人臉識(shí)別是不一樣的 厘肮,這里僅僅是檢測(cè)人臉愧口。
通過照片分析,檢測(cè)照片中是否包含人臉类茂,使用人臉識(shí)別技術(shù)來識(shí)別人臉并計(jì)算照片設(shè)置
延時(shí)視頻
延時(shí)視頻功能允許用戶將間隔幾秒鐘或幾分鐘拍攝的圖片串聯(lián)起來耍属,創(chuàng)建視頻剪輯。使用MediaRecorder
錄制時(shí)間流逝片段的圖像巩检。
其他重要功能API: