最近需要将原先的工程进行整理,修改完善功能,提取功能使用,WebRtc这个模块分配到我手上,首先WebRtc是一个多端使用的浏览视频的第三方SDK,如果您有兴趣了解,网络上的博文还是很多的,github上也有关于源码的介绍,有兴趣可以了解一下
- WebRtc
报错误: No static method create()Lorg/webrtc/EglBase
Gradle版本不宜太高 3.4.1左右即可
-
WebRtc 点对点 本地视频显示不出的原因
使用了多个EglBase 导致对象不一致
例如
在同个地方使用了全局变量 和局部变量
-- EglBase eglBase = null;
-- eglBase = EglBase.create();
-- final EglBase eglBase = EglBase.create();
复制代码
去除即可局部变量即可
-
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;
}
复制代码
-
WebRtc 视频回声抑制 和声音增益
// 伪代码 AudioDeviceModule createJavaAudioDevice() { return builder(appContext) .setSamplesReadyCallback(saveRecordedAudioToFile) .setUseHardwareAcousticEchoCanceler(false) \\false 开启回声抑制 true 不开 .setUseHardwareNoiseSuppressor(false) \\false 开启声音增益 true 不开 .createAudioDeviceModule(); }``` 复制代码
-
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); } 复制代码
}
-
关于View叠层问题 解决与处理
首先关于安卓7 view叠层问题 应该是版本的作用
调用
view.setZOrderMediaOverlay(true);view.setZOrderOnTop(true);
//不管用
后面将布局改为相对布局 叠层问题还没有解决
view.bringToFront();
使用这个将指定的view置于顶层
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END