zoukankan      html  css  js  c++  java
  • EasyPusher RTSP推流/EasyRTMP RTMP推流Android安卓摄像头视频偏暗的问题解决方案

    本文转自EasyDarwin团队成员JOHN的博客:http://blog.csdn.net/jyt0551/article/details/75730226


    在我们测试EasyPusher/EasyRTMP的过程中发现有些设备预览时,明显偏暗!在稍微暗点的环境中几乎很难看清东西…额,这是怎么回事呢?又是安卓设备的兼容性问题,头疼!

    好吧,停止抱怨,撸起袖子开始干.

    对,我们想到了.把摄像头的scene设置成了一个比较亮的模式对吧?下面是摄像头可能支持的模式,这么多我逐一试试:

    SCENE_MODE_AUTO
    SCENE_MODE_ACTION
    SCENE_MODE_PORTRAIT
    SCENE_MODE_LANDSCAPE
    SCENE_MODE_NIGHT
    SCENE_MODE_NIGHT_PORTRAIT
    SCENE_MODE_THEATRE
    SCENE_MODE_BEACH
    SCENE_MODE_SNOW
    SCENE_MODE_SUNSET
    SCENE_MODE_STEADYPHOTO
    SCENE_MODE_FIREWORKS
    SCENE_MODE_SPORTS
    SCENE_MODE_PARTY
    SCENE_MODE_CANDLELIGHT
    SCENE_MODE_BARCODE
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    可结果是,这么多模式可以随便设,但就是没啥用.

    好吧,上网搜搜吧!我打开Chrome,敲入这几个字:

    “camera preview too dark”

    经搜索,发现得到的类似的问题也有不少,答案也几乎都差不多:设置曝光或者白平衡. 
    比如下面这个答案:

    Camera.Parameters params = mCamera.getParameters();
    
    params.setExposureCompensation(params.getMaxExposureCompensation());
    
    if(params.isAutoExposureLockSupported()) {
     params.setAutoExposureLock(false);
    }
    
    mCamera.setParameters(params);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    很开心!加进去试试吧!

    结果又悲催了,没效果…

    这TM就比较坑爹了

    坑归坑,问题还的解决是不?只有想别的办法了,还是这个摄像头参数,我逐一注释下看看! 
    好,经过我反复地注释/反注释+编译+运行后,发现居然是这个方法导致:

    setPreviewFpsRange
    • 1
    • 1

    因为我把这个函数注释了后,亮度就恢复了.

    很(神)开(马)心(鬼)…

    这明明是设置帧率的嘛,跟亮度有什么关系?

    没办法,安卓就是这样子,好多二三流设备厂商做产品随心所欲,导致各种兼容性问题,拉低了整体的档次,也给程序员带来各种bug.为了适应这些设备,我们必须写一些兼容性的代码,甚至牺牲一些性能.

    好吧,这篇博客写完了.我要切换到AS去咯!

    EasyPusher/EasyRTMP项目地址

    EasyPusher是EasyDarwin开源流媒体团队开发的一个推送流媒体音/视频流给开源流媒体服务器EasyDarwin的标准RTSP/RTP协议推送库,全平台支持(包括Windows/Linux(32 & 64),ARM各平台,Android、IOS),通过EasyPusher我们就可以避免接触到稍显复杂的RTSP/RTP/RTCP推送流程,只需要调用EasyPusher的几个API接口,就能轻松、稳定地把流媒体音视频数据推送给EasyDarwin服务器进行转发和分发,EasyPusher经过长时间的企业用户检验,稳定性非常高;

    EasyPusher Github地址:https://github.com/EasyDarwin/EasyPusher


    EasyRTMP是EasyDarwin团队开发的一套RTMP直播推送功能组件,内部集成了包括:基本RTMP协议、断线重连、异步推送、环形缓冲区、推送网络拥塞自动丢帧、缓冲区关键帧检索、事件回调(断线、音视频数据回调),通过EasyRTMP我们就可以避免接触到稍显复杂的RTMP推送或者客户端流程,只需要调用EasyRTMP的几个API接口,就能轻松、稳定地进行流媒体音视频数据的推送,支持市面上绝大部分的RTMP流媒体服务器,包括Red5、Ngnix_rtmp、crtmpserver等主流RTMP服务器,全平台支持:Windows、Linux、ARM(各种交叉编译工具链)、Android、iOS;


      EasyRTMP Github地址:https://github.com/EasyDarwin/EasyRTMP


      获取更多信息

      邮件:support@easydarwin.org

      WEB:www.EasyDarwin.org

      Copyright © EasyDarwin.org 2012-2017

      EasyDarwin



    • 相关阅读:
      【并发】实现内存可见的两种方法比较:加锁和volatile变量
      HTTP2资料汇总
      微服务框架servicecomb
      【并发】使用synchronized获取互斥锁的几点说明
      【并发】通过同步保证内存可见性
      数据最终一致性方案设计
      Oracle中Constraint的状态参数initially与deferrable
      ORACLE GROUPING函数的使用
      Oracle INSERT WITH CHECK OPTION的用法
      ORACLE VERSIONS 用法
    • 原文地址:https://www.cnblogs.com/babosa/p/7348739.html
    Copyright © 2011-2022 走看看