如何播放 Base64 音频
- 把 Base64 或
data:audio/…;base64,URI 粘贴到 Base64 或 data URI。长字符串可以用 打开 .txt 文件 加载。页面打开时会加载一段只有两个音符的 WAV 示例。 - 播放器出现在文件信息下方。浏览器读取文件头后,时长 会显示长度,例如
0:03.0。 - 文件名、扩展名 和 MIME 类型 会根据检测到的格式自动填写,必要时可以修改。
- 点击 下载文件 保存音频,或点击 复制为 data URI 得到可用于
<audio src>的字符串。
声音在你的浏览器内解码和播放。页面的内容安全策略会阻止除 Cloudflare 的浏览量统计以外的所有网络请求,所以录音无法从这里被发送到任何地方。
浏览器能播放哪些格式
播放器就是浏览器自带的 <audio> 元素,所以能否播放取决于浏览器内置的解码器。当前版本可以处理大多数格式:
| 格式 | Base64 开头 | Chrome、Edge、Firefox | Safari |
|---|---|---|---|
| MP3 | SUQz(带 ID3 标签)、//s、//M | 是 | 是 |
| PCM 采样的 WAV | UklGR | 是 | 是 |
| M4A 中的 AAC | AAAAHGZ0eXBNNEEg 等 | 是 | 是 |
| FLAC | ZkxhQw | 是 | 是 |
| Ogg Vorbis | T2dnUw | 是 | Safari 18.4 起 |
| Ogg 或 WebM 中的 Opus | T2dnUw、GkXfo | 是 | 部分支持,取决于版本和容器 |
| AMR(老式手机录音) | IyFBTVIK | 否 | 否 |
| ADPCM 或 GSM 的 WAV | UklGR | 通常不支持 | 通常不支持 |
WAV 是一个带有编解码器字段的容器,所以两个 .wav 文件的表现可能不同。例如 Chrome 也能播放 µ-law 和 A-law 的电话录音 WAV,但不能播放 ADPCM。浏览器无法解码文件时,时长 显示为“不适用”,播放器上方会出现提示:“你的浏览器无法播放此 AMR 文件。请下载后用媒体播放器打开。”VLC 和 ffmpeg 可以处理上面所有格式。
装在视频容器里的音频
音频不一定以音频格式送达。在 Chrome 中用 MediaRecorder 录制的浏览器录音默认是装着 Opus 的 WebM,有些服务则把 AAC 装进不带 M4A 品牌标识的 MP4 文件。这时工具会提示“这看起来是 WebM,而不是音频。”或“这看起来是 MP4,而不是音频。”,并提供对应扩展名的下载按钮,播放器照样可以使用:尺寸一行会显示 仅音频。保存为 .webm 或 .mp4 是正确的,大多数音频播放器也能打开这些文件。
如果工具只检测出“二进制”,但你知道编解码器,可以在 MIME 类型 中填入对应类型,例如 audio/ogg。预览会按该类型重新生成音频播放器,用来快速验证你的猜测。
没有文件头的原始音频
有些语音合成和语音 API 返回的是原始采样,通常是 16 或 24 kHz 的 16 位 PCM,外面没有 WAV 文件头。这些字节没有签名,所以工具会提示“这看起来不像音频(检测到:二进制)”,也无法播放。解决办法是加上一个采样率正确的文件头,采样率可以在 API 文档中查到;Base64 转 WAV 演示了如何用几行 Python 做到这一点。
Base64 音频从哪里来
文本转语音 API 会在 JSON 中以 Base64 字段返回合成的语音。聊天和即时通讯的导出文件也这样保存语音消息。Web 应用会把短音效作为 data:audio/… URI 放在代码或 CSS 中,浏览器录制的音频也常常以 Base64 的形式放在 JSON 请求里发送到服务器。反方向把音频文件转成字符串,请使用 音频转 Base64。
在命令行中查看编解码器
当文件无法播放时,ffprobe 可以告诉你里面是什么编解码器:
base64 -d clip.b64 > clip.bin
ffprobe -v error -show_entries stream=codec_name,sample_rate,channels -of csv=p=0 clip.bin
对于电话录音,它会输出类似 adpcm_ima_wav,8000,1 的结果,这就解释了浏览器为什么放弃播放。把它转换为普通 PCM 后就能在任何地方播放:ffmpeg -i clip.bin -c:a pcm_s16le clip.wav。更多 shell 用法见 Bash 中的 Base64,格式细节见 Base64 转 MP3。
常见问题
怎么播放 Base64 音频字符串?
把它粘贴到上方的输入框,在出现的播放器中点击播放即可。纯 Base64 和 data:audio/…;base64, URI 都可以;工具会根据字节判断格式。
为什么我的 Base64 音频播放不了?
要么是浏览器没有其中编解码器的解码器(例如 AMR,或使用 ADPCM、GSM 的 WAV 文件),要么数据是没有文件头的原始采样。播放器下方的提示会告诉你属于哪种情况;参见下文的表格和关于原始音频的部分。
Base64 音频应该用什么 MIME 类型?
取决于格式:MP3 用 audio/mpeg,WAV 用 audio/wav,Ogg Vorbis 和 Opus 用 audio/ogg,M4A 用 audio/mp4,FLAC 用 audio/flac。解码后,MIME 类型 字段会显示与检测到的格式相符的类型。
怎么知道 Base64 音频的时长?
在这里解码:浏览器读取文件元数据后,时长 一行就会显示分钟和秒数。在代码中,可以先解码成文件,再对它运行 ffprobe -show_entries format=duration。