【发布时间】:2016-11-20 08:44:52
【问题描述】:
我使用一些具有 VOIP 功能的 Android SDK。
当接收到语音数据时,会触发一些事件。每次它被触发时,它都有一个 byte[] ,这是一个 OPUS 帧。所以这个事件被触发了几次,每次都有新的框架。
我的问题是,如何使用它创建可播放的音频文件? 我尝试创建一个 byte[] ,每次触发事件时,向其附加一个数据,然后将这个数组保存到一个文件中,然后播放它。
它没有工作,我错过了什么?
【问题讨论】:
我使用一些具有 VOIP 功能的 Android SDK。
当接收到语音数据时,会触发一些事件。每次它被触发时,它都有一个 byte[] ,这是一个 OPUS 帧。所以这个事件被触发了几次,每次都有新的框架。
我的问题是,如何使用它创建可播放的音频文件? 我尝试创建一个 byte[] ,每次触发事件时,向其附加一个数据,然后将这个数组保存到一个文件中,然后播放它。
它没有工作,我错过了什么?
【问题讨论】:
Android 可以播放存储在 Matroska/WebM 容器或 Ogg 容器中的 Opus。 Matroska 可以使用libmatroska 库编写。 Ogg 可以使用libogg 库编写。
如果您只是一个接一个地连接数据包,那么这将丢失数据包边界。数据包的长度不同,需要每个数据包的长度来解码。
【讨论】: