使用 AWS Lambda 将 Ogg Opus 流式传输为 MKV 和 CAF?

Streaming Ogg Opus as MKV and CAF with AWS Lambda?

我们愿意支持在尽可能多的手机上提供 Ogg Opus。

根据 Wikipedia 和我们的实验,我们发现:

Android documentation 指出 .ogg 和 .mkv 从 5.0+ 开始受支持,但实验证明并非如此。

我们想使用 AWS S3 以某种基本格式(如 .mkv)存储音频,这些格式将提供给 Android。对于来自 iOS 的请求,我们希望将它们重定向到 AWS Lambda 函数,该函数将采用基本格式并将音频流重新打包为 .caf 容器格式。它不需要任何转码,因为两种情况下的编解码器 (Ogg Opus) 相同。

关于如何实施 AWS Lambda 有什么建议吗?我们更愿意使用 Python,但愿意使用其他支持的语言。

更新:

ffmpeg -i foo.mp3 foo.wav
opusenc --bitrate 16 --hard-cbr foo.wav foo.opus
ffmpeg -i foo.opus -acodec copy -f webm foo.webm
ffmpeg -i foo.webm -acodec copy -f caf foo.caf

所以问题是:如何设置 Lambda 来 returns 存储在 S3 中的 .webm 文件或通过 lambda 层进行转换?返回的格式应该基于 http headers(即 ACCEPT)还是文件扩展名?

我最终使用 mobile-ffmpeg-full 并将容器从 webm 转换为 caf。

    // If an WebM, use FFmpeg to convert container to CAF
    let error = MobileFFmpeg.execute("-i \"\(fileURL.path)\" -acodec copy \"\(cafFileURL.path)\"")