-
Notifications
You must be signed in to change notification settings - 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);