-
Couldn't load subscription status.
- Fork 246
hardwareDecode
xinbaicheng edited this page Oct 31, 2017
·
10 revisions
/**
* @param flag 开启硬解的标志位
*/
public void setCodecFlag(int flag)public enum KSYDecodeMode {
KSY_DECODE_MODE_SOFTWARE,
KSY_DECODE_MODE_AUTO,
KSY_DECODE_MODE_HARDWARE
}
/**
* @param mode 硬解模式
*/
public void setDecodeMode(KSYDecodeMode mode)SDK提供三种解码模式,其含义如下所示
| 名字 | 含义 |
|---|---|
| KSY_DECODE_MODE_SOFTWARE | 播放器使用软解 |
| KSY_DECODE_MODE_AUTO | SDK尝试使用硬解,当机器不在白名单里时,自动切换至软解 |
| KSY_DECODE_MODE_HARDWARE | SDK尝试使用硬解,当机器不在白名单里时,自动切换至软解 |
在创建好解码器之后,无论是硬解还是软解,播放器都会通过监听器OnInfoListener将当前使用的解码类型告知使用者
硬解: MEDIA_INFO_HARDWARE_DECODE
软解: MEDIA_INFO_SOFTWARE_DECODE该消息通知的SDK版本要求: v1.4.6 or later
具体消息定义可参见:https://github.com/ksvc/KSYMediaPlayer_Android/wiki/KsyMediaPlayerConstants
- 使用
硬解功能时建议使用KSYTextureView - 如若不使用
TextureView, 而使用纹理Id创建SurfaceTexture, 最后释放资源时应先释放播放器, 再释放SurfaceTexture, 否则容易出现崩溃
播放器默认使用软解,在调用本接口后播放器才会尝试使用硬解,如果机型不在白名单中,仍旧使用软解
SDK暂时只支持对264和265视频的硬解,且须在prepareAsync之前设置
KSYMediaPlayer ksyMediaPlayer;
// 硬解264
ksyMediaPlayer.setCodecFlag(KSYMediaPlayer.KSY_USE_MEDIACODEC_H264);
// 硬解265
ksyMediaPlayer.setCodecFlag(KSYMediaPlayer.KSY_USE_MEDIACODEC_H265);
//硬解264&265
ksyMediaPlayer.setCodecFlag(KSYMediaPlayer.KSY_USE_MEDIACODEC_ALL);
ksyMediaPlayer.prepareAsync();KSYMediaPlayer ksyMediaPlayer;
//使用软解
ksyMediaPlayer.setDecodeMode(KSYDecodeMode.KSY_DECODE_MODE_SOFTWARE);
//使用自动模式
ksyMediaPlayer.setDecodeMode(KSYDecodeMode.KSY_DECODE_MODE_AUTO);