【问题标题】:How to write a webm (or other) audio/video block of data from MediaRecorder to a properly formatted .webm (or other) container file?如何将 webm(或其他)音频/视频数据块从 MediaRecorder 写入格式正确的 .webm(或其他)容器文件?
【发布时间】:2021-03-18 21:12:16
【问题描述】:

我正在使用 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 也可以,或者任何示例都值得赞赏。

【问题讨论】:

标签: audio data-conversion mediarecorder webm container-file


【解决方案1】:

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

"data:audio/webm;codecs=opus;base64,"

并仅解码 base64 部分:

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

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

byte[] decodedBinaryData;

decodedBinaryData = Convert.FromBase64String(encodedBase64String);

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多