返回

七牛播放器SDK注意事项分享:小哥提刀来找,原来是升64位架构闹的!

Android

测试小哥提刀来找我,说apk升64位架构拍摄选择视频后播放器崩溃了。

一调试,报错如下:

12-20 00:02:08.270 6108-6122/com.xx.xx E/VideoPlayer: com.qiniu.pili.droid.streaming.AVCodecTagList is not visible from class loader

一看报错,牛市啊,比股市还红!

1. 一看就是64位库文件对应的so文件没加载上,开始检查gradle中的ndk版本。

ndkVersion = "21.4.7075529"

再看看64位和32位下的jniLibs目录是否对应着不同架构的so文件。

apk\app\build\outputs\apk\debug\jniLibs\armeabi\libqiniuPiliPldroidstreaming.so
apk\app\build\outputs\apk\debug\jniLibs\arm64-v8a\libqiniuPiliPldroidstreaming.so

有!

md5sum对比了一下,这俩文件确实是不同的。

开始琢磨是不是cmake对应的安卓编译平台不对,是不是sdk库打包时没按对地址打包,搜了一下发现七牛的官方文档中写着:

arm64-v8a:支持64位架构的Android设备

armeabi-v7a:支持32位架构的Android设备,包含armv5te,armv7和armv7s架构

armeabi:支持armeabi和armeabi-v7a,所以不推荐单独使用

2. 原来只要一个依赖包含了armeabi-v7a,那么编译时这个依赖就会被当作是32位架构,而不会被当作64位。

解决方法就是:把gradle文件中的

implementation 'com.qiniu:pili-droid-player:6.5.1'

改成:

implementation 'com.qiniu:pili-droid-player:6.5.1:arm64-v8a'

即可。

至此,小哥化干戈为玉帛,喜提一笔年前的红包。

为了避免再有人因使用七牛播放器sdk而被提刀,现将sdk注意事项分享如下:

1. 七牛播放器sdk报错

  • com.qiniu.pili.droid.streaming.AVCodecTagList is not visible from class loader

    • 原因: 您可能在使用64位架构的设备时使用了32位的sdk。

    • 解决方法: 确保您使用的是与您设备架构相对应的sdk。

  • java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xx.xx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xx.xx-1/lib/arm64, /system/lib64, /vendor/lib64, /product/lib64]]] couldn't find "libqiniuPiliPldroidstreaming.so"

    • 原因: 您可能没有在gradle文件中正确配置sdk依赖项。

    • 解决方法: 确保您在gradle文件中正确配置了sdk依赖项。

2. 七牛播放器sdk崩溃

  • 播放器崩溃

    • 原因: 您可能使用了错误的sdk版本或没有正确配置sdk。

    • 解决方法: 确保您使用的是正确的sdk版本并正确配置了sdk。

  • 录制崩溃

    • 原因: 您可能使用了错误的sdk版本或没有正确配置sdk。

    • 解决方法: 确保您使用的是正确的sdk版本并正确配置了sdk。

3. 七牛播放器sdk使用指南

  • 如何使用七牛播放器sdk播放视频?

    • 步骤 1: 在您的项目中添加sdk依赖项。

    • 步骤 2: 创建播放器对象。

    • 步骤 3: 设置视频源。

    • 步骤 4: 准备播放器。

    • 步骤 5: 开始播放。

  • 如何使用七牛播放器sdk录制视频?

    • 步骤 1: 在您的项目中添加sdk依赖项。

    • 步骤 2: 创建录制器对象。

    • 步骤 3: 设置录制参数。

    • 步骤 4: 开始录制。

    • 步骤 5: 停止录制。

4. 七牛播放器sdk技巧

  • 使用ExoPlayer作为播放器引擎

    • ExoPlayer是一个高性能的媒体播放器引擎,可以提供更好的播放体验。
  • 使用硬件解码

    • 硬件解码可以减少CPU的负载,提高播放性能。
  • 使用缓存

    • 缓存可以减少网络请求的次数,提高播放的流畅性。

5. 七牛播放器sdk最佳实践

  • 使用最新的sdk版本

    • 最新版本的sdk通常会修复一些bug并提供新的特性。
  • 正确配置sdk

    • 正确配置sdk可以避免出现一些问题。
  • 使用正确的播放器引擎

    • 根据您的需求选择合适的播放器引擎。
  • 使用硬件解码

    • 硬件解码可以减少CPU的负载,提高播放性能。
  • 使用缓存

    • 缓存可以减少网络请求的次数,提高播放的流畅性。

6. 七牛播放器sdk常见问题解答

  • 为什么我的播放器无法播放视频?

    • 您可能使用了错误的sdk版本或没有正确配置sdk。

    • 您可能没有设置视频源。

    • 您可能没有准备播放器。

    • 您可能没有开始播放。

  • 为什么我的录制器无法录制视频?

    • 您可能使用了错误的sdk版本或没有正确配置sdk。

    • 您可能没有设置录制参数。

    • 您可能没有开始录制。

  • 如何提高播放性能?

    • 使用ExoPlayer作为播放器引擎。

    • 使用硬件解码。

    • 使用缓存。

7. 七牛播放器sdk安装指南

  • 如何安装七牛播放器sdk?

    • 您可以在七牛的官方网站上下载sdk。

    • 您可以在您的项目中添加sdk依赖项。

8. 七牛播放器sdk配置指南

  • 如何配置七牛播放器sdk?

    • 您需要在gradle文件中配置sdk依赖项。

    • 您需要在代码中配置播放器对象。

    • 您需要在代码中设置视频源。

    • 您需要在代码中准备播放器。

    • 您需要在代码中开始播放。

9. 七牛播放器sdk开发指南

  • 如何使用七牛播放器sdk开发应用程序?

    • 您需要在您的项目中添加sdk依赖项。

    • 您需要在您的项目中创建播放器对象。

    • 您需要在您的项目中设置视频源。

    • 您需要在您的项目中准备播放器。

    • 您需要在您的项目中开始播放。

10. 七牛播放器sdk维护指南

  • 如何维护七牛播放器sdk?

    • 您需要更新sdk版本。

    • 您需要修复sdk中的bug。

    • 您需要添加新的特性到sdk中。

11. 七牛播放器sdk排错指南

  • 如何排错七牛播放器sdk?

    • 您需要检查sdk版本是否正确。

    • 您需要检查sdk是否正确配置。

    • 您需要检查播放器对象是否正确创建。

    • 您需要检查视频源是否正确设置。

    • 您需要检查播放器是否正确准备。

    • 您需要检查播放是否正确开始。

12. 七牛播放器sdk性能优化指南

  • 如何优化七牛播放器sdk的性能?