1.集成声网的音视频服务,做测试的时候发现,采集的视频方向一直是90°偏差怎么都转不过来。
自习查看文档后发现:
用来显示视频的SurfaceView 是直接写在布局里的而不是 声网提供的构造方法:
文档原文 描述
public static SurfaceView CreateRendererView (Context context)
该方法创建视频渲染视图,返回SurfaceView的类型。
view的操作和布局由App管理, Agora SDK在App提供的view上进行渲染。
显示视频视图必须调用该方法,而不是直接调用SurfaceView。
-
测试正常,偶发
Fatal Exception: Java.lang.NullPointerException: Attempt to invoke virtual method 'Android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference at io.agora.rtc.video.VideoCaptureCamera$1.onFaceDetection(SourceFile:224) at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1212) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7325) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
分析:
FaceDetection是内部对Camera采集数据,应该是在音频的时候也开启了enableVideo这个方法,而这时camera是null。
在官网找解决方案,已经有人遇到这个坑:
https://dev.agora.io/cn/question/721
最后官方给的 解决方案是
这个问题我们已经在SDK 1.10里面修复了,1.10目前有Beta版,正式版最晚在5月中上旬发布
所以如果不是最新的SDK,请替换一下。
- 美颜 效果的添加(折腾的约一周) 。
给出的支持是kiwi的demo ,同样的ios 简单的传入对象就好了,android demo 有一个UI的libary ,demo app中还有jni ,准门问了下用不用集成这些cpp 文件(商务不懂技术果断的告诉我不用),于是在第一天完全没有任何效果。自己研究了代码,才发现必须参考demo的写法,调用jni方法 创建一个缓冲区进行对采集到的每一帧 进行渲染。
开始了调试生涯:
参照demo完全严格按照路径写了,但是报错
08-03 10:27:26.021 12905-13208/com.meodgame.wolfkill I/Choreographer: Skipped 101 frames! The application may be doing too much work on its main thread.
08-03 10:27:26.022 12905-14860/com.meodgame.wolfkill W/AudioTrack: releaseBuffer() track 0xc070f8b0 disabled due to previous underrun, restarting
libc: Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 11621 (ViECaptureThrea)
字面意思显然跳过了太多帧,考虑到主线程受阻,于是乎,又向各种办法来让它立即执行,无果。
参照demo 那种直接获取工作线程(app启动创建工作线程的写法很新颖)的方法,依然无果。
或者偶尔一下渲染的日志出来了,但是并灭有起效。
最后想到了因为是u3d 混合开发,可能是 u3d 也在执行渲染引起的(原生的界面在u3d 之上),有时候会有
call to OpenGL ES API with no current context (logged once per thread),
这样的日志,总之是摸不着头脑。
最后验证是否是u3d 引起的,u3d导出一个几乎什么都没有的包,集包之后竟然完美运行!
那就不是u3d的原因。
仔细一想,因为声网的SDK版本!!
美颜demo里用的是 1.9.项目里刚更新到最新的1.12.
替换老的sdk,圆满起效。
这个事件前后差不多三天多,一开始就应该想到的,但是没有,找解决问题的方法从最开始触发的地方开始,也许能省下很多功夫。