查看详情

Web 播放 H.265视频

本文主要从H.265 编码格式出发,介绍 H265 使用情况,以及对比 H.264的优势,随后分析如何在前端完成 H265 视频格式的播放。 H.265, HEVC 是当前非常火的视频压缩方式,相对于大家熟知的 H.264 ,平均可以带来接近于 50% 的宽度节省。这对于我们做视频的开发者而言,无疑我们可以在同等流量下拿到更多的 Buffer,无论是直播还是视频播放都是非常有收益的事情。 HEVC (H.265) Vs. AVC (H.264) H.265/HEVC的编码架构大致上和H.264/AVC的架构相似, 主要也包含,帧内预测(intra prediction)、帧间预测(inter prediction)、转换(transform)、量化(quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块。 详情 »

查看详情

Git 实用小命令收集

平时大家都习惯使用 Git 但是有的时候我们相对而言需要使用比较复杂一点的命令,如果大家记不住,可以收藏下,毕竟也不是算使用频率很高的命令。 修改 commit 我们经常会在提交的时候拼写错误或者填入一些错误的信息,我们可以使用: git commit --amend 如果你想修改已经提交的过的 commit 信息的话,你需要修改后: git commit --amend // ... edit you message git push --force example-branch 合并 commit 有的时候我们会经常性的提交,但是等到项目开发差不多得时候在发现 commit 信息很杂乱。你可以使用下面信息将所有的 message 合并 在一起: git reset --soft "HEAD~n" # (~n means ~1, ~2,...) git commit --amend 快速解决冲突 我们在 merge 的时候,有的时候我们如果可以很明确使用意向的话, 详情 »

查看详情

React-360 二次开发的一些心得

react-360 二次开发的一些心得 前面花了一些时间介绍 《React-360 源码阅读 - 一张图带你理解 React-360 结构》,有兴趣可以阅读下。但是 React-360 相对我们而言,目前也还不是足够稳定,以及有的需求点他们也并未实现,因此很有可能我们需要进行二次开发; 因此我们首先需要去他们 Github 上 fork 一份, https://facebook.github.io/react-360/ 我们 clone 到本地的时候,可以通过相对目录来实现我们项目对二次开发的 React-360 的引入了。 然后我们在本地项目里通过软连接来实现 node_module 的文件替换: cd node_modules && rm -rf react-360-web # 建立 react-360-web, 目录根据实际情况传入 ln -s ../../react-360/React360 react-360-web 初次之外,我们需要在 rn-cli.config. 详情 »

查看详情

H5 互动营销

提到 H5 ,可能大家最开始是从朋友圈的一些网页看到,随着 唤端和分享 SDK 的成熟,现在大促或者其他 Event 都有着非常成熟的结构思路,本文主要分享 H5 在我们平常的活动中扮演的角色以及如何进行联动。 本周周五分享了过去一年关于《H5 互动营销》的一些总结。下文是一个比较缩略的内容纪要; 不知道大家对下面,视频通话,红包雨以及集卡等活动有印象,其实在这背后,都借助了 H5 的力量,提升了观众的关注度,给活动带来了非常可贵的流量。 整个活动中,我们其实需要关注三个点, 链路分析 我们需要在坑位埋入我们的 H5 页面,然后用户触发分享到社交媒体,随后产生自我裂变或者唤端回流到我们的 APP 活动页; 常见的坑位有下面几种: PopLayer, 比如常见的红包挂角,弹出浮层等; 二楼,用户下滑列表后产生的空白位,常见的比如淘宝二楼: Tab 位,固定在某个 Tab 下的 Webview 页面 运营配置的 bannar 位也比较常见; 详尽的来看我们的活动链路就是: 其中常见用户激励方式有: 详情 »

查看详情

Nginx 升级 HTTP / 2 指引

引言 HTTP/2 目前已经逐渐推广开来,很多站点都开始迁移至 HTTP/2 ,比如 https://v.qq.com/ 或者 https://www.google.com.hk/ 都启用了 HTTP/2; 我们可以先看下浏览器的支持情况: HTTP/2 相对 HTTP1 带来了诸多特性; 多路复用 (Multiplexing) 头部压缩 服务端推送 HTTP/2 采用二进制格式而非文本格式 这些好处无疑对提升 Web 性能有很大的帮助,不过还是建议详细阅读 HTTP/2:新的机遇与挑战 了解这背后究竟发生了什么;本文不详细讨论 HTTP/2 的具体特性和实现,更多提供升级实践。 升级 Nginx 机器环境,亚马逊的 EC2 和 ubuntu 系统; 确保你的 详情 »

查看详情

React-360 源码阅读【6】- Video 分析

前面我先看了 React-360 源码阅读【5】- 核心 Compositor 里的内容,其中里面涉及了 video 作为背景的内容,今天分析一下 video 目录里面的内容;实际上我们如果要设置全景视频,可以直接通过调用; // Creating a Video Player const player = r360.compositor.createVideoPlayer('myplayer'); // Set the video to be played, and its format player.setSource('path/to/video.mp4', '2D'); 当然,这里我们主要分析 video 目录下的文件都做了什么事情。 getSupportedFormats.js const FORMATS = { ogg: 'video/ogg; codecs="theora, 详情 »

查看详情

React-360 源码阅读【5】

今天我们看下 compositor。顾名思义,compositor 应该是你第一个接触到的 访问属性,我们不妨回顾下官方代码 Client 里面的内容: function init(bundle, parent, options = {}) { const r360 = new ReactInstance(bundle, parent, { // Add custom options here fullScreen: true, ...options, }); // Render your app content to the default cylinder surface r360.renderToSurface( r360.createRoot('hello_360', { /* initial props */ }), r360.getDefaultSurface() ); // Load the initial environment r360.compositor.setBackground(r360.getAssetURL('360_ 详情 »

查看详情

React-360 源码阅读【4】- 初试 React-360-Web

react-360-web 顾名思义,就是在 web 端 运行的 react-360 的 SDK. 就像文档里面描述的; react-360-web 是 React 360 的环境运行时,它可以完成应用在 Web 端的渲染;它通过 Canvas 以及 WebVR API 来实现在 头显设备和浏览器的运行。 接下来直接看 React360.js // 用于定位 react vr 打包后的 bundle 地址 import bundleFromLocation from './js/bundleFromLocation'; import createRootView from './js/createRootView'; // 用于坐标的变换 import Location from './js/Compositor/Location'; // 一些常用的数学类库封装 import 详情 »

查看详情

React 项目迁移 Webpack Babel7

不就前写了一篇 webpack 4 升级迁移 这里简单说下 React 项目的一些配置; 首先我们新建项目 react-web ,然后进入项目初始化 package.json ; cd react-web && npm init 接下来我们安装 webpack ,这里需要注意一点,是命令行已经单独提取出来了,我们不仅需要安装 webpack 还需要安装 webpack-cli 。 npm i webpack webpack-cli --save-dev 接下来我们开始安装和 react 相关的依赖包; npm i @babel/core babel-loader @babel/preset-env @babel/preset-react --save-dev 接下来我们初始化 babel 的配置文件。 touch .babelrc 然后把下面内容粘贴进去; { "presets": ["@babel/preset-env& 详情 »

解决 Nginx 413 Request Entity Too Large

最近做 Node 上传服务,NGINX 代理,因此本地测试没问题,但是发到线上 代理抛出异常; 其实这个也很简单,重新配置下 Nginx 的上传限制: server { ... listen 80; server_name localhost; client_max_body_size 20M; ... } 详情 »