android 播放网络视频:拖动进度条,实现缓冲到拖动位置才开始播放的问题

muximuxi525 2015-04-01 01:33:08
android 播放网络视频:拖动进度条之后, 先暂停当前视频, 等缓冲完毕数据之后再播放视频怎么实现
相关:
(1)因为现在的情况是还没缓冲到我拖动的位置,就开始播放视频了,这样出现有1到2秒左右的卡顿,一个师兄建议我
先缓冲到拖动的位置完毕之后再开始播放
(2)准备使用mediaPlayer回调函数中实现的public boolean onInfo(MediaPlayer mp, int what, int extra, int viewId)
的常量 MEDIA_INFO_BUFFERING_START, MEDIA_INFO_BUFFERING_END
来实现,但是问题是,当拖动进度条的时候,MediaPlayer的seekTo执行完毕之后,videoActivity才接受到这两个常量的消息提醒。
而seekTo执行之后,视频就已经跳到还没缓冲完毕的位置上,导致卡顿。

总结一下:怎么做才能在使得视频seekTo到 已经缓冲完毕的视频上面?
...全文
3238 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33306079 2016-01-21
  • 打赏
  • 举报
回复
怎么实现边缓存本地文件 边播放 的 求代码。。。。
u010486798 2015-07-10
  • 打赏
  • 举报
回复
请问你是怎么实现缓冲的,现在一直困惑如何在线视频,边缓冲边播放,拖动seekbar不卡?
山鹰1985 2015-04-20
  • 打赏
  • 举报
回复
谢谢你的采纳,呵呵,补充下,最近发现,SeekBar也有secondBar这个属性,看了API才发现,他是ProgressBar的孙子类,汗,之前一直没注意,惭愧啊。secondBar应该就是用来显示缓冲的那条灰色条了。
muximuxi525 2015-04-20
  • 打赏
  • 举报
回复
引用 3 楼 u012137924 的回复:
昨晚看了一部电影,睡觉前,突然有了一个想法。 用FreamLayout把progressBar 和seekBar 放在一个位置上,progressBar和seekBar的最大值都设为当前视频总长度,开启线程加载进度条,progressBar和seekBar的颜色调下,progressBar颜色浅一点,就好像看视频时的那个灰色进度条一样,get到的数据用线程加载到进度条上,这样就可以清楚的看到当前缓冲到的地方;如果用户非要拖动seekBar到没有缓冲好的地方,那么开启一个线程加载圆形进度条并暂停播放,然后,取出progressBar的值与seekBar所在的位置的值比较,就可以知道该缓冲还是该播放了。大致意思就是这样,希望我的描述你的理解,呵呵。
谢谢你的解答
山鹰1985 2015-04-02
  • 打赏
  • 举报
回复
昨晚看了一部电影,睡觉前,突然有了一个想法。 用FreamLayout把progressBar 和seekBar 放在一个位置上,progressBar和seekBar的最大值都设为当前视频总长度,开启线程加载进度条,progressBar和seekBar的颜色调下,progressBar颜色浅一点,就好像看视频时的那个灰色进度条一样,get到的数据用线程加载到进度条上,这样就可以清楚的看到当前缓冲到的地方;如果用户非要拖动seekBar到没有缓冲好的地方,那么开启一个线程加载圆形进度条并暂停播放,然后,取出progressBar的值与seekBar所在的位置的值比较,就可以知道该缓冲还是该播放了。大致意思就是这样,希望我的描述你的理解,呵呵。
山鹰1985 2015-04-01
  • 打赏
  • 举报
回复
你从网上get到的视频长度,与视频的总长度,还有当前seekBar的位置,seekBar与视频总长度之间有个比率,利用这些值可以总结出一个思路。比如说:当前拖动到40%的位置,那么视频总长度乘以(1 - 40%)就应该是当前视频播放的位置,那么,你现在就可以判断下get到的视频长度是否到达这个值,如果到了,那么可以播放,没到,那么就缓冲。 思路:get到的视频长度,每隔5秒,用临时文件存储一下,然后在你seekBar的Activity获取出来,然后,用seekBar的与视频总长度的比率乘以视频总长度,然后比较这2个值,如果,get到的值小于这个值,那么,就缓冲一下;反之,则可以开始播放。(小建议:最好把这个比率乘以总长度的值尽量大一点,这样做的原因是,怎么说呢,我们看视频的时候,有见过缓冲的灰色进度条吧,大概就是这个意思了,多缓冲一下,可以使得播放更加流畅,呵呵。) 个人觉得可行,之前我用MediaPlayer做视频的时候,没碰到过卡,不过,我只是测试了下同事做的网站上的视频,呵呵,可能是单用户访问的原因吧。
开发者_android 2015-04-01
  • 打赏
  • 举报
回复
setOnPreparedListener设置后,拖动后会等缓冲数据准备好再播放。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧