如何把视频转换为 Base64
- 把视频文件拖到框里,或者用文件选择器选择它。支持 MP4、WebM、MOV 以及你的系统能识别的其他格式。
- 在预览播放器中看一遍,确认是正确的片段。
- 输出为 默认是 Data URI。用于 API 时选择 纯 Base64 或 JSON。
- 短片段用 复制输出;较大的文件用 另存为 .txt。
识别 Base64 中的视频
| 容器 | MIME 类型 | Base64 开头 |
|---|---|---|
| MP4 | video/mp4 | AAAA + 一个字符 + GZ0eXB,例如 AAAAIGZ0eXBpc29t |
| MOV(QuickTime) | video/quicktime | AAAAFGZ0eXBxdCAg(品牌标识 qt) |
| WebM、MKV | video/webm、video/x-matroska | GkXfo |
| AVI | video/x-msvideo | UklGR(RIFF,与 WAV 和 WebP 相同) |
容器告诉你 data URI 该标成什么类型。浏览器能不能播放,则取决于其中的编解码器,比如 H.264、HEVC、VP9 或 AV1。
什么时候适合用 Base64 视频
- 单文件 HTML 页面中的循环小片段,比如一两秒的产品动画或界面演示。请使用
autoplay muted loop playsinline,因为浏览器通常会阻止有声音的自动播放。 - 测试数据,用于上传、转码或播放测试,和测试代码放在一起。
- 接受内联短视频的 API:一些多模态和媒体处理 API 接受 JSON 中以 Base64 形式提供的短片段。它们会限制大小,对于更长的视频,通常也接受指向已存储文件的链接。
其他情况下,正常提供的视频文件更好。浏览器可以按范围请求它,在下载完成之前就开始播放,还能缓存。data URI 则必须完整下载并解码,而且会让包含它的 HTML、CSS 或 JSON 膨胀出视频大小再加三分之一。在已经把文件放在内存中的 Web 应用里,URL.createObjectURL(blob) 不需要任何 Base64 就能给你一个可播放的 URL。
编码前先把片段变小
视频大小主要取决于分辨率、帧率和码率。一个 3 秒、1280×720、69,243 字节的测试片段,缩放到 480 像素宽并去掉音轨后,降到了 17,281 字节:
ffmpeg -i clip.mp4 -vf scale=480:-2 -c:v libx264 -crf 28 -an -movflags +faststart small.mp4
-crf 28 用一些画质换取体积(数值越大越小),-an 去掉音频,scale=480:-2 保持宽高比并让高度为偶数。然后把结果在这里编码。MP4 的具体细节见 MP4 转 Base64;Base64 转视频 可以播放 Base64 字符串。
常见问题
能用 Base64 把视频嵌入 HTML 吗?
能:<video src="data:video/mp4;base64,..." controls></video>。对短片段有效。较长的视频会让页面变得巨大,而且无法流式播放,因为浏览器必须拿到完整的 data URI 才能开始播放。
最长能转换多长的视频?
工具没有固定的上限;大文件会分块编码,并保存为 .txt。超过约 48 MB 的输出无法复制。实际上,在网页中使用超过几 MB 的 data URI 就已经不是好主意了。
应该编码哪种视频格式?
H.264 视频的 MP4 能在所有当前的浏览器中播放。WebM(VP9 或 AV1)通常更小,支持也很广泛。手机拍摄的 MOV 文件可能使用 HEVC,Safari 以外的许多浏览器无法播放。