最近做短视频项目,用的是阿里云的sdk,接了阿里的sdk后,在推出拍摄界面操作中,总会不定期的崩溃,
报错如下
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1000003d0
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x0 0000000100000000 x1 0000007a5f8d2ee0 x2 0000007a6d600000 x3 0000007a7dbe1fc8
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x4 0000007a7dbe1f88 x5 0000000000048978 x6 00000000000489e8 x7 00000000001fffff
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x8 0000000100000000 x9 0000000000000000 x10 ffffffffffffffff x11 0000000000000000
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x12 0000000000000094 x13 0000000000000008 x14 00000000000000ba x15 0000007b1d6748c8
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x16 0000007a71dea950 x17 0000007a71dc1f38 x18 0000007a97a00080 x19 0000000100000000
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x20 0000000100000000 x21 0000007a6d77d620 x22 0000007a7dfab900 x23 0000000000000065
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x24 0000007a64cb5329 x25 0000000000000071 x26 0000007a64cb7588 x27 000000003e4ccccd
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: x28 0000000000000438 x29 0000007a64cb51d0
2020-01-10 19:00:54.486 12592-12592/? A/DEBUG: sp 0000007a64cb51c0 lr 0000007a71d98ac8 pc 0000007a71dc1f48
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: backtrace:
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #00 pc 000000000003bf48 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libFace3D.so (PortraitBeauty::~PortraitBeauty()+16)
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #01 pc 0000000000012ac4 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libFace3D.so (pixelai_dl_faceBeauty_destroy+32)
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #02 pc 000000000004bf10 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #03 pc 000000000004abcc /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #04 pc 000000000004ad04 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #05 pc 000000000003767c /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #06 pc 0000000000037770 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #07 pc 000000000006c144 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so
2020-01-10 19:00:54.537 12592-12592/? A/DEBUG: #08 pc 000000000006a6d8 /data/app/com.ininwork.inin-LY-EZFUDrkoT5JSIpL4Few==/lib/arm64/libAliyunRace.so (aliyun_beautify_destroy+24)
可以看到,报错信息出现在“/lib/arm64/libFace3D.so”这个库中
这个时候就有点难办了,因为这个库已经封装成so,找错都不好找,
难办也要想办法,我们来一步步分析
先来看下 libFace3D.so 这个so是哪个项目的,
使用everything 搜索后发现这个库属于AliyunRace-1.0.0
'com.aliyun.race:AliyunRace:1.0.0'
这个库还是1.0.0版本的,有问题也很正常,那么,能不能升级试下呢,
网上搜了一圈,然后又在阿里的api文档中找了一圈,没发现有更新的库
没办法,只能弃用这个库了,弃用这个库之后,发现“RaceManage”这个类报错了,
好吧,原来是RaceManage这个类在用这个库,
那么现在的问题就变成了怎么绕开RaceManage这个类
这个就简单了,
AlivcRecordInputParam recordParam = new AlivcRecordInputParam.Builder()
.setResolutionMode(3)
.setRatioMode(2)
.setMaxDuration(15000)
.setMinDuration(3000)
.setVideoQuality(VideoQuality.HD)
.setGop(30)
.setVideoCodec(VideoCodecs.H264_HARDWARE)
.setIsUseFlip(false)
.setVideoRenderingMode(RenderingMode.Race)
.build();
上面的是之前的参数
改成下面的
AlivcRecordInputParam recordParam = new AlivcRecordInputParam.Builder()
.setResolutionMode(3)
.setRatioMode(2)
.setMaxDuration(15000)
.setMinDuration(3000)
.setVideoQuality(VideoQuality.HD)
.setGop(30)
.setVideoCodec(VideoCodecs.H264_HARDWARE)
.setIsUseFlip(false)
.setVideoRenderingMode(RenderingMode.FaceUnity)
.build();
即把
RenderingMode.Race 这个参数改为 RenderingMode.FaceUnity
终于不再崩溃了,问题解决。。。
另外要注意
.setVideoCodec(VideoCodecs.H264_HARDWARE)
要用H264_HARDWARE 这个参数,不然视频录制的时候摄像头晃动的话视频会卡。
来源:CSDN
作者:perfectnihil
链接:https://blog.csdn.net/perfectnihil/article/details/103929390