我已经解决了,包括播放网络视频,而且运行的很好!!我发现一个规律,只要多次seekto 之后,肯定能准确跳转。所以我写了一个重复seekto 的机制:

首先初始化加入配置项:

//SeekTo设置优化

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0L);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "fastseek"); //快速seekto

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 0);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "reconnect", 1);

//重复seekto 的过渡值

private int curSeekPos = -1;

private int curSeekCount = 0;

mPlayerSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

if (!fromUser) {

return;

}

long duration = getDuration();

long newposition = (duration * progress) / 1000L;

seekTo((int) newposition);

if (mPlayerTime != null)

mPlayerTime.setText(stringForTime((int) newposition));

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

curSeekPos = 0;

curSeekCount = 0;

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

long duration = getDuration();

long newposition = (duration * seekBar.getProgress()) / 1000L;

if (mMediaPlayer != null && mMediaPlayer instanceof IjkMediaPlayer) {

((IjkMediaPlayer) mMediaPlayer).setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "seek-at-start", newposition);

}

seekTo((int) newposition);

//记录最后需要seekto 的position。

curSeekPos = (int) newposition;

}

});

//重复 seekto

private void repeatSeekTo() {

curSeekCount++;

if (mMediaPlayer != null && mMediaPlayer instanceof IjkMediaPlayer) {

((IjkMediaPlayer) mMediaPlayer).setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "seek-at-start", curSeekPos);

}

seekTo(curSeekPos);

}

// 监听是不是 seekto 成功了,不成功重seekto,最大次数为 3 次

private IMediaPlayer.OnSeekCompleteListener mSeekCompleteListener = new IMediaPlayer.OnSeekCompleteListener() {

@Override

public void onSeekComplete(IMediaPlayer mp) {

boolean isSeekComplete = true;

if (curSeekPos > 0) {

if (Math.abs(mMediaPlayer.getCurrentPosition() - curSeekPos) <= 1000) {

curSeekPos = 0;

curSeekCount = 0;

} else if (curSeekCount <= 3) {

repeatSeekTo();

isSeekComplete = false;

}

}

}

};

android seekto实现_Android IjkPlayer seekto后会有时会向后跳跃?不准确怎么解决相关推荐

  1. android seekto实现_Android开发之音乐播放器的实现

    Android音乐播放器 使用到Android的Actiivity和Service组件 播放音频的代码应该运行在服务中,定义一个播放服务MusicService,服务里定义play.stop.paus ...

  2. win10子系统编译android,基于win10子系统ijkplayer全量编译(支持所有格式)流程

    1 环境搭建 1.1 编译环境说明 ijkplayer目前支持linux,mac平台编译.windows平台暂不支持.如果没有linux环境,可以使用win10自带的子系统ubuntu进行编译.win ...

  3. android edittext不可复制_Android中使EditText只读的方法(可恢复编辑状态)

    可以通过以下几种方法实现EditText的只读属性 1. 方法一:使用EditText的android:Editable属性 将EditText的Editable属性设置为false后,EditTex ...

  4. h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题

    h5+app Android上架华为应用市场被拒原因"拒绝获取手机权限后app会闪退" 华为应用市场报错:拒绝获取手机权限后app会闪退,此问题解决方案如下: 在manifest. ...

  5. android 的由来,Android的词源_Android的由来_同根词_同源词_趣词词源字典

    Android(安卓):炼金术大师大阿尔伯特所制造的人性机器 英语单词Android(安卓)来自炼金术大师大阿尔伯特(Albertus Magnus)所制造的为他服务的小侏儒"Android ...

  6. (android实战)第三方应用反编译并修改UI信息后,重新编译

    在实际开发过程中,我们会看到好的第三方效果,羡慕不以,就想如何能看到被人的UI布局,下面就是如何对第三方应用进行反编译,并重新编译的全过程 第一步 下载android-apktool 下载路径:htt ...

  7. Android NDK调试出错Unknown Application ABI, Unable to detect application ABI#39;s的解决方式...

    今天在调试Android NDK的时候,ADT的控制台报了这个错误: Unknown Application ABI, Unable to detect application ABI's 在网上查了 ...

  8. Android studio编译日志输出中文出现乱码 (如apk为中文命名时候)解决

    Android studio编译日志输出中文出现乱码 (如apk为中文命名时候)解决 遇到乱码问题导致编译后 apk安装文件出错等 使用如下方法解决: 没有则点击**"create" ...

  9. [WFD][UIBC]连接Wifi display后,有时会自动启动物理键盘

    [WFD][UIBC]连接Wifi display后,有时会自动启动物理键盘 [DESCRIPTION] 目前KK版本支持WIFI Display的load有时连接Wifi display dongl ...

最新文章

  1. Linux启动屏幕打印日志,linux启动时如何在屏幕上找到文本显示?这...
  2. ubuntu 允许root用户登陆ssh
  3. 产品经理,如何建立自己独特的产品观?(转)
  4. 把Liststring集合,编程string,并以“,”号分割
  5. 多图上传乱序php,discuz图片顺序混乱解决方案_php技巧
  6. Python查找所有类似于123-45-67+89 = 100的组合
  7. Dart的套接字与web套接字
  8. javaweb实训第六天下午——Mybatis基础
  9. r语言html爬虫,如何用R语言爬取网页中的表格
  10. php include_once 路径,php使用include加密路径的方法介绍
  11. 【渝粤教育】国家开放大学2018年秋季 0455-22T物流实务 参考试题
  12. 三津谈保险系统建设(一): 现状分析和建设目标规划
  13. 乌班图 修改ip_unbuntu(乌班图)虚拟机修改ip地址NAT模式
  14. Java面试知识点概览(持续更新)
  15. 一文说透所有期权基本交易策略
  16. 文字识别:Tesseract OCR
  17. html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
  18. PubWin不知道密码情况下卸载
  19. 开心下单助手v1.0免费版
  20. 技术面常见问题(持续更新)

热门文章

  1. L293D驱动模块的使用详解
  2. flink cdc 初识
  3. 【CryptoKitties源码解析】养猫的正确姿势!
  4. 01 如何设置远程机器的转发
  5. 情人节表白代码【爱你到天荒地老】
  6. 网页三剑客Dreamweaver、Flash、Fireworks CS6
  7. mysql备份文件类型_mysql8 参考手册--备份和恢复类型
  8. Linux 存储 superblock
  9. 如何不使用QQ邮箱,纯靠代码发送QQ邮件?
  10. php使用smtp发送邮件(ssl链接方式)