和尚最近一直在处理一个比较纠结的问题,项目中接入了七牛云视频SDK PLMediaPlayer,七牛云视频SDK是很强大的一款三方视频库。 和尚项目中需要展示的是 .mp4 格式的视频,曾经遇到的问题包括:个别视频有音频但是看不到视频,个别视频无法播放等。和尚查了好久发现对问题解决的资料相对较少,仅记录一下和尚处理的方式。
尝试如下:
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);
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" }
至此,七牛云 PLMediaPlayer 个别视频无法播放的问题基本已经解决,相对也牺牲了一些内存。 和尚也联系了一下七牛云的专业客服,和尚这个别的视频格式也确实有点小问题,客服小哥建议再视频播放时压缩为正常的 .mp4 格式较好。
Tips: 和尚在测试过程中偶遇 ExoPlayer 也是一款很强大的视频播放器,推荐一下!
【软解码】使用的是 CPU 方式进行编码,因此性能消耗较大,电量等方面消耗也较大,时间上消耗略长;解码支持格式比较全面; 【硬解码】使用的是非 CPU 方式进行编码,性能较高,解码时间短;但是解码支持的格式相对较少; 【Auto 解码】七牛云的文档说明,在硬解码失败的情况下会自动更换为软解码。
和尚对于视频的了解还很初级,还有很多不清楚和不理解的地方,如果又不对的地方还希望多多指出。以下是和尚公众号,欢迎闲来吐槽~