WebAssembly 的一些有趣应用

WebAssembly(缩写为Wasm)是一种基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为编程语言的可移植编译目标,支持在网络上部署客户端和服务器应用程序。

目前许多编译型语言(C/C++、Golang、Rust……)都支持移植到Wasm,使得这些编译型语言可以在浏览器中运行,从而得到比 JavaScript 更高的效率和性能。另外,一些历史悠久的开源程序也可以通过 Wasm 技术移植运作在浏览器中。

不仅如此,Wasm 沙盒特性(类似浏览器沙盒技术)可以允许第三方代码安全的运行在终端中,现已被 Cloudflare 应用到边缘计算中,推出了 Cloudflare Worker,允许用户在 CDN 节点上执行 Javascript、Golang、Rust 等代码。

ffmpeg.wasm

ffmpeg 是音视频处理的瑞士军刀,可以执行音频和视频多种格式的录影、转换、串流功能。ffmpeg.wasm 完成 ffmpeg 移植到 WebAssembly,从而可以在浏览器中进行音频和视频多种格式的录影、转换、串流。

ffmpeg.wasm 视频转码实例

Github 项目地址 Demo

waifu2x wasm版本

waifu2x 是利用卷积神经网络对动漫风格的图片(也支持照片,但是效果有限)进行无损放大的项目,Wasm版本可以直接在浏览器中运行。

Github 项目地址 Demo UI优化 Demo

vim.wasm

vim 是古老的命令行文本编辑器,Wasm 使其可以在浏览器运行。

Github 项目地址 Demo

Tesseract.js

Tesseract.js 是流行的 Tesseract OCR 引擎的纯 Javascript 版本,同时也支持 Wasm 版本。

Tesseract.js 支持100 多种语言、自动文本方向和脚本检测、用于读取段落、单词和字符边界框的简单界面。

Github 项目地址 Demo

jslinux

在浏览器中运行 Linux 或 Windows 2000 操作系统!

Demo