WebRtc 在android遇到的问题

最近需要将原先的工程进行整理,修改完善功能,提取功能使用,WebRtc这个模块分配到我手上,首先WebRtc是一个多端使用的浏览视频的第三方SDK,如果您有兴趣了解,网络上的博文还是很多的,github上也有关于源码的介绍,有兴趣可以了解一下

  1. WebRtc
    报错误: No static method create()Lorg/webrtc/EglBase

Gradle版本不宜太高 3.4.1左右即可

  1. WebRtc 点对点 本地视频显示不出的原因

    使用了多个EglBase 导致对象不一致

    例如
    在同个地方使用了全局变量 和局部变量

        -- EglBase eglBase = null;
	-- eglBase = EglBase.create();

	-- final EglBase eglBase = EglBase.create();
复制代码

去除即可局部变量即可

  1. WebRtc 视频编码和清晰度
    编码清晰度 和视频宽高(分辨率) 视频传输的码率有关

       视频大小	分辨            码率 
    
        480P    	720 X 480       1800kbps
    
        720P	1280 X 720  	3500kbps
    
        1080P 	1920 X 1080 	8500kbps
    复制代码

根据码率越高越清晰 相对应所需的网络带宽也会增多 具体需要看硬件和网络支持

若码率过高会造成通话时视频卡顿、不清晰有马赛克的现象


因为我们测试的硬件是非手机 CPU相对而言没有手机那么好 
    在720P设置的时候3500过高 2000过于模糊 折中取值3k 
    这也需要通过测试获取得到的
复制代码

伪代码:
     RtpParameters parameters = localVideoSender.getParameters();
	 for (RtpParameters.Encoding encoding : parameters.encodings) {
                // Null value means no limit.
          encoding.maxBitrateBps = maxBitrateKbps == null ? null : maxBitrateKbps * BPS_IN_KBPS;
        }
复制代码
  1. WebRtc 视频回声抑制 和声音增益

        // 伪代码
     AudioDeviceModule createJavaAudioDevice() {
    return builder(appContext)
                .setSamplesReadyCallback(saveRecordedAudioToFile)
                .setUseHardwareAcousticEchoCanceler(false) \\false 开启回声抑制 true 不开
                .setUseHardwareNoiseSuppressor(false) \\false 开启声音增益 true 不开
                .createAudioDeviceModule();
    }```
    
    复制代码
  2. WebRtc 声音增益 (软件)
    和AudioManager区别是 AudioManager调用的是本地硬件的音量等级 若音量调到最高后就无法继续提高音量
    而软件声音增益可以在此基础上进行更高程度的调用
    增益等级 int 0-10
    //伪代码
    private class PCObserver implements Observer {

    @Override
    public void onAddStream(final MediaStream stream) {
        Log.e("-->","当前音量增益为 " +peerConnectionParameters.voiceGainLevel);
        stream.audioTracks.get(0).setVolume(1);
    }
    复制代码

    }

  3. 关于View叠层问题 解决与处理

    首先关于安卓7 view叠层问题 应该是版本的作用
    调用
    view.setZOrderMediaOverlay(true);

    view.setZOrderOnTop(true);

    //不管用

    后面将布局改为相对布局 叠层问题还没有解决

    view.bringToFront();

    使用这个将指定的view置于顶层

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享