首页
友链
关于
推荐
Github
Weibo
Search
1
Tomcat安装配置
4,771 阅读
2
《ArcGIS Runtime SDK for Android学习笔记》-11、自定义扩展图层加载Google地图/高德地图并缓存
1,401 阅读
3
《ArcGIS Runtime SDK for Android学习笔记》-10、自定义扩展图层加载天地图并缓存
1,233 阅读
4
Android视频播放器ExoPlayer使用入门
1,133 阅读
5
GIS基础软件及操作(七)
1,042 阅读
计算机基础
语言基础
数据结构与算法
设计模式
移动端技术
源码解析
跨平台技术
前端技术
后端技术
持续集成
GIS技术
软件操作
移动端
三维技术
瞎推荐
沉迷学术
博客维护
登录
Search
标签搜索
读书笔记
Android
ArcGIS
Java
ArcGIS Runtime SDK
ArcGIS for Android
《Java编程思想》
JavaScript
Hexo
《Android开发艺术探索》
IPC机制
《第一行代码》
计算机基础
《JavaScript高级程序设计》
《计算机网络》
源码解析
Cesium
Spring Boot
Spring
《ECMAScript6入门》
wshunli
累计撰写
129
篇文章
累计收到
34
条评论
首页
栏目
计算机基础
语言基础
数据结构与算法
设计模式
移动端技术
源码解析
跨平台技术
前端技术
后端技术
持续集成
GIS技术
软件操作
移动端
三维技术
瞎推荐
沉迷学术
博客维护
页面
友链
关于
推荐
Github
Weibo
搜索到
14
篇与
前端技术
的结果
2018-07-04
在线直播技术解决方案及其实现方法(移动端)
简单地记录下 Android 移动端直播技术实现方法。 目前对移动端直播技术实现方法了解还不够全面,本文仅介绍一种基于 RTMP 协议的在线直播实现方法。 直播系统可以简单地分为三部分:服务端、推流端、拉流端。
2018年07月04日
304 阅读
3 评论
0 点赞
2018-06-23
在线直播技术及其实时视频流可视化方法(前端)
【现已公开】记录在线直播技术及其实时视频流可视化方法(前端)。 前面写的在三维模型上贴视频的算法要真正应用了,视频使用的是萤石直播的在线视频流,中间遇到了一些问题记录下。 在线直播技术 直播中常用到的流媒体协议有 rtmp、http、hls、rtsp 。 根据其数据分段可分为两类,以 rtmp 为代表的连续流协议,以 hls 为代表的切片文件协议。 这里贴一些直播的真实地址: 哔哩哔哩 https://720759109.cloudvdn.com/live-qn/553668/live_50329118_9516950.flv 斗鱼直播 https://txy.live-play.acgvideo.com/live-txy/124776/live_352577_9496178.flv 萤石直播(移动端)http://hzhls07.ys7.com:7891/hcnp/598370938_1_1_1_0_cas.ys7.com_6500.m3u8 为了防盗链,这些地址是会变化的,不过我们可以看到 flv 后缀,也就是连续流的协议比较多。 具体详细区别可以查阅参考资料。 可视化技术 实时视频流因为协议的原因,和直接播放视频又有点不太一样。 1、针对 HTML5 视频播放,可选 <video></video> 标签直接播放。 这里推荐使用一款优秀的开源库 Video.js - open source HTML5 & Flash video player http://www.videojs.com 使用和原生基本没有区别,仓库地址:https://github.com/videojs/video.js 对于直播播放的需求,可以使用插件 HLS library for video.js http://videojs.github.io/videojs-contrib-hls/ 示例代码 <video id=example-video width=600 height=300 class="video-js vjs-default-skin" controls> <source src="https://example.com/index.m3u8" type="application/x-mpegURL"> </video> <script src="video.js"></script> <script src="videojs-contrib-hls.min.js"></script> <script> var player = videojs('example-video'); player.play(); </script> 因为在项目里面需要使用 video 标签,这款开源库对代码侵入性有点高,所以没有使用。 2、Bilibili 开源库 flvjs 播放器 前面提到目前使用连续流协议的直播比较多,其实也是因为其有延时低的优势。 这时我们可以采用另外一款优秀的开源库 HTML5 FLV Player https://github.com/Bilibili/flv.js 示例代码: <script src="flv.min.js"></script> <video id="videoElement"></video> <script> if (flvjs.isSupported()) { var videoElement = document.getElementById('videoElement'); var flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'http://example.com/flv/video.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); } </script> 这个代码侵入性就很低了,播放在线或者直播视频很方便。 遗憾的是只支持 flv 或者 mp4 格式,不过很有前瞻性。 3、直播流专用播放器 hlsjs 介绍 前面链接可以看到,实际项目中使用的 hls 流媒体协议。 我们可以使用另外一款播放器 JavaScript HLS client using Media Source Extension http://video-dev.github.io/hls.js/demo 仓库地址:https://github.com/video-dev/hls.js 同样代码进入性很低,最终使用的是这个。 示例代码: <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <!-- Or if you want a more recent canary version --> <!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> --> <video id="video"></video> <script> var video = document.getElementById('video'); if(Hls.isSupported()) { var hls = new Hls(); hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8'); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED,function() { video.play(); }); }else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8'; video.addEventListener('loadedmetadata',function() { video.play(); }); } </script> 这里在七牛云搭建了自己的 hls 协议直播流做测试。 七牛云:http://streams.wshunli.com/x36xhzz/x36xhzz.m3u8 源地址:https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8 国内迁移:https://coding.net/u/wshunli/p/streams/git/raw/master/x36xhzz/x36xhzz.m3u8 一些电视直播的视频流: http://ivi.bupt.edu.cn/hls/cctv1.m3u8 http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8 一些问题 在实际使用过程中,视频是可以播放了,但是服务器不支持跨域访问 CROS ,这里使用 CDN 解决。 原直播地址:http://hzhls07.ys7.com:7891/hcnp/598370938_1_1_1_0_cas.ys7.com_6500.m3u8?72c37bfb139c4478aae93be333696294 在又拍云或者七牛云做 CDN 后 又拍云:http://live.wshunli.com/hcnp/598370938_1_1_1_0_cas.ys7.com_6500.m3u8?72c37bfb139c4478aae93be333696294 七牛云: http://hzhls07.live.wshunli.com/hcnp/598370938_1_1_1_0_cas.ys7.com_6500.m3u8?72c37bfb139c4478aae93be333696294 将 hzhls07.ys7.com:7891 替换为 live.wshunli.com / hzhls07.live.wshunli.com 即可。【已停止解析】 http://hzhls07.ys7.com:7891/hcnp/598370938_1_1_1_0_cas.ys7.com_6500.m3u8?72c37bfb139c4478aae93be333696294 http://hzhls01.ys7.com:7886/hcnp/472637161_1_1_1_0_cas.ys7.com_6500.m3u8?e75321b700354bba8eefb328e0f69e52 http://hzhls01.ys7.com:7890/hcnp/598370947_1_1_1_0_cas.ys7.com_6500.m3u8?f896989dd82a463a9c949aa2454ae2dd 这里可能要根据源地址/端口调整,估计会有很多子域名需要做 CDN ,这有点类似于反向代理技术啊。 参考资料 1、直播技术——流媒体协议 - CSDN博客 https://blog.csdn.net/qq_34447388/article/details/78995511 2、RTMP HLS HTTP 直播协议一次看个够 - 简书 https://www.jianshu.com/p/4c89b2c83e59 3、[原创]直播服务器简单实现 http_flv和hls 内网直播桌面 - lucpp - 博客园 https://www.cnblogs.com/luconsole/p/6079534.html 2019年06月23日公开全文。
2018年06月23日
125 阅读
0 评论
0 点赞
2017-11-15
《深入浅出React和Redux》读书笔记(二)
继续学习 《深入浅出React和Redux》
2017年11月15日
62 阅读
0 评论
0 点赞
2017-11-10
《深入浅出React和Redux》读书笔记(一)
发现马上就要入前端的大坑了。ES6入门内容很多还没看完,现在先学习 React 吧。
2017年11月10日
130 阅读
0 评论
0 点赞
2017-11-09
《ECMAScript6入门》读书笔记(三)
《ECMAScript6入门》读书笔记 这部分学习 ES6 中新增的数据类型。
2017年11月09日
85 阅读
0 评论
0 点赞
2017-11-09
《JavaScript高级程序设计》读书笔记(六)
《JavaScript高级程序设计》读书笔记 (六) 学习JavaScript的一些高级技巧及实践方案。(22-25章)
2017年11月09日
115 阅读
0 评论
0 点赞
2017-11-08
《JavaScript高级程序设计》读书笔记(五)
《JavaScript高级程序设计》读书笔记 (五) 学习 JavaScript 对各数据载体的操作方法(如JSON、XML),学会 Ajax 的使用方法。(18-21章)
2017年11月08日
39 阅读
0 评论
0 点赞
2017-11-08
《JavaScript高级程序设计》读书笔记(四)
《JavaScript高级程序设计》读书笔记 (四) 学习在浏览器中进行实际开发时的错误调试技巧。(17章)
2017年11月08日
139 阅读
0 评论
0 点赞
2017-11-07
《JavaScript高级程序设计》读书笔记(三)
《JavaScript高级程序设计》读书笔记 学习HTML新增的一些对象提供的API,包括canvas ,媒体事件等。(15-16章)
2017年11月07日
59 阅读
0 评论
0 点赞
2017-11-05
《ECMAScript6入门》读书笔记(二)
《ECMAScript6入门》读书笔记 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
2017年11月05日
89 阅读
0 评论
0 点赞
2017-11-05
《ECMAScript6入门》读书笔记(一)
《ECMAScript6入门》读书笔记 《JavaScript高级程序设计》中学习了前八章,后面是一些 DOM 相关的知识,现在开始学习 ES6 语法。
2017年11月05日
45 阅读
0 评论
0 点赞
2017-11-05
《JavaScript高级程序设计》读书笔记(二)
《JavaScript高级程序设计》读书笔记 (二) 熟悉JavaScript运行的环境,深刻理解DOM,熟悉DOM提供给JavaScript的原生API。(8-14章)
2017年11月05日
48 阅读
0 评论
0 点赞
2017-10-29
《JavaScript高级程序设计》读书笔记(一)
《JavaScript高级程序设计》读书笔记 从今天开始阅读 《JavaScript高级程序设计》(第三版)。
2017年10月29日
57 阅读
0 评论
0 点赞
2017-10-22
《JavaScript DOM 编程艺术》读书笔记
《JavaScript DOM 编程艺术》读书笔记
2017年10月22日
62 阅读
0 评论
0 点赞