Android 自定義相機(jī) 視頻錄制爬過的坑

作為一個專業(yè)的程序員,怎么能少得了技術(shù)的文章呢暂刘,詩云:“胸藏文墨懷若谷饺谬,腹有詩書氣自華”,妥妥的就是一個翻版的我谣拣。明明可以靠顏值募寨,非要靠才華。

前言:

近來閑來無事森缠,總結(jié)了一下之前做過的經(jīng)典的小案例拔鹰,最精彩的莫過于模仿微信的小視頻。公司的需求就是要拍一個繞車的小視頻贵涵,具體的要求就是不超過三十秒 列肢,視頻文件大小限制在20M,必不可少是各個型號的適配宾茂。

嘻嘻在這里具體的demo就不往外貼了瓷马,下面主要說一下我在這個項(xiàng)目中遇到的難點(diǎn),其實(shí)主要分為三大塊 1 是黑屏? 2是權(quán)限 3是壓縮

一.黑屏

場景:運(yùn)行的時候發(fā)現(xiàn)跨晴,只有第一次進(jìn)入時錄制界面能成功預(yù)覽欧聘,一旦用back按鍵返回或者按home鍵回到主界面,再啟動程序的時候坟奥,預(yù)覽界面就變黑了树瞭。

定位:黑屏說明surfaceview沒有重新繪制。

解決:在界面重新獲取焦點(diǎn)的時候要重新繪制爱谁,在OnResume()方法中開啟一下相機(jī),我是把OnCreate()中的代碼挪了過來孝偎。在焦點(diǎn)的消失的別忘了在onPause()中關(guān)閉相機(jī)访敌。如果你認(rèn)為這樣簡簡單單的就完成那就錯了。經(jīng)過一番測試衣盾,在華為 榮耀 三星S6中還是不行寺旺,經(jīng)過一番的查找資料 ,開啟相機(jī)的時候做一下延遲势决,調(diào)用底層so檔的需要時間阻塑。我是延遲了50ms;所以最終解決辦法還需要將上述OnResume()中的開啟相機(jī)方法改成如下:

?try {

????Thread.sleep(50);

?} catch (InterruptedException e) {

?????// TODO Auto-generated catch block

?????e.printStackTrace();

?} ??

二.權(quán)限

場景:在系統(tǒng)版本5.0以下的手機(jī)果复,手機(jī)的權(quán)限是自己去申請的陈莽,權(quán)限拒絕的時候,錄制的動畫還在走,并且在魅族手機(jī)上出現(xiàn)了崩潰走搁。

定位: 得到權(quán)限的狀態(tài)独柑,沒有權(quán)限的時候禁止操作。

解決:沒有使用第三方的狀態(tài)庫私植,因?yàn)轫?xiàng)目偏老忌栅。而是用了一個比較笨而且實(shí)用的方法;針對權(quán)限:

/**

*? 返回true 表示可以使用? 返回false表示不可以使用

*/

public static boolean cameraIsCanUse() {

????boolean isCanUse =true;

? ? Camera mCamera =null;

? ? try {

????????mCamera = Camera.open();

? ? ? ? Camera.Parameters mParameters = mCamera.getParameters(); //針對魅族手機(jī)

? ? ? ? ?mCamera.setParameters(mParameters);

? ? }catch (Exception e) {

????????isCanUse =false;

? ? }

????if (mCamera !=null) {

????????try {

????????????mCamera.release();

? ? ? ? }catch (Exception e) {

????????????e.printStackTrace();

? ? ? ? ? ? return isCanUse;

? ? ? ? }

????}

return isCanUse;

}

針對動畫的解決方案是根據(jù)權(quán)限來判斷,后來想想了太笨了曲稼,根據(jù)onTouch事件來做的操作索绪,當(dāng)權(quán)限彈出來的時候,觸摸的位置已經(jīng)改變贫悄,但是手指沒有抬起者春。onTouch中有四個狀態(tài),分別是1清女、ACTION_DOWN:表示按下了屏幕钱烟,第一個執(zhí)行也是必然執(zhí)行的方法。2嫡丙、ACTION_MOVE:表示為移動手勢拴袭,會不斷的執(zhí)行直到觸摸停止。3曙博、ACTION_UP?:表示為離開屏幕拥刻,觸摸停止的時候執(zhí)行。4父泳、ACTION_CANCEL:表示取消手勢般哼,不會由用戶產(chǎn)生,而是由程序產(chǎn)生的惠窄。權(quán)限的彈出正是由于程序產(chǎn)生的蒸眠。所以在這個方法中取消動畫就可以

三.壓縮

場景:開始的時候沒有壓縮,而且自測的時候把自己寫的東西當(dāng)?shù)粯拥墓┲巳冢曼c(diǎn)壞了楞卡,測試就不一樣了,把你寫的東西當(dāng)成喜當(dāng)?shù)脕淼暮⒆悠⑿懒苏垓v蒋腮。大部分手機(jī)像素都非常高,拍夠30秒藕各,視頻上傳失敗池摧。

定位:視頻文件過大

解決:在視頻錄制輸出的時候就要壓縮,設(shè)置視頻輸出的屬性激况,以此來達(dá)到視頻壓縮的效果作彤,這樣會整體的提高視頻錄制的效率膘魄,

// 這里是重點(diǎn),分辨率和比特率

// 分辨率越大視頻大小越大宦棺,比特率越大視頻越清晰

// 清晰度由比特率決定瓣距,視頻尺寸和像素量由分辨率決定

// 比特率越高越清晰(前提是分辨率保持不變),分辨率越大視頻尺寸越大代咸。

在這里要根據(jù)不同的手機(jī)來做不同的壓縮蹈丸,不過小米手機(jī)我做了特別處理。因?yàn)榻?jīng)過大量的測試呐芥,只有小米的手機(jī)在同樣的參數(shù)下逻杖,壓縮出來的視頻過大。

一般手機(jī) int y =3*1024*1024;

小米手機(jī) int y =2*動態(tài)的寬*動態(tài)的高;

嘻嘻到這里就是我遇到的比較奇葩的難點(diǎn) 思瘟,其他的難點(diǎn)網(wǎng)上解決辦法一大把荸百。嘻嘻只是給大家提供一下思路 拒絕伸手黨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滨攻,一起剝皮案震驚了整個濱河市够话,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌光绕,老刑警劉巖女嘲,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诞帐,居然都是意外死亡欣尼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門停蕉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愕鼓,“玉大人,你說我怎么就攤上這事慧起」交危” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵完慧,是天一觀的道長谋旦。 經(jīng)常有香客問我,道長屈尼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任拴孤,我火速辦了婚禮脾歧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘演熟。我一直安慰自己鞭执,他們只是感情好司顿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兄纺,像睡著了一般大溜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上估脆,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天钦奋,我揣著相機(jī)與錄音,去河邊找鬼疙赠。 笑死付材,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的圃阳。 我是一名探鬼主播厌衔,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捍岳!你這毒婦竟也來了富寿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锣夹,失蹤者是張志新(化名)和其女友劉穎页徐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晕城,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泞坦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了砖顷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贰锁。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滤蝠,靈堂內(nèi)的尸體忽然破棺而出豌熄,到底是詐尸還是另有隱情,我是刑警寧澤物咳,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布锣险,位于F島的核電站,受9級特大地震影響览闰,放射性物質(zhì)發(fā)生泄漏芯肤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一压鉴、第九天 我趴在偏房一處隱蔽的房頂上張望崖咨。 院中可真熱鬧,春花似錦油吭、人聲如沸击蹲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歌豺。三九已至推穷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間类咧,已是汗流浹背馒铃。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轮听,地道東北人骗露。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像血巍,于是被迫代替她去往敵國和親萧锉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,182評論 25 707
  • 想到視頻錄制述寡,肯定又是運(yùn)用MediaRecorder柿隙,這個類實(shí)在是方便,但是好用的東西一定要慎重鲫凶,畢竟沒有那么便宜...
    2c2z0閱讀 2,085評論 0 2
  • 紹興被譽(yù)為東方威尼斯禀崖,之前聽人說過紹興的很多路名之前都是橋的,后來因?yàn)楦慕ū阈蕹闪寺访拧V按钴嚂r遇到的紹興...
    桃子的小站閱讀 359評論 1 2
  • 你可知昼钻, 我曾深埋淤泥之下掸屡, 滿身污垢。 為你然评, 我破土而出仅财, 除盡鉛華。 你可知碗淌, 我曾隱于俗世之間盏求, 逍遙紅塵...
    池亦珩閱讀 345評論 8 11
  • 韓晴是個小餐廳的職員, 一天早上亿眠, 她在一堆樹枝下發(fā)現(xiàn)了小狗皮皮碎罚, 蜷縮著的身子, 大大的泛著淚光的眼睛纳像, 好像在...
    94暖暖陽光閱讀 305評論 0 2