GSYVideoPlayer 播放m3u8格式视频遇到的坑
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格式视频遇到的坑相关推荐
- srs服务器播放文件,使用SRS+ffmpeg搭建流媒体服务器播放m3u8格式视频
1.简介 srs是一个简单的流媒体开源直播软件,ffmpeg是完整的跨平台解决方案,用于记录,转换和流传输音频和视频. 2.相关 官网下载页面:点击我到达 在线演示播放页面:点击我到达 Git页面:点 ...
- video标签播放m3u8格式视频-------html页面
m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般 ...
- video插件播放m3u8格式视频(存原生)
video插件播放m3u8格式视频(存原生) 这里使用原生的javascript实现m3u8格式视频播放. 使用了包括video.min.js库和HLS插件. 1-基础使用 <!DOCTYPE ...
- uniapp H5 项目 播放 m3u8格式视频
uniapp H5 项目 播放 m3u8格式视频 阐述 在项目中,可能会获取一些直播流地址,比如最常见的就是.m3u8视频格式.在小程序可以直接使用video 标签就可以直接播放,因为小程序有自己的引 ...
- Video 标签播放 m3u8 格式视频
在不借助流媒体播放器的前提下,直接播放 m3u8 格式的视频文件 更多精彩 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线 写在前面的话 为什么要播放 m3u8 格式的视频 对于一 ...
- androidTV在html中集成饺子播放器并播放m3u8格式视频
饺子播放器的默认引擎是MediaPlayer,只能播放一些常见格式的视频.想要播放m3u8格式,需要切换引擎 jzvdStd.setUp("http://youku.cdn-iqiyi.co ...
- Android播放M3U8格式视频失败
一.背景 Android使用Ijkplayer播放m3u8图片格式的视频失败IOS没问题,当我们使用自定义播放器播放后端给的一个视频地址时,正常直接把播放链接丢到播放器里即可,但是m3u8格式视频比较 ...
- vue使用原生videojs 播放m3u8格式的视频——播放m3u8格式视频(一)
vue使用原生video播放m3u8格式的视频 1.安装依赖 2.页面引入插件(这里我是页面单独引入,减少项目体积) 3.页面中的使用 常见问题 4.实现过程 5.实现.m3u8格式视频播放方法 1. ...
- 第一次在Vue项目中播放m3u8格式视频遇到的问题和解决方法
一.m3u8文件 第一次接触这种m3u8格式的视频文件,开始以为类似与.mp4这种,所以在项目中我通过html5提供的video标签做播放功能发现并不能成功,后来了解到M3U8文件是一种UTF-8编码 ...
最新文章
- linux 文泉驿正黑字体,文泉驿字体系列打包下载-文泉驿字体下载-西西软件下载...
- greenplum分区表查看所占空间大小
- android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)
- Common Subsequence
- 布斯乘法以及带符号数的运算
- 《Python Cookbook 3rd》笔记(3.14):计算当前月份的日期范围
- modelsim和matlab联合仿真,Modelsim与Matlab联合仿真
- 从QQ空间热度分析看社区营销
- 小程序swiper-item内容过多显示不全的解决方案
- 软考中级-数据库系统工程师复习大纲
- CFA一级考试题型是什么?好不好考?
- gene Ontology (基因本体论)
- 动物识别系统代码python_动物识别系统__代码
- 网络流——最大流和最小割
- python freshman day2
- python 内置属性__setattr___python 属性四种管理方法property,descriptor, __get/setattr__, __getatribute __...
- Web前端期末大作业--响应式个人日志博客网页设计(HTML+CSS+JavaScript)实现
- 星方案|StarFS文件系统支持海量视频媒体业务存储
- IBM SPSS Statistics为什么更适合做大数据分析
- 【阿里云】阿里云磁盘异常爆满的原因排查及解决方法,df和du命令查看磁盘时结果不一致
热门文章
- 北风:微信状态视频引流、变现实操经验分享
- mob sdk vue 短信验证_vueCli集成环信SDK
- javax.mail.MessagingException: Could not connect to SMTP host: smtp.xdf.cn
- 量子计算机时空穿越,量子世界里的怪异现象,人类进行时间穿越,也不会引发蝴蝶效应...
- 那年声明理解不了定义与初始化(三)
- 开放的精神推动Aleph Objects的成功
- git错误 ! [rejected] master -> master (non-fast-forward)
- 惊艳你眼球的9个物理魔术!
- 凤凰涅磐 --- Phoenix 2 发布预览
- Luogu P1115 最大子段和