WasmVideoPlayer:浏览器里直接播放H265视频

发布时间:2026/7/13 13:17:30

WasmVideoPlayer:浏览器里直接播放H265视频
文章目录WasmVideoPlayer浏览器里直接播放H265视频技术实现线程模型缓冲控制音视频同步编译和使用已知问题WasmVideoPlayer浏览器里直接播放H265视频这个项目在 GitHub 上拿到了 1390 Star。sonysuqin 开源了 WasmVideoPlayer做的事情很明确用 WebAssembly 在浏览器里播放 H265 编码的视频。目前原生支持 H265 播放的浏览器基本没有。H265 解码对性能要求高硬解兼容性差再加上专利费的问题各大浏览器厂商都在转向支持更开放的 AV1 编码。但 AV1 的商用普及还需要时间。现实情况是H265 相比 H264在相同分辨率下码率几乎降了一半。对带宽压力大的网站来说用 H265 能省不少带宽成本。只是浏览器不支持目前 H265 播放主要靠 APP 端的硬件解码。这个项目用 WASM、FFmpeg、WebGL、Web Audio 组合出了一套浏览器端的 H265 播放方案。技术实现整个播放器的核心组件FFmpeg 3.3 负责解封装和解码理论上支持 FFmpeg 的各种内置 codec包括 H264、H265默认支持 MP4、FLV 文件播放和 HTTP-FLV 流播放WebGL 做 YUV 到 RGB 的颜色空间转换和渲染硬件加速性能比 CPU 转换好Web Audio 处理 PCM 音频数据的播放WASM 让 C/C 代码能在浏览器里跑线程模型WASM 对多线程的支持还不够成熟浏览器端的 pthread 还在试验阶段。所以这个项目用了 Web Worker 来实现线程分离。三个线程各管各的主线程负责界面控制、播放控制、下载控制、音视频渲染和同步。解码线程跑在 Decoder Worker 里处理解封装和解码。下载线程单独一个 Downloader Worker按 chunk 下载文件。线程之间用 postMessage 异步通信传视频帧这种大数据时用 Transferable 接口避免拷贝损耗性能。缓冲控制播放器的缓冲控制比较关键。FFmpeg 的同步读数据接口必须保证能返回数据但 WASM 现在没法用多线程同步机制。项目做了两层缓存获取文件元信息之前的数据缓存和解码帧缓存。数据不足时停止解码进入 Buffer 状态数据够了继续播放。这样 FFmpeg 就不会因为读不到数据而报错退出。下载也有速率控制拿到文件码率后以码率的一定倍数下载不会无限制占用带宽和 CPU。音视频同步音频数据直接交给 Web Audio通过 API 获取当前播放的音频时间戳以此为基准同步视频帧。视频帧时间落后就立刻渲染时间早就 delay。delay 用 setTimeout 实现缓冲控制同时也在控制渲染频率避免 setTimeout 调用太多导致内存暴涨。编译和使用环境需要安装 Emscripten 工具链下载 FFmpeg 3.3 分支再 clone 项目代码保证 FFmpeg 和代码目录平级。进入代码目录执行./build_decoder.sh编译。测试用任意 HTTP Server 都行比如http-server -p 8080 .浏览器打开 localhost:8080 就能跑。Chrome、Firefox、Edge 的较新版本都支持360 浏览器、搜狗浏览器等 webkit 内核的也能用。已知问题H265 解码播放的 CPU 占用比较高。如果不及时传递音频数据AudioContext 的 currentTime 不做控制可能导致音视频不同步。这个项目定位是探索验证性质功能实现上还有很多细节可以优化。但它确实验证了一件事通过 WASM FFmpeg 的组合浏览器端播放 H265 是可行的。现上还有很多细节可以优化。但它确实验证了一件事通过 WASM FFmpeg 的组合浏览器端播放 H265 是可行的。

相关新闻

从粉丝项目到技术实践:构建自动化内容管理流水线

从粉丝项目到技术实践:构建自动化内容管理流水线

2026/7/13 13:17:10

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个名为“【TXT|崔然竣】Y2,Lets go!!!(cr.古罗马混凝土)”的项目。从标题和命名方式…

日单量从 500 到 5000:零售系统升级的 4 个信号与迁移路径

日单量从 500 到 5000:零售系统升级的 4 个信号与迁移路径

2026/7/13 9:38:52

一句话结论 零售企业系统升级的时机,不看公司规模,看经营复杂度。日单量从 500 到 5000 的过程中,通常会依次触发:打单瓶颈 → 库存混乱 → 仓库失控 → 供应链和对账崩溃。每个阶段对应不同的系统能力需求。一、四个升级信号 信号…

我错误了2次然后算对了---------然后我现在找到了正确的方法

我错误了2次然后算对了---------然后我现在找到了正确的方法

2026/7/10 20:14:45

我开始的时候观察其中的一个参数,怎么都觉得不对,但是如果改成正确的参数,功能就不正常。所以一直只好先这样,但是今天我把整个系统修复了。现在一切都很清晰。如果你把一个参数修改为正确的时候出现了错误,那么说明还…

【HTML5-语法】

【HTML5-语法】

2026/7/13 13:16:06

HTML5语法■ HTML学习网站■ HTML原理■ HTML编辑器■ HTML 网页结构■ HTML 页面■ HTML标签■ HTML 速查列表■ 基本文档■ 基本标签(Basic Tags)■ 链接(Links)■ 图片(Images)■ 样式/区块(Styles/Sect…

Adblock Plus 规则订阅对比:5个中文过滤列表的覆盖范围与性能影响

Adblock Plus 规则订阅对比:5个中文过滤列表的覆盖范围与性能影响

2026/7/13 13:16:06

中文广告过滤规则订阅深度评测:5大主流列表的实战对比 当网页广告从信息载体演变为干扰源时,广告拦截工具已成为现代网民的基础配置。作为行业标杆的Adblock Plus,其核心战斗力正来源于不断进化的过滤规则订阅系统。面对中文互联网特有的广告…

PIC18LF45K40与DTH-08传感器的上拉电阻配置与优化

PIC18LF45K40与DTH-08传感器的上拉电阻配置与优化

2026/7/13 13:16:06

1. 硬件选型与核心概念解析在嵌入式系统设计中,信号的上拉和下拉配置是确保数字电路可靠工作的基础技术。PIC18LF45K40作为Microchip公司PIC18系列中的低功耗型号,与DTH-08传感器配合使用时,其内置的可编程上拉电阻功能可以显著简化电路设计。…

BLE SMP 协议实战:ESP32 与 nRF Connect SDK 配对流程 6 种模式对比

BLE SMP 协议实战:ESP32 与 nRF Connect SDK 配对流程 6 种模式对比

2026/7/13 13:16:06

BLE SMP 协议实战:ESP32 与 nRF Connect SDK 配对流程 6 种模式对比在物联网设备开发中,蓝牙低功耗(BLE)的安全配对是保障通信安全的关键环节。安全管理协议(SMP)作为 BLE 协议栈的核心组件,负责…

大学生HTML期末大作业——HTML+CSS+JavaScript传统文化

大学生HTML期末大作业——HTML+CSS+JavaScript传统文化

2026/7/13 13:16:06

HTMLCSSJS【传统文化】网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计💥 文章目录一、🏁 网站题目二、🚩 网站描述三、🎌 网站介绍四、🏴 网站效果五、🏳️ 网站代码六、&#x1f3f3…

Happy Island Designer:从零开始的岛屿规划大师成长指南

Happy Island Designer:从零开始的岛屿规划大师成长指南

2026/7/13 13:06:05

Happy Island Designer:从零开始的岛屿规划大师成长指南 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossin…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/13 7:41:16

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/12 0:03:42

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/12 0:03:42

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)在口腔微生物分子机制研究中,SepM 蛋白酶是调控变异链球菌群体感应、致龋菌素合成的核心功能蛋白,体外功能验证、抗体开发均依赖高纯度可溶性 SepM 蛋白。当前原核表达体系针对 SepM 存在三大技…

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

2026/7/13 0:05:25

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…