2

我正在使用 javascript 从 MediaRecorder 捕获音频数据,并对其进行 base64 编码,以便我可以将其发送回 Web 服务器,以便将其保存以供以后播放。

data:audio/webm;codecs=opus;base64,GkXfo59ChoEBQveBA...(要发布的数据太多,但你明白了)

我可以将这些数据放入 HTML5 音频元素的 .src 字段中,然后在 Chrome 浏览器上播放就可以了。但是 Safari 不能处理那种格式的数据,我猜它不支持 opus 编解码器。

对我来说,一种解决方案是弄清楚如何将音频数据写入格式正确的 .webm 容器文件,然后使用 ffmpeg.exe 将其转换为其他一些 Safari 友好格式。

但我不知道 .webm 文件的文件格式 - 我正在寻找如何编写这样的 .webm 文件的提示或指导。

有人有任何建议、库或提示将上述数据写入 .webm 文件吗?我更喜欢 C# .net 答案,但 javascript 也可以,或者任何示例都值得赞赏。

4

1 回答 1

0

好吧,我从聪明的开发者(earnabler)那里得到了一个提示,如果我去掉内容的标题部分:

“数据:音频/webm;编解码器=opus;base64,”

并仅解码 base64 部分:

“GkXfo59ChoEBQveBA ...(要发布的数据太多,但你明白了)”

...返回二进制(C# 中的示例):

byte[] decodedBinaryData;

decodedBinaryData = Convert.FromBase64String(encodedBase64String);

...并将该二进制文件写入具有匹配文件扩展名的文件(本示例中为 .webm),该文件将是其他媒体软件可以理解的该类型的正确格式文件。

瞧,它是!我可以在 MediaPlayer、QuickTime 等中播放文件,并且可以使用 FFMPEG 将其转换为其他类型。

因此,这为我提供了一条以多种方式保存/使用/转换媒体的途径。问题解决了。

于 2020-12-08T12:06:05.313 回答