如何播放 Base64 视频
- 把 Base64 粘贴到 Base64 或 data URI,或者用 打开 .txt 文件 从文本文件载入。页面打开时会载入一段两秒的 H.264 示例。
- 播放器显示第一帧。浏览器读取文件元数据后,会出现 时长 和 尺寸,例如示例视频的
0:02.0和96 × 64 px。 - 扩展名 和 MIME 类型 取决于检测到的容器:
.mp4对应video/mp4,.webm对应video/webm,.mov对应video/quicktime。 - 点击 下载文件 保存视频。
播放使用的是浏览器自带的解码器,而页面的内容安全策略(CSP)会拦截除 Cloudflare 的浏览量统计以外的网络请求,因此私人录像始终留在你的设备上。
容器与编码
视频文件分两层:一层是容器(MP4、WebM、MOV、MKV),工具根据开头的字节识别;另一层是容器里的画面和声音编码,只有浏览器的媒体引擎才会读取。能否播放取决于编码:
| 视频编码 | 常见容器 | Chrome、Edge | Firefox | Safari |
|---|---|---|---|---|
| H.264(AVC) | MP4、MOV | 支持 | 支持 | 支持 |
| VP8、VP9 | WebM | 支持 | 支持 | macOS 上 Safari 16 起、iOS 上 17.4 起支持 WebM |
| AV1 | MP4、WebM | 支持 | 支持 | 仅限支持 AV1 硬件解码的设备 |
| HEVC(H.265) | MP4、MOV | 系统提供解码器时支持 | 有限,取决于平台 | 支持 |
| Theora | Ogg | 不支持 | 不支持 | 不支持 |
如果编码由你控制,MP4 封装的 H.264 是最稳妥的选择。浏览器无法解码文件时,时长 和 尺寸 会显示“不适用”,播放器上方会出现提示“你的浏览器无法播放此 MP4 文件。请下载后用媒体播放器打开。”。下载的文件本身是完好的,VLC 或 ffmpeg 能读取表中的所有编码。
检测结果说明了什么
| 检测结果 | 本页的提示 |
|---|---|
| MP4、MOV、3GP、WebM、MKV、AVI、OGV | 作为视频接受,使用对应的扩展名 |
| 没有画面的 WebM 或 MP4 | 可以播放,尺寸 显示 仅音频 |
| M4A、MP3、WAV | “这看起来是 M4A,而不是视频。”,并提供 下载为 .m4a 等按钮 |
| GIF | “这看起来是 GIF,而不是视频。”;GIF 动图属于图片 |
| 二进制 | “这看起来不像视频”,通常是下载不完整或原始流数据 |
浏览器的 MediaRecorder 只用麦克风录制的 WebM 文件仍然是 WebM,所以会被当作视频接受,并作为音频播放。关于 MP4 家族的细节,请参阅 Base64 转 MP4。
Base64 视频从哪里来
视频生成 API 可能把视频片段放在 JSON 的 Base64 字段里返回,而不是提供下载链接。在浏览器中录制的屏幕和摄像头视频,常常以 Base64 形式提交给服务器。测试套件会把短视频嵌成字符串,有些网页则把静音背景视频内联为 data:video/mp4 URI,这种做法及其代价在 data URI 的性能 中有说明。要生成这样的字符串,请使用 视频转 Base64。
用 ffmpeg 检查编码并转换
想知道某个视频片段用的是什么编码,先解码,再用 ffprobe 查看:
base64 -d clip.b64 > clip.mp4
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height -of csv=p=0 clip.mp4
对于 HEVC 视频,它会输出 hevc,320,240。重新编码为 H.264 视频加 AAC 音频,就能得到所有浏览器都能播放的文件;+faststart 会把索引移到文件开头,这样不必等整个文件加载完就能开始播放:
ffmpeg -i clip.mp4 -c:v libx264 -pix_fmt yuv420p -c:a aac -movflags +faststart clip-h264.mp4
更多命令行用法见 Bash 中的 Base64。
常见问题
怎么播放 Base64 视频?
把 Base64 或 data:video/…;base64, URI 粘贴到上方的输入框,就会出现一个已载入视频的播放器。下载文件 会按检测到的容器格式使用对应的扩展名保存。
为什么有声音却没有画面?
浏览器能读取容器,但不支持其中的视频编码,或者文件里根本没有视频轨道;后一种情况下 尺寸 一行会显示 仅音频。最常见的原因是在不支持 HEVC 的浏览器中打开 HEVC 视频。
为什么 iPhone 拍的视频播放不了?
iPhone 默认以 HEVC(H.265)录制,通常保存为 MOV 文件。Safari 可以播放;Chrome、Edge 和 Firefox 只有在操作系统和硬件提供 HEVC 解码器时才能播放。转成 H.264 后在哪里都能播放。
播放器能处理多大的 Base64 视频?
只受设备内存限制。50 MB 的视频片段大约是 7000 万个 Base64 字符;超过 4 MB 的输入会直接解码而不在文本框中显示,数据非常大时页面会短暂停顿。