1. 背景

在开发小窗播放的时候遇到的问题,应用主页和详情页都有一个小窗播放,还有一个全屏的播放页,测试的时候发现两种小窗播放的场景不能播放,而全屏的页面却可以。

2. 报错

04-02 16:32:47.005 E/HttpProxyCacheDebuger( 8515): Error fetching info from 01.m3u8?.....04-02 16:32:47.006 W/System.err( 8515): java.net.MalformedURLException: Protocol not found: 01.m3u8?...04-02 16:32:47.014 E/HttpProxyCacheServer error( 8515): Error processing request. Version: 6.0.1...04-02 16:32:47.016 E/tv.danmaku.ijk.media.player.IjkMediaPlayer( 8515): Error (-10000,0)

3. 问题

经过测试发现两点:1. 拿到的播放链接是经过302重定向跳转的;2. 因为有小窗播放,在页面跳转回来的时候需要重新播放触发了onResume。

众所周知,GSYVideoPlayer最方便的点就在于可以切换系统内核、ijkplayer内核,exo2Player三种不同的内核,我开始使用的是ijk的内核,在进入小窗播放页面的时候会调用 startPlayLogic 开始播放在等待播放的同时触发了Activity的onResume,在onResume中又重新调用了一遍 startPlayLogic,导致播放失败

4. 解决

知道了问题之后,将其改为一次调用,发现ijkplayer内核会对重定向的视频链接做解析,得到真正的文件链接之后然后再去播放,整个过程大概用了20s左右,时间实在是太长了,不能忍受。

后来我将内核切换到系统内核,发现视频不能播了,原来系统内核不会对重定向的地址做解析,那就需要一个解析真正视频地址的操作如下:

new Thread(new Runnable() {@Overridepublic void run() {URL url = null;try {url = new URL(finalPlayUrl); // 原有的urlHttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.getResponseCode();String realUrl = conn.getURL().toString(); // 真正的播放链接conn.disconnect();} catch (Exception e) {e.printStackTrace();}}
}).start();

加上网络连接到真正播放,耗时5s以内,还是勉强可以接受的。

5. 总结

1. ijkplayer内核会对重定向的地址做解析,但是整体速度会非常慢。

2. 测试使用的链接是:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8,因为需要模拟重定向的操作,就让服务端的同学帮忙做了一层转换。

GSYVideoPlayer 播放m3u8格式视频遇到的坑相关推荐

  1. srs服务器播放文件,使用SRS+ffmpeg搭建流媒体服务器播放m3u8格式视频

    1.简介 srs是一个简单的流媒体开源直播软件,ffmpeg是完整的跨平台解决方案,用于记录,转换和流传输音频和视频. 2.相关 官网下载页面:点击我到达 在线演示播放页面:点击我到达 Git页面:点 ...

  2. video标签播放m3u8格式视频-------html页面

    m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般 ...

  3. video插件播放m3u8格式视频(存原生)

    video插件播放m3u8格式视频(存原生) 这里使用原生的javascript实现m3u8格式视频播放. 使用了包括video.min.js库和HLS插件. 1-基础使用 <!DOCTYPE ...

  4. uniapp H5 项目 播放 m3u8格式视频

    uniapp H5 项目 播放 m3u8格式视频 阐述 在项目中,可能会获取一些直播流地址,比如最常见的就是.m3u8视频格式.在小程序可以直接使用video 标签就可以直接播放,因为小程序有自己的引 ...

  5. Video 标签播放 m3u8 格式视频

    在不借助流媒体播放器的前提下,直接播放 m3u8 格式的视频文件 更多精彩 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线 写在前面的话 为什么要播放 m3u8 格式的视频 对于一 ...

  6. androidTV在html中集成饺子播放器并播放m3u8格式视频

    饺子播放器的默认引擎是MediaPlayer,只能播放一些常见格式的视频.想要播放m3u8格式,需要切换引擎 jzvdStd.setUp("http://youku.cdn-iqiyi.co ...

  7. Android播放M3U8格式视频失败

    一.背景 Android使用Ijkplayer播放m3u8图片格式的视频失败IOS没问题,当我们使用自定义播放器播放后端给的一个视频地址时,正常直接把播放链接丢到播放器里即可,但是m3u8格式视频比较 ...

  8. vue使用原生videojs 播放m3u8格式的视频——播放m3u8格式视频(一)

    vue使用原生video播放m3u8格式的视频 1.安装依赖 2.页面引入插件(这里我是页面单独引入,减少项目体积) 3.页面中的使用 常见问题 4.实现过程 5.实现.m3u8格式视频播放方法 1. ...

  9. 第一次在Vue项目中播放m3u8格式视频遇到的问题和解决方法

    一.m3u8文件 第一次接触这种m3u8格式的视频文件,开始以为类似与.mp4这种,所以在项目中我通过html5提供的video标签做播放功能发现并不能成功,后来了解到M3U8文件是一种UTF-8编码 ...

最新文章

  1. linux 文泉驿正黑字体,文泉驿字体系列打包下载-文泉驿字体下载-西西软件下载...
  2. greenplum分区表查看所占空间大小
  3. android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)
  4. Common Subsequence
  5. 布斯乘法以及带符号数的运算
  6. 《Python Cookbook 3rd》笔记(3.14):计算当前月份的日期范围
  7. modelsim和matlab联合仿真,Modelsim与Matlab联合仿真
  8. 从QQ空间热度分析看社区营销
  9. 小程序swiper-item内容过多显示不全的解决方案
  10. 软考中级-数据库系统工程师复习大纲
  11. CFA一级考试题型是什么?好不好考?
  12. gene Ontology (基因本体论)
  13. 动物识别系统代码python_动物识别系统__代码
  14. 网络流——最大流和最小割
  15. python freshman day2
  16. python 内置属性__setattr___python 属性四种管理方法property,descriptor, __get/setattr__, __getatribute __...
  17. Web前端期末大作业--响应式个人日志博客网页设计(HTML+CSS+JavaScript)实现
  18. 星方案|StarFS文件系统支持海量视频媒体业务存储
  19. IBM SPSS Statistics为什么更适合做大数据分析
  20. 【阿里云】阿里云磁盘异常爆满的原因排查及解决方法,df和du命令查看磁盘时结果不一致

热门文章

  1. 北风:微信状态视频引流、变现实操经验分享
  2. mob sdk vue 短信验证_vueCli集成环信SDK
  3. javax.mail.MessagingException: Could not connect to SMTP host: smtp.xdf.cn
  4. 量子计算机时空穿越,量子世界里的怪异现象,人类进行时间穿越,也不会引发蝴蝶效应...
  5. 那年声明理解不了定义与初始化(三)
  6. 开放的精神推动Aleph Objects的成功
  7. git错误 ! [rejected] master -> master (non-fast-forward)
  8. 惊艳你眼球的9个物理魔术!
  9. 凤凰涅磐 --- Phoenix 2 发布预览
  10. Luogu P1115 最大子段和