查看详情

随笔-20180401

已经是四月天~ 三月中,荣妈离职,小侄女一直叫荣儿,也不知道为什么想起这么叫,大概老是会说,散场似乎就这么来了,三四月份尤其严重,大概流动性就是这样。 月底放量,想起了去年的九月下旬,每一步都不容易,不过成就感还是会有些,算是近几个月付出的回报,从去年下半年到今年年初这几个月,一直都有接触些以前没有接触的内容,谈不上技术多么的深入,对于新鲜事物还保持着好奇心,保持着热度,不知道算不算一个优点~ 前些天和某些朋友聊起了 VR, 大概对于这块领域而言,自己的认知还停留在 游戏 活着 360 照片上。大概也是受人启迪,加上近些年的 FB 布局,想起了 十年前的 iPhone ,变革似乎总那么静悄悄,突然有一天给你来个爆发。大概新的交互方式,无论是 AR 还是 VR ,新的交互方式比较促进新的变革。未来,依旧有很多值得抓的领域。 今天见到硕爷发的大学同学的长沙小聚,去年重阳回的长沙,还是那家一样的烧烤店,今日加上看的日本毕业季视频,似乎青春真的好美,遗憾虽有,但是那些人,那些事,终将在记忆里深刻。 近些天看《这! 详情 »

查看详情

Media Source 系列 - 结合 range 控制媒体请求缓存大小

上一篇写了 Media Source 系列 - 播放 m3u8 文件 , 写了使用 MSE 来播放一个包含分片内容的资源。同样除此之外,我们可以借助 MSE 来进行更加 细粒 的缓存控制调度。 HTTP Range HTTP Range ,HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。假如在响应中存在 Accept-Ranges 首部(并且它的值不为 “none”),那么表示该服务器支持范围请求。 比如我们请求一个视频的一部分: $ curl http://localhost:8000/media-source/vdeoplayback.mp4 -i -H "Range: bytes=0-1023" 使用 fetch 请求 视频的一部分内容 正如前面提到了,如果服务器支持请求 range 的内容, 详情 »

查看详情

Media Source 系列 - 播放 m3u8 文件

前一篇文章 《使用 Media Source Extensions 播放视频》 我们大致写了 Media Source Extensions, MSE 的基本介绍和使用。这篇文章是在之前基础上完成的,文章将实现如何借助 MSE 来播放流文件比如 m3u8 或者 dash。 自己之前在知乎上回答过这个问题 有支持M3U8格式的HTML5播放器吗? 有简单说一些基本实现思路,但是没有贴实现的代码,因为已经有很多前端开源的播放器了比如 hls.js, 不过今天这篇文章会贴出一些基本的代码来实现这块逻辑; 了解 m3u8 文件 HLS, HTTP Live Streaming 苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案。在App Store中的视频相关的应用,基本都是应用的此种技术。该技术基本原理是将视频文件或视频流切分成小片(ts)并建立索引文件(m3u8)。 参考上图,HLS 的架构基本都是会将一个完整的视频分割成不同的小视频,然后通过索引文件 m3u8 建立起联系; 我们可以看下 自己使用 ffmpeg 手动转换的 文件 index. 详情 »

查看详情

使用 mux.js 播放 .ts 文件

使用 mux.js 播放 .ts 文件 本篇大概是Media Source 系列 - 播放 m3u8 文件 的一篇补充。这里大概需要涉及一些视频的编码和解码方面的知识补充。 mux.js 是 videojs 团队出品的一款轻量级前端工具,用于嗅探或者修改 video 的视频的格式: Lightweight utilities for inspecting and manipulating video container formats. 我们播放的视频现在有很多类型,比如 mp4, flv, 3gp 等。但是我们从浏览器角度出发,目前最好的格式 还是 mp4, 但是如果我们需要播放 .ts 的切片的文件(m3u8)单元或者 .flv 文件。这个时候,实际我们通过 Video 是无法直接播放的。(.m3u8 文件 Apple 详情 »

查看详情

使用 concurrently 运行多个 npm 命令

我们平时可能需要同时在一个 npm scripts 中运行多个 npm 命令。我们第一时间想到了 && 。当然大多数情况我们是可以完成既定的需求,因为其实这些都是在同个进程中,如果我们需要运行的命令需要拿到两个进程的的输出,比如我们同时启动两个 server ,不同端口号。 在日常我们经常会遇到一个用于静态资源的服务器,一个是 业务的 Web 服务器,我们可以使用 webpack 的 middleware 来实现,我们也可以单独拆分。 即分开成两个命令启动。这个适合使用 concurrently 就非常方便了。 比如我们需要启动一个 npm run watch-js 和 npm run watch-less 两个命令。 npm i concurrently -save-dev 安装完成后,我们只需要在我们的 npm scripts 里添加一个合并的命令: "start": "concurrently \"npm run 详情 »

随笔-20170305

很久没有写了,大概前面一阵子情绪一直都是特别低落。不过好在翻过农历新年后,心情稍微好点,感谢朋友和家里人的支持。 今天和 Team 聚餐,蓉妈离职请大家小聚。自己嘲笑自己,说是发现了小秘密: 坐在我左边的同事最后都走了~ 经常说起,职场就是 有聚有散 ,这样的道理大家都懂,只是说的云淡风轻,内心确实无数种无奈。 生活是那样的会给人 惊喜,除了接受,也只能接受。其实人处在低谷的时候确实会懒,懒的看书,懒得写字,懒得与人交流。不过当你度过这样的阶段,你会认清很多事情,什么是重要的,什么是自己去好好把握的。 前些天回答了 在你看过的电影或电视剧中,哪个片段最霸气、最有气势? 里面这样写道: 大概那个时候 希望 这个词汇是那么有力量~ 明天会更好~ 详情 »

查看详情

Web前端年后跳槽面试复习指南

很多童鞋可能年后有自己的一些计划,比如换份工作环境,比如对职业目标有了新的打算。当然面试这一关不得不过,大概又不可能系统性的复习,这里罗列一些 重点 面试的知识点和文章,方便大家重温一些知识,祝大家心愿达成; HTML CSS 浏览器渲染 浏览器的渲染流程,这一块几乎很多人都会问,如果你是个初级前端,可能这个问题,你大致能够了解道出一些就好,但是如果你是个高级前端,这一块你至少得随时画出这些图,这些有助于你去了解性能优化的点: 这里安利两篇文章,非常详细的讲解了渲染的流程: How browsers work Introduction to Layout in Mozilla HTML HTML 现在相对问的比较少一点,但是如果你需要临时补一下的话,建议看下 Video 和 Canvas 元素。因为这两块确实成为了近两年非常火的话题;在W3C在新发布的 HTML5.2 规范中,推荐了 Dialog 元素,以及支付请求属性 allowpaymentrequest。推荐阅读下: What’s New in HTML 详情 »

查看详情

Mp4 转换为 Hls 或者 Dash 教程

最近接触流媒体的一些东西,大概这里安利两个命令行工具用于对 mp4 文件的操作; Ffmpeg ffmpeg 是一款非常出名的命令行工具,你可以用它进行格式转换(初中生的我只知道格式工厂),甚至对流进行编码; $ ffmpeg -i input.mp4 output.avi 除此之外你也可以使用它来进行媒体资源基本信息的查看,比如: $ ffmpeg -i videoplayback.mp4 你可以看到命令行的输出: 你可以看到视频的流的一些信息,比如分辨率,码率,编码方式等。 MP4 转换为 HLS 使用 ffmpeg 你可以将 mp4 文件转为支持 HLS 的 m3u8 文件,一个命令就搞定; $ ffmpeg -i yourfile.mp4 -codec: copy -start_number 0 -hls_time 15 -hls_list_size 0 详情 »

查看详情

谷歌开源 H5 流媒体播放器 shaka-player 初探

近些年,随着抖音或者快手大火,视频也成了前端比较热衷的领域,无论是最早的直播,还是现在的短视频,我们都离不开 Video ,我们也需要一个足够健壮的 HTML5 播放器来进行视频内容的播放。 Shaka Player 是 谷歌公司对外开源的一款 JavaScript 类库: Shaka Player is an open-source JavaScript library for adaptive media. It plays adaptive media formats (such as DASH and HLS) in a browser, without using plugins or Flash. Instead, Shaka Player uses the open web standards MediaSource Extensions and Encrypted 详情 »

查看详情

Media Source 系列 - 使用 Media Source Extensions 播放视频

终于有时间写关于 Media Source Extensions (后面简称 MSE) 。Media Source Extensions 是在 2016年成为推荐的的 Html5 API。 This specification extends HTMLMediaElement [HTML51] to allow JavaScript to generate media streams for playback. Allowing JavaScript to generate streams facilitates a variety of use cases like adaptive streaming and time shifting live streams. 草案简单明了的指出这个 API 设计的目的: 允许 JavaScript 来生成看到播放的流媒体扩展了 HTMLMediaElement 对象。允许 JavaScript 详情 »