Benz Leung

  • 首页

  • 标签

  • 归档

作品:AMR 录音机

发表于 2018-02-14 | 更新于 2018-06-19

AMR 是一种音频文件格式,专用于语音。它一般采用很低的采样率和码率,使得文件非常小。而缺点就是音频质量会比较差,因此不适用于音乐。但若只是用于语音,只要能听清楚对方在说什么即可。微信的语音功能所用的就是AMR格式。

benz-amr-recorder (AMR 录音机)是一个 JavaScript 库,纯前端编码、解码、播放、录音 AMR 音频,无须任何服务器支持。适用于网页版的语音聊天应用、录音机应用等。

  • 项目 Github 页
  • Demo 页

特性:

  • 方便的 API 实现解码、播放、录音、编码 AMR 文件。
  • 支持 url 和 blob (即<input type="file">)方式获取 AMR。
  • 支持将浏览器 <audio> 所支持的音频格式(例如 MP3 或 OGG 音频)转换成 AMR 音频。
  • 编码后的 AMR 文件可下载,无须服务器。

支持浏览器:

  • 桌面浏览器: 除IE之外基本都支持。
  • iOS: 播放需要 iOS 6+,录音需要 iOS 11+。
  • Android: Android 5.0+,Chrome 53+ 或采用此核心的其他浏览器,或者 Firefox 42+。

若有问题,欢迎提交 Issue。

JPG?GIF?PNG?前端如何选择图片格式?

发表于 2017-12-09 | 更新于 2018-06-19

最近准备给团队传授图片格式的知识,于是开了谷歌,欲找些 PPT 素材,却发现似乎没有人好好写过与图片相关的知识,要么只是照搬一些百科的内容,要么写得太多 CRC、Gamma 之类的专(zhuang)业(B)术语,要么花了大量篇幅介绍它们的全称和历史(知道了全称和历史也不能把图片用得更好啊)。于是我果断自己写一篇。

其实,对于 JPG、GIF、PNG 这3种格式的选择,其套路非常简单粗暴——

阅读全文 »

《失控》读书笔记——第一章 人造与天生

发表于 2017-12-08 | 更新于 2018-06-19

注意:本文有剧透。

机器,正在生物化;而生物,正在工程化。

技术所引导的未来,是一种新生物文明。

机械只能用来建造简单的装置,真正复杂的系统只能依赖生物逻辑。只有生物逻辑才能组装出一台能够思想的设备。

人类将自然生物逻辑输入机器的同时,也把技术逻辑带到了生命之中。

机械与生命体之间的重叠在一年年增加。这两者其实一直都是本质相同的。这两者共有的灵魂,凯文(本书作者)命名为“活系统”(vivisystem)。

当人造机器与天生生物最终完全统一的时候,那些人造物将具备学习、适应、自我治愈、进化的能力。这是一种我们还很难想象的力量。

在将生命的力量释放到人造机器的同时,我们也将丧失了对他们的控制。但在凯文看来,这却是个最美妙的结局。

这个最美妙的结局,就是本书的书名——失控:全人类的最终命运和结局。

使用“游戏化”思想带团队——《游戏改变世界》读后感之二

发表于 2017-08-21 | 更新于 2018-06-19

续前文:《为什么程序员加班严重——《游戏改变世界》读后感一则》

每一名Leader都希望自己的团队有强大的战斗力,然而如何激发团队的潜能却是一门令人头疼的学问。

这是我读《游戏改变世界》一书(下文称“此书”)的另一感想,我觉得如果把“游戏化”思想拿来带团队,那么团队的弟兄们一定能开心快活地工作,就像每天都在玩游戏一样。

提醒:本文有剧透。

《游戏改变世界》封面(图片来自豆瓣)

《游戏改变世界》豆瓣链接:戳我

阅读全文 »

为什么程序员加班严重——《游戏改变世界》读后感一则

发表于 2017-08-20 | 更新于 2018-06-19

《游戏改变世界》是一本好书,我还没有读完。不过读了不到一半,我就已经颇有收获了。本文先讲讲程序员加班现象和这本书内容的关系,分享自己的愚见。

而我的收获并不仅仅是程序员加班的现象,我会继续把这本书读完,以后我会再写其他见解。

提醒:本文有剧透。

《游戏改变世界》封面(图片来自豆瓣)

《游戏改变世界》豆瓣链接:戳我

阅读全文 »

【译】 在 React 下发起 AJAX 请求的5种方案

发表于 2017-07-07 | 更新于 2018-06-19

这是我首次翻译别人的文章。最近我在学习 React,发现它不提供 AJAX 功能。后来我发现了这一篇文章,觉得写得不错,简洁实用,于是翻译出来。


  • 原文:5 best libraries for making AJAX calls in React
  • 原作者:Sandeep Panda
  • 译者:Benz(就是我自己咯~)

近两年我一直在使用 React。也许很多初学者(Benz乱入:例如我呀)会有一个疑问:”React 是如何从服务器获取数据的?“或者”在 React 下如何发起 AJAX 请求?“要回答这个问题,也许一些大牛会告诉你,React 只是一个 view 层的JS库,不提供 AJAX 功能,你可以自由地选择你以前最喜欢的方式来实现 AJAX。然而,这个答案对我们的帮助不大——尤其是目前 JavaScript 领域的发展如此迅速(Benz乱入:甚至发展得有点乱糟糟的)。因此,我将在这篇文章试着回答这个基础问题,并列出5个可以在 React 实现 AJAX 的比较简洁的JS库。

阅读全文 »

(规划中) 个人音乐服务器

发表于 2017-05-15 | 更新于 2018-06-19

一个月没更新啦,感觉有点罪过。

之前学习 cocos2d-js 的计划暂停了,因为我觉得 cocos2d-js 算是入门了,暂时先放一边。

最近我开始学习 node.js 和 react+redux,感觉再不学习我就得落后了,至少像 cocos2d-js 一样先入门吧。

而学习一项技术的最好方式,就是动手做个东西出来。于是我就想出了《个人音乐服务器》计划。

个人音乐服务器

平日你喜欢用什么app听歌?网易云音乐?QQ音乐?虾米?百度音乐?

(不喜欢听音乐的,这文章不适合你看……)

有没有发现你收藏的歌单,有时候会有些歌曲因为版权问题而变成灰色,不给播放?

以前我一直使用百度音乐的服务,收藏列表里有1200+首歌曲。后来百度音乐的市场份额渐渐没落,我的收藏列表隔三差五就会有歌曲被标记为下架。好烦躁的。

于是我用百度音乐电脑版批量地把收藏列表的mp3文件下载了下来(当时是可以批量下载320kbps质量的)。

现在我听歌都回归原始时代,直接离线播放mp3,电脑使用 Foobar2000,手机则使用自带的 itunes 导入mp3。不仅没有被下架的风险,而且还能免费地欣赏320k甚至无损的质量。

遇到喜欢的音乐,就想方设法寻找320k的mp3文件(找人借个QQ绿钻、网易会员之类的,或者用谷歌百度直接找D版),也下载下来。喜欢的歌曲还是收藏到自己的硬盘(以及网盘)最靠谱了。

这时候问题来了,每次找歌、下载mp3的过程还好,但是下载完成后还要手动导入到手机、平板等终端,这一步骤感觉略微麻烦。

有没有办法解决这个问题呢?

这就是《个人音乐服务器》计划。

我打算使用 node.js 写一个服务器,让自己电脑的音乐文件夹变成一个类似百度网易QQ虾米的服务,用浏览器直接访问自己电脑的ip地址即可收听自己的珍藏。

然后用 react 开发一个h5播放器,配合这个服务器,实现在线听音乐。

据说 react 可以封装成app,然后可以离线缓存音乐,当然这是后话了。

这个计划的最终目的,并不是让我听歌方便,而是学习 node.js 和 react。

希望我的计划可以顺利。

8位风格噪波生成器

发表于 2017-03-27 | 更新于 2018-06-19

基于 Web Audio API,我做了一个js库,用来模拟任天堂红白机或者 Game Boy 的噪波音轨。

  • 代码:https://github.com/BenzLeung/8bitNoise.js
  • 一个Demo:https://benzleung.github.io/8bitNoise.js/demo.html

任天堂红白机的声音模块包含5个基本音轨:2个方形波、1个三角波、1个噪波、1个任意波音轨。Game Boy 和 Game Boy Color 有4个音轨,比红白机少了1个任意波音轨。

其中方形波和三角波可以用 Web Audio API 的 Oscillator (振荡器)模拟,而噪波需要另想它法。

一直想用纯粹的 Web Audio API 演奏红白机和 Game Boy 的经典背景音乐,但是在噪波音轨上遇到了困难。

搜遍了github也没有人用 Web Audio API 成功模拟出这种8位风格的噪波的,多数人都只使用白噪声、粉噪声、褐噪声来做噪波。然而8位游戏机所用的并不是普通的噪声。

于是我查了大量英文资料,并用模拟器录一段噪波做研究,发现要模拟8位噪波还挺简单的。

水到渠成,三下五除二,现在写好了。

接下来我要弄一些乐谱来演奏咯~

Web Audio API 小教程(5): 进阶篇(更多API)

发表于 2017-03-15 | 更新于 2018-06-19

(续上节:Web Audio API 小教程(4): 一些声音常识)

  • (0): 序言与目录
  • (1): 它能做什么?
  • (2): 入门篇
  • (3): 初级使用篇
  • (4): 一些声音常识
  • (5): 进阶篇

【Gitbook 版本】

这一节主要列出一些 API ,这些 API 或者是我觉得比较好玩的,或者是我觉得在做音乐播放器或者游戏时有很大可能用得着的。

Web Audio API 中每个 API 可能有很多专业的高级属性和方法,有些(我认为)比较难用到的这里就省略了。

这里列出的 API 都有我自制的 Demo,纯手工制作,如有雷同,纯属巧合。

阅读全文 »

Web Audio API 小教程(4): 一些声音常识

发表于 2017-03-15 | 更新于 2018-06-19

(续上节:Web Audio API 小教程(3): 初级使用篇)

  • (0): 序言与目录
  • (1): 它能做什么?
  • (2): 入门篇
  • (3): 初级使用篇
  • (4): 一些声音常识
  • (5): 进阶篇

【Gitbook 版本】

在学习《进阶篇》之前,有必要先科普一些声音常识。

音乐理论常识

阅读全文 »
12
Benz Leung

Benz Leung

20 日志
10 标签
© 2018 Benz Leung
由 Hexo 强力驱动 v3.7.1
|
主题 — NexT.Pisces v6.3.0
0%