阿里云小视频SDK崩溃问题解决

青春壹個敷衍的年華 提交于 2020-01-28 21:40:32

最近做短视频项目,用的是阿里云的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 这个参数,不然视频录制的时候摄像头晃动的话视频会卡。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!