查看详情

JS 的原地(in-place)算法实践

In computer science, an in-place algorithm is an algorithm which transforms input using no auxiliary data structure. However a small amount of extra storage space is allowed for auxiliary variables. The input is usually overwritten by the output as the algorithm executes. In-place algorithm updates input sequence only through replacement or swapping of elements. An algorithm 详情 »

查看详情

2019

转眼就是新的一年,很特殊,2020年,自己把它称为新的十年的起点。 回到十年前的那个冬天,读高三开始满满养成了每月的总结,如同现在一样。所以也能够翻看到那个时候临近年关时候内心的所想。那时候恰逢成都一诊和南充一诊结束,说句实话,应该算是考的非常差,非常低谷的时候。那个时候也只能寄托文字给予一点力量,那也是这么多年来难得写的非常低沉的文字: 人们常说有志者,一份耕耘,一份收获。实在是不够,2009年就要过了,我用这个成绩回家过春节,心情自然是难受的,但是如何在剩下的20十几天里将自己提升到新的水平,这是一项艰苦的工作。 无论如何,写下这一篇文章的忧愁,烦恼,悲伤都随着过去吧。只能写下三个词语来总结一下自己,苦难, xx, 醒悟。 大概这篇文章至今重复读过三四次,十年的跨度让一个人可以明白,很多事情真的没有眼前看的那么不堪,从小学到高中很少在春节前的考试出现大的失利,这次算是非常严重的一次。毕竟春节都图一喜庆,没有人希望回去有这样的心事徘徊。其实那个时候担心的压根不是考试,而是担心春节所处种种。其实十年后自己,这点还多多少少会有些影响。人往往做选择,多少会有些非主观因素,近期读《曾国藩》,“布局” 是门学问,值得未来十年的研读。 记得2010年的跨年,是和大学室友一起,自认为四川人点了个中辣的长沙火锅,真的是印象深刻到极致,一算那个时候已到长沙四个月了,但是折服的依旧是长沙的辣椒。回校路上, 详情 »

查看详情

聊聊 Web 视频播放的画中画模式

Chrome 在升级到 70 的时候开始对视频播放的画中画模式开始支持了,用户在浏览器 Web 页面可以通过 画中画的形式强当前画面停留在屏幕正上方,无论你在使用其他软件还是切到其他 Tab ,都可以看到当前画面。 最新的 caniuse 我们可以看到已经覆盖了很多了浏览器版本,包括 最新的 Safari 甚至移动 Android 的 Chrome 浏览器。 特征检测 我们可以通过 video 元素上的 requestPictureInPicture 的方法以及 document.pictureInPictureElement 来判断浏览器是否支持画中画模式。 if ('pictureInPictureEnabled' in document) { // do something } else { // not support } if (typeof videoEl.requestPictureInPicture === 'function') { // do something } else { // not support } API 调用 我们可以通过调用 requestPictureInPicture 来实现画中画播放模式。 someBtn. 详情 »

查看详情

【译】Web 视频播放前前后后

这应该是目前写的最为完整的关于 Web 视频播放的文章。从简单的 Video 元素到 MSE 直播的应用,作者给出了具体的代码,文章由浅入深,普及现代 Web 播放技术的前前后后。五星推荐阅读。 @Paul Berberian 原文地址: https://medium.com/canal-tech/how-video-streaming-works-on-the-web-an-introduction-7919739f7e1 注意:本文是JavaScript视频流的介绍,主要针对Web开发人员。这里的大部分示例都使用HTML和现代JavaScript(ES6)。如果您对它们还不够熟悉,那么您可能会发现很难继续学习,尤其是代码示例。 原生视频 API 从2000年代初期到后期,网络上的视频播放主要依靠Flash插件。 ** 警告用户安装Flash插件 ** 这是因为当时没有其他方法可以在浏览器上流式传输视频。作为用户,您可以选择安装Flash或Silverlight之类的第三方插件,还是根本无法播放任何视频。 为了填补这个空白,WHATWG 开始研究 HTML 标准的新版本,其中包括本地的视频和音频播放。苹果公司在其产品上禁用 Flash 后,这一趋势更加明显。而该标准后面成为现在的 HTML5 的标准。 因此,HTML5除其他新的标签外,将 < 详情 »

查看详情

微信小程序适配 iPhone 11/Pro

最新版本微信更新了 iphone 11 和 12 的型号返回,可以直接判断。 由于目前 iPhone 发售的新机型,iPhone X / iPhone 11 系列,都是刘海屏。因此在小程序设计中,我们经常需要考虑到底部的适配。 常规的我们是通过获取系统信息模块来获取的。 cont app = getApp(); wx.getSystemInfo({ success: function(res) { //model中包含着设备信息 console.log(res.model) const model = res.model; if (model.search('iPhone X') != -1){ app.globalData.isIpx = true; }else{ app.globalData.isIpx = false; } } }) 而 iPhone 11 系列由于微信还未及时更新型号,返回的 详情 »

查看详情

在 FFMPEG 使用 VMAF

《VMAF 视频质量评估工具概述》 中对 Netflix 开源的视频质量评估工具有一个简单的介绍。 如果我们需要了解一个视频在转码过程中怎样的编码配置会产出最好的结果,我们需要尽可能获得一个比较高的分数 (0-100)。 安装 如果你之前没有安装 FFmpeg ,你可以先安装 FFmpeg; brew install ffmpeg videoproc.com 提供了非常详细的教程和分享,你也可以阅读这篇文章进行。 最新的版本已经默认启用 libvmaf 所以,你这样直接安装就好。如果想要自己构建的话,继续阅读下文。 我们要启用 libvmaf, 我们先 clone vmaf 项目。 git clone https://github.com/Netflix/vmaf.git 然后进入 ./libvmaf 目录,我们要 build libvmaf 。 meson build --buildtype release ninja -vC build 我们需要配置 ffmepg; git 详情 »

查看详情

Web 播放 AV1 概述

前言 AV1 是 Google 协同 Netflix, Amazon, Huawei等知名公司所建 AOMedia 联盟推出的一款开放,免费的视频编码格式。而它的直接竞争对手便是目前也非常火热的 HEVC。本文将详细介绍 AV1 的由来和特点,以及如何转码和播放。 发展历史 音视频编解码发展已经有三十余年时间,其实发展的方向也就是两条: 更好的压缩率 更多的播放场景 很早以前我们只能在电视或者 DVD 上看,而现在我们更多的在移动设备或者浏览器上看视频。众所周知,H.264 目前依旧是现在非常主流的编解码方式,它由运动图像专家组开发发布,然而从最早1999年到现在,播放的形式已经千变万化,比如 HDR, 8K ,360° 视频等。为了满足当前的形式发展,H.265 诞生了,在视频压缩上更进一步。然而,不好的事 H.265 需要支付昂贵的专利费用,这是很多厂商无法接受的。 因此一些公司开始尝试别的视频格式,其中 Google VP9, 它是谷歌内部用来代替 H.264 详情 »

查看详情

寒冬将至

下了班,出门飘起了雪。这是来北方见过的最早的一次。路上可见路人兴奋的脚印,一步一步,温度还没跌破 0 ,雪花落在地上,持续不了多久,脚印也就停留那么一小会,看着飘着雪花的城市,此时此刻,是否也会记起南方的那些冬日。 前一阵子,回了南方。云南的冬日依旧那么暖和,似乎这个地方,一年四季都那么暖洋洋。不同的纬度感受着不同的气候时节。每每从北方的冬日穿越道南方的夏日,都会感受道机场那股扑面而来的暖风,虽然热情了点,但还是很喜欢。天气预报说着当地 29 度的体感温度,远远还是比印象中夏日的 29 度凉快些,傍晚沿着公园漫步,走着走着就偶尔会有几个寒颤,有了酒,听着旁边乐队的《New Boy》,似乎 2000 年不是那么远。 已然不记得 2000 年那是几岁的模样,在川的冬日难得遇见大雪,尤其书中的鹅毛大雪,又或是中丘道长初识郭靖父母雪夜,又或是豹子头山神庙的长夜。半夜醒来,表哥叫我出去看这漫天的大雪,半眯着眼,睡眼惺忪看着这一望无际的白,此时此刻,心理觉得是这辈子见过最美的雪。冬日不喜欢早起,尤其寒假,尤其还没有作业的寒假。睡醒已是太阳高挂上空的时候,好在雪依旧在, 详情 »

查看详情

【译】VMAF 视频质量评估工具概述

原文地址: https://medium.com/netflix-techblog/vmaf-the-journey-continues-44b51ee9ed12 本文是 Netflix 关于自家的 VMAF(Video Multi-method Assessment Fusion) 的介绍,它可以很好的去评估一个视频的质量通过借助人类视觉模型以及机器学习,它目前已经开源,并且集成在诸如 ffmpeg 这些第三方工具上。 by Zhi Li, Christos Bampis, Julie Novak, Anne Aaron, Kyle Swanson, Anush Moorthy and Jan De Cock Netlfix 是如何评估一个视频的质量的? 哪种视频的编码方式更好? Codec A 或者 Codec B? 对于这个剧集,1000 kbps 是否比 HD 分辨率更好,或者 SD(标清) 更好? 当我在从事提升 详情 »

查看详情

QUIC 对视频播放的影响

Google/QUIC, Quick UDP Internet Connections 是一种实验性的网络传输协议,位于OSI模型的传输层。由Google开发,在2013年实现。QUIC使用UDP协议,它在两个端点间创建连线,且支持多路复用连线。 现代 TCP 是在 RFC 793 中定义的,进过数十年的的实验,实践出来。它在 1981 年发布。HTTP Working Group 在2013开始关注 HTTP/2 的工作,他们聚焦到如何优化 HTTP 在 TCP 的使用上。他们尽可能的消除队头阻塞, 提升对连接的利用。HTTP/2 支持了多路复用,从而高效的利用 TCP 连接。但是 队头阻塞的问题并没有完全解决,因为包传输是有序的,于是 QUIC 为了克服这个问题,将 数据流层移至传输层,它在 UDP 之上构建了一个类似 TCP 详情 »