首页 文章 精选 留言 我的

精选列表

搜索[功能异常],共10007篇文章
优秀的个人博客,低调大师

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

小菜最近一直在处理一个比较纠结的问题,项目中接入了七牛云视频SDK PLMediaPlayer,七牛云视频SDK是很强大的一款三方视频库。 小菜项目中需要展示的是 .mp4 格式的视频,曾经遇到的问题包括:个别视频有音频但是看不到视频,个别视频无法播放等。小菜查了好久发现对问题解决的资料相对较少,仅记录一下小菜处理的方式。 尝试如下: 查看运行官方 PLDroidPlayer Demo ,将有问题的视频链接添加测试,当解码方式换为 软解码 时,发现视频都可以正常播放;当更换为硬解码或 Auto 方式时确实有的视频无法正常播放; 小菜大致找到了问题方向,大概是设置的解码方式有问题; 小菜用的也是 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); 测试发现,基本各种格式的 .mp4 都可以播放,但是小菜又遇到了一个新的问题:有一个视频播放卡顿,不是网络影响,像一帧一帧的卡顿;但是在官网 Demo 中测试一切正常,然后两边对比,参数都一致,很奇怪; 偶然机会同事说会不会跟 NDK 有关系,因为应用为了生成的 apk 包比较小,只用了 "armeabi",于是按照官网的 Demo 放开所有的 NDK 方式;再次测试视频可以正常播放。 ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" } 至此,七牛云 PLMediaPlayer 个别视频无法播放的问题基本已经解决,相对也牺牲了一些内存。 小菜也联系了一下七牛云的专业客服,小菜这个别的视频格式也确实有点小问题,客服小哥建议再视频播放时压缩为正常的 .mp4 格式较好。 Tips: 小菜在测试过程中偶遇 ExoPlayer 也是一款很强大的视频播放器,推荐一下! 小菜了解的软解码与硬解码的区别在于: 【软解码】使用的是 CPU 方式进行编码,因此性能消耗较大,电量等方面消耗也较大,时间上消耗略长;解码支持格式比较全面; 【硬解码】使用的是非 CPU 方式进行编码,性能较高,解码时间短;但是解码支持的格式相对较少; 【Auto 解码】七牛云的文档说明,在硬解码失败的情况下会自动更换为软解码。 小菜对于视频的了解还很初级,还有很多不清楚和不理解的地方,如果有不对的地方还希望多多指出。以下是小菜公众号,欢迎闲来吐槽~ 公众号

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册