解决 Android PLMediaPlayer 个别视频播放异常问题

简介:       小菜最近一直在处理一个比较纠结的问题,项目中接入了七牛云视频SDK PLMediaPlayer,七牛云视频SDK是很强大的一款三方视频库。      小菜项目中需要展示的是 .mp4 格式的视频,曾经遇到的问题包括:个别视频有音频但是看不到视频,个别视频无法播放等。

      小菜最近一直在处理一个比较纠结的问题,项目中接入了七牛云视频SDK PLMediaPlayer,七牛云视频SDK是很强大的一款三方视频库。
      小菜项目中需要展示的是 .mp4 格式的视频,曾经遇到的问题包括:个别视频有音频但是看不到视频,个别视频无法播放等。小菜查了好久发现对问题解决的资料相对较少,仅记录一下小菜处理的方式。

尝试如下:

  1. 查看运行官方 PLDroidPlayer Demo ,将有问题的视频链接添加测试,当解码方式换为 软解码 时,发现视频都可以正常播放;当更换为硬解码或 Auto 方式时确实有的视频无法正常播放;

  2. 小菜大致找到了问题方向,大概是设置的解码方式有问题;
    小菜用的也是 Auto 方式,但是小菜不确认硬解码解码失败的分割点在哪里;于是把 Auto 方式 AVOptions.MEDIA_CODEC_AUTO 更换为软解码方式 AVOptions.MEDIA_CODEC_SW_DECODE

AVOptions options = new AVOptions();
int codec = AVOptions.MEDIA_CODEC_SW_DECODE;
options.setInteger(AVOptions.KEY_MEDIACODEC, codec);
options.setInteger(AVOptions.KEY_PREPARE_TIMEOUT, 10 * 1000);
options.setInteger(AVOptions.KEY_LIVE_STREAMING, 0);
options.setString(AVOptions.KEY_CACHE_DIR, FileUtils.VideoCacheSD);
  1. 测试发现,基本各种格式的 .mp4 都可以播放,但是小菜又遇到了一个新的问题:有一个视频播放卡顿,不是网络影响,像一帧一帧的卡顿;但是在官网 Demo 中测试一切正常,然后两边对比,参数都一致,很奇怪;
  2. 偶然机会同事说会不会跟 NDK 有关系,因为应用为了生成的 apk 包比较小,只用了 "armeabi",于是按照官网的 Demo 放开所有的 NDK 方式;再次测试视频可以正常播放。
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" }

      至此,七牛云 PLMediaPlayer 个别视频无法播放的问题基本已经解决,相对也牺牲了一些内存。
      小菜也联系了一下七牛云的专业客服,小菜这个别的视频格式也确实有点小问题,客服小哥建议再视频播放时压缩为正常的 .mp4 格式较好。


      Tips: 小菜在测试过程中偶遇 ExoPlayer 也是一款很强大的视频播放器,推荐一下!


小菜了解的软解码与硬解码的区别在于:

【软解码】使用的是 CPU 方式进行编码,因此性能消耗较大,电量等方面消耗也较大,时间上消耗略长;解码支持格式比较全面;
【硬解码】使用的是非 CPU 方式进行编码,性能较高,解码时间短;但是解码支持的格式相对较少;
【Auto 解码】七牛云的文档说明,在硬解码失败的情况下会自动更换为软解码。


      小菜对于视频的了解还很初级,还有很多不清楚和不理解的地方,如果有不对的地方还希望多多指出。以下是小菜公众号,欢迎闲来吐槽~


公众号
目录
相关文章
|
3月前
|
Android开发 容器
35. 【Android教程】视频页面:ViewPager
35. 【Android教程】视频页面:ViewPager
41 3
|
1月前
|
编解码 监控 API
惊艳登场!揭秘如何在Android平台上轻松玩转GB28181标准,实现多视频通道接入的超实用指南!
【8月更文挑战第14天】GB28181是公共安全视频监控联网的技术标准。本文介绍如何在Android平台上实现该标准下的多视频通道接入。首先准备开发环境,接着引入GB28181 SDK依赖并初始化SDK。实现设备注册与登录后,通过指定不同通道号请求多路视频流。最后,处理接收到的数据并显示给用户。此过程涉及视频解码,需确保应用稳定及良好的用户体验。
10 0
|
3月前
|
开发工具 Android开发
android studio build异常
android studio build异常
32 3
|
3月前
|
监控 Android开发 数据安全/隐私保护
安卓kotlin JetPack Compose 实现摄像头监控画面变化并录制视频
在这个示例中,开发者正在使用Kotlin和Jetpack Compose构建一个Android应用程序,该程序 能够通过手机后置主摄像头录制视频、检测画面差异、实时预览并将视频上传至FTP服务器的Android应用
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
34 0
|
3月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的安卓的微博客系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的安卓的微博客系统附带文章和源代码部署视频讲解等
40 2
|
4月前
|
Android开发
jack-server导致 Android 编译 出现异常
jack-server导致 Android 编译 出现异常
65 6
|
4月前
|
Android开发
android捕获全局异常,并对异常做出处理
android捕获全局异常,并对异常做出处理
53 4
|
4月前
|
存储 安全 文件存储
Android OTA升级后输入法异常和应用丢失的分析
Android OTA升级后输入法异常和应用丢失的分析
69 1
|
4月前
|
XML Android开发 数据格式
Fragment的使用,零基础入门android逆向视频课程
Fragment的使用,零基础入门android逆向视频课程