Android 自定义相机 视频录制爬过的坑

作为一个专业的程序员,怎么能少得了技术的文章呢,诗云:“胸藏文墨怀若谷,腹有诗书气自华”,妥妥的就是一个翻版的我。明明可以靠颜值,非要靠才华。

前言:

近来闲来无事,总结了一下之前做过的经典的小案例,最精彩的莫过于模仿微信的小视频。公司的需求就是要拍一个绕车的小视频,具体的要求就是不超过三十秒 ,视频文件大小限制在20M,必不可少是各个型号的适配。

嘻嘻在这里具体的demo就不往外贴了,下面主要说一下我在这个项目中遇到的难点,其实主要分为三大块 1 是黑屏  2是权限 3是压缩

一.黑屏

场景:运行的时候发现,只有第一次进入时录制界面能成功预览,一旦用back按键返回或者按home键回到主界面,再启动程序的时候,预览界面就变黑了。

定位:黑屏说明surfaceview没有重新绘制。

解决:在界面重新获取焦点的时候要重新绘制,在OnResume()方法中开启一下相机,我是把OnCreate()中的代码挪了过来。在焦点的消失的别忘了在onPause()中关闭相机。如果你认为这样简简单单的就完成那就错了。经过一番测试,在华为 荣耀 三星S6中还是不行,经过一番的查找资料 ,开启相机的时候做一下延迟,调用底层so档的需要时间。我是延迟了50ms;所以最终解决办法还需要将上述OnResume()中的开启相机方法改成如下:

 try {

    Thread.sleep(50);

 } catch (InterruptedException e) {

     // TODO Auto-generated catch block

     e.printStackTrace();

 }   

二.权限

场景:在系统版本5.0以下的手机,手机的权限是自己去申请的,权限拒绝的时候,录制的动画还在走,并且在魅族手机上出现了崩溃。

定位: 得到权限的状态,没有权限的时候禁止操作。

解决:没有使用第三方的状态库,因为项目偏老。而是用了一个比较笨而且实用的方法;针对权限:

/**

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

*/

public static boolean cameraIsCanUse() {

    boolean isCanUse =true;

    Camera mCamera =null;

    try {

        mCamera = Camera.open();

        Camera.Parameters mParameters = mCamera.getParameters(); //针对魅族手机

         mCamera.setParameters(mParameters);

    }catch (Exception e) {

        isCanUse =false;

    }

    if (mCamera !=null) {

        try {

            mCamera.release();

        }catch (Exception e) {

            e.printStackTrace();

            return isCanUse;

        }

    }

return isCanUse;

}

针对动画的解决方案是根据权限来判断,后来想想了太笨了,根据onTouch事件来做的操作,当权限弹出来的时候,触摸的位置已经改变,但是手指没有抬起。onTouch中有四个状态,分别是1、ACTION_DOWN:表示按下了屏幕,第一个执行也是必然执行的方法。2、ACTION_MOVE:表示为移动手势,会不断的执行直到触摸停止。3、ACTION_UP :表示为离开屏幕,触摸停止的时候执行。4、ACTION_CANCEL:表示取消手势,不会由用户产生,而是由程序产生的。权限的弹出正是由于程序产生的。所以在这个方法中取消动画就可以

三.压缩

场景:开始的时候没有压缩,而且自测的时候把自己写的东西当爹一样的供着,生怕点坏了,测试就不一样了,把你写的东西当成喜当爹得来的孩子,往死了折腾。大部分手机像素都非常高,拍够30秒,视频上传失败。

定位:视频文件过大

解决:在视频录制输出的时候就要压缩,设置视频输出的属性,以此来达到视频压缩的效果,这样会整体的提高视频录制的效率,

// 这里是重点,分辨率和比特率

// 分辨率越大视频大小越大,比特率越大视频越清晰

// 清晰度由比特率决定,视频尺寸和像素量由分辨率决定

// 比特率越高越清晰(前提是分辨率保持不变),分辨率越大视频尺寸越大。

在这里要根据不同的手机来做不同的压缩,不过小米手机我做了特别处理。因为经过大量的测试,只有小米的手机在同样的参数下,压缩出来的视频过大。

一般手机 int y =3*1024*1024;

小米手机 int y =2*动态的宽*动态的高;

嘻嘻到这里就是我遇到的比较奇葩的难点 ,其他的难点网上解决办法一大把。嘻嘻只是给大家提供一下思路 拒绝伸手党。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,498评论 25 707
  • 想到视频录制,肯定又是运用MediaRecorder,这个类实在是方便,但是好用的东西一定要慎重,毕竟没有那么便宜...
    2c2z0阅读 2,065评论 0 2
  • 绍兴被誉为东方威尼斯,之前听人说过绍兴的很多路名之前都是桥的,后来因为改建便修成了路。之前搭车时遇到的绍兴...
    桃子的小站阅读 352评论 1 2
  • 你可知, 我曾深埋淤泥之下, 满身污垢。 为你, 我破土而出, 除尽铅华。 你可知, 我曾隐于俗世之间, 逍遥红尘...
    池亦珩阅读 339评论 8 11
  • 韩晴是个小餐厅的职员, 一天早上, 她在一堆树枝下发现了小狗皮皮, 蜷缩着的身子, 大大的泛着泪光的眼睛, 好像在...
    94暖暖阳光阅读 302评论 0 2