android - 在 Android 上使用 Opus 音频编码
问题描述
我想将语音从 Android 应用程序流式传输到服务器,并且要求使用 Opus 编码。由于某些奇怪的原因,Android 似乎只支持解码,但不支持开箱即用的编码。通过一些研究,我所能找到的只是一些使用官方原生 opus C/C++ 代码的 git repos,并通过 jni 将其添加到 android 项目中。我想知道这是否仍然是最新的情况,或者现在是否有更简单的方法来使用它,因为所有这些 repos 都已有 2 年以上的历史了。任何链接或提示表示赞赏。
解决方案
首先,Opus 库是免费和开源的,因此您可以为 Andriod 编写自己的应用程序,该应用程序将从麦克风捕获音频,使用 Opus 编解码器对其进行编码,然后发送到您的服务器。
但你确定要自己煮吗?
已经存在的解决方案是 WebRTC。Android 上的 Chrome 浏览器完全支持 WebRTC。因此它可以捕获语音,使用 Opus 编解码器对其进行编码,然后发送到您想要的任何对等方 - 到另一个 Web 浏览器(在这种情况下,您不需要任何其他东西,可能除了一些公共 STUN/TURN 服务器),或者发送到您自己的服务器软件,您可以使用本机 WebRTC c++ 库进行烹饪。
现有的现成服务器,免费和商业,为您提供支持,因此您无需自己动手:Red5、Unreal Media Server、Wowza。所以发生的事情是:您将实时音频从 Android 上的 Chrome 浏览器发布到该媒体服务器软件;然后媒体服务器可以将此流发送到一个/多个播放器进行播放,或者发送到记录器进行录制,或者如果需要,甚至发送到转码器进行转码。
推荐阅读
- php - PHP 从使用 ASP 脚本的远程服务器下载文件
- go - 从扩展添加虚拟表时如何提供表规范
- swift - 从 shouldChangeTextIn 更新 UITextView 值返回字符两次
- python - 如何使用多索引过滤器为列分配值?
- javascript - 通常将上下文应用于方法别名
- grouping - 从制表器下载 pdf 时保留 ColumnCalculations 的格式
- python - 启用以记录调试语句
- javascript - 如何在时事通讯表单上实施 Google 的 reCaptcha v3?
- javascript - 添加悬停效果以使用内联样式对 div 做出反应
- nginx - 当proxy_pass通过2个nginx时Websocket 404