ffmpeg.wasm 合并 TS 视频教程:浏览器端视频处理实践

简介: 一种基于ffmpeg.wasm的浏览器端TS视频合并方案,通过将FFmpeg编译为WebAssembly,实现了在浏览器本地直接处理TS文件的功能。文章详细阐述了实现思路:加载wasm核心、上传TS文件、生成合并列表、执行FFmpeg命令并导出MP4。

前言

在做视频处理相关工具时,经常会遇到一个很常见的需求:

把一堆 .ts 分片视频合并成一个 MP4 文件。

这种情况在很多场景都会出现,例如:

  • HLS 视频流下载
  • 课程平台视频缓存
  • 直播流录制
  • M3U8 视频下载

通常你会得到一堆文件:

0001.ts
0002.ts
0003.ts
...

如果你用过视频处理工具,大概率知道这件事可以用 FFmpeg 一条命令完成。但对于大多数用户来说,命令行始终是个门槛。

于是我尝试用 ffmpeg.wasm 做了一个浏览器端 TS 合并工具,让整个流程变成:

拖入 TS 文件 → 点击合并 → 下载 MP4

不需要安装软件,也不需要上传视频到服务器。


一、为什么 TS 文件经常需要合并

TS(Transport Stream)是 MPEG‑TS 格式,常见于 HTTP Live Streaming(HLS) 视频流。

HLS 的工作方式是:

  1. 视频被切成很多 .ts 小片段
  2. .m3u8 文件记录播放顺序
  3. 播放器按顺序加载这些 TS

例如:

index.m3u8
segment0001.ts
segment0002.ts
segment0003.ts

如果你通过工具下载视频,往往就只会得到这些 .ts 文件。这时候最常见的需求就是:

把这些 TS 文件重新拼成一个完整视频。


二、传统解决方案的问题

传统做法一般有三种。

1 使用 FFmpeg 命令

最标准的方法是:

ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

但问题是:

  • 要安装 FFmpeg
  • 要写文件列表
  • 要使用命令行

对于非技术用户来说并不友好。


2 使用桌面软件

例如:

  • 格式工厂
  • 剪映
  • Premiere

但这些工具存在几个问题:

  • 安装体积大
  • 打开速度慢
  • 操作复杂

3 使用在线网站

很多在线工具要求:

  • 上传视频到服务器

但 TS 文件往往:

  • 几百 MB
  • 几 GB

上传速度慢,而且很多人也不希望视频离开本地设备。


三、ffmpeg.wasm:让浏览器运行 FFmpeg

为了解决这个问题,我选择了 ffmpeg.wasm。简单来说,它做了一件很有意思的事情:

把 FFmpeg 编译成 WebAssembly。

也就是说:

浏览器可以直接运行 FFmpeg

整个流程变成:

浏览器
   ↓
WebAssembly
   ↓
FFmpeg
   ↓
本地视频处理

优点非常明显:

  • 不需要安装软件
  • 不需要上传视频
  • 数据完全在本地处理
  • 跨平台(Windows / Mac / Linux / 手机)

四、实现一个 TS 在线合并工具的思路

我在实现这个工具时,整体流程大致是这样的。

第一步:加载 FFmpeg wasm

浏览器启动时加载 FFmpeg wasm 核心。

示例代码:

import {
    createFFmpeg } from "@ffmpeg/ffmpeg"

const ffmpeg = createFFmpeg({
   
  log: true
})

await ffmpeg.load()

第一次加载会稍慢,因为需要下载 wasm 文件。

第二步:上传 TS 文件

用户可以:

  • 拖拽文件
  • 或选择多个 TS 文件

示例:

for (const file of files) {
   
  ffmpeg.FS("writeFile", file.name, await fetchFile(file))
}

这些文件会被写入 FFmpeg 的虚拟文件系统

ts-merge

第三步:生成 concat 列表

FFmpeg 合并 TS 的标准方法是使用 concat demuxer

例如:

file '0001.ts'
file '0002.ts'
file '0003.ts'

浏览器中动态生成:

let list = files
  .map(f => `file '${
     f.name}'`)
  .join("\n")

ffmpeg.FS("writeFile", "list.txt", list)

第四步:执行合并命令

核心命令:

ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

在 wasm 中运行:

await ffmpeg.run(
  "-f","concat",
  "-safe","0",
  "-i","list.txt",
  "-c","copy",
  "output.mp4"
)

这里的关键点是:

-c copy

表示:

不重新编码,只做封装转换

因此速度非常快。

process-ts

第五步:导出 MP4 文件

最后从虚拟文件系统读取结果:

const data = ffmpeg.FS("readFile", "output.mp4")

然后触发浏览器下载。

process-finish

五、最终实现效果

整个用户体验变成:

1️⃣ 打开网页
2️⃣ 拖入 TS 文件
3️⃣ 点击合并
4️⃣ 下载 MP4

整个过程:

  • 不上传视频
  • 不安装软件
  • 不需要命令行

浏览器直接完成视频处理。

如果你想体验类似的工具,可以参考这个在线 TS 合并工具:

https://ezwebtools.net/ts-merge

它的交互流程和设计思路与我实现的版本比较接近。

六、浏览器端视频处理的优势

使用 ffmpeg.wasm 做视频工具,其实有几个非常明显的优势。

1 隐私安全

视频始终在本地处理:

  • 不上传服务器
  • 不经过第三方存储

2 几乎零运维成本

服务器只需要:

  • 静态文件
  • CDN

不需要:

  • GPU
  • 编码服务器
  • 视频存储

3 跨平台

只要有浏览器:

  • Windows
  • macOS
  • Linux
  • Android
  • iOS

都可以使用。

七、开发过程中的一些坑

在实现这个工具时,也遇到了一些实际问题。

1 浏览器内存限制

TS 文件如果:

  • 几 GB

浏览器可能会出现内存压力。


2 wasm 首次加载较慢

首次加载 ffmpeg.wasm:

  • 需要下载十几 MB

可以通过:

  • CDN
  • 缓存

优化体验。

八、总结

以前做视频处理:

需要安装软件、写命令、配置环境。

现在通过 ffmpeg.wasm,浏览器本身就可以成为一个轻量级的视频处理平台。

像 TS 合并这种常见需求,其实只需要:

  • 文件上传
  • concat 列表
  • FFmpeg 执行

三步就能完成。

而用户体验也从:

复杂命令行操作

变成:

拖文件 → 点击 → 下载

这也是 WebAssembly 在前端工具领域一个非常典型的应用场景。

相关文章
|
5天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
8天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
9583 77
|
6天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
4994 13
|
7天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
5100 12
|
9天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
5380 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
4天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
2501 6
|
2天前
|
人工智能 JavaScript 测试技术
保姆级教程:OpenClaw阿里云及本地部署+Claude Code集成,打造全能 AI 编程助手
在AI编程工具百花齐放的2026年,Anthropic推出的Claude Code凭借72.5%的SWE-bench测试高分、25倍于GitHub Copilot的上下文窗口,成为开发者追捧的智能编程助手。但单一工具仍有局限——Claude Code擅长代码生成与审查,却缺乏灵活的部署与自动化执行能力;而OpenClaw(前身为Clawdbot)作为开源AI代理框架,能完美弥补这一短板,通过云端与本地双部署,实现“代码开发-测试-部署”全流程自动化。
1304 13
|
4天前
|
人工智能 JavaScript API
阿里云及本地 Windows 部署(OpenClaw+Ollama)保姆级教程及技能扩展与问题排查
OpenClaw(原Clawdbot)作为2026年主流的开源AI智能体工具,具备系统级操作权限,能将自然语言指令转化为文件操作、程序控制等实际行为。搭配轻量级本地大模型管理工具Ollama,可实现本地推理、数据私有化存储的全闭环;而阿里云提供的云端部署方案,则能满足7×24小时稳定运行需求。本文将详细拆解2026年阿里云与本地(Windows 11系统)部署OpenClaw的完整流程,包含Ollama模型定制、技能扩展及常见问题排查,所有代码命令可直接复制执行,零基础用户也能快速上手。
1696 3

热门文章

最新文章