Audio 如果缺少一段,如何播放m4a/aac音频文件?

Audio 如果缺少一段,如何播放m4a/aac音频文件?,audio,audio-streaming,aac,mpeg-4,Audio,Audio Streaming,Aac,Mpeg 4,我们有一个m4a音频文件,它是AAC编码音频的容器(容器流是mpeg-4,音频流是AAC) 我们在两个系统之间传输这个文件(只是在我们的大小限制下随机破坏它,并传输这些字节) 如果一首曲子从未被发送,那么我如何重新组合这些曲子,使其中至少有一部分可以播放 到目前为止,我发现如果我分解文件并发送它,如果我有所有的片段(当然),我可以重新构建它,但是如果我遗漏了一个片段,没有音频工具可以识别它或播放它 正确的方法是什么?如果我需要所有的片段,m4a是一种怎样的流式格式 编辑:为了澄清这一点,我们正在

我们有一个m4a音频文件,它是AAC编码音频的容器(容器流是mpeg-4,音频流是AAC)

我们在两个系统之间传输这个文件(只是在我们的大小限制下随机破坏它,并传输这些字节)

如果一首曲子从未被发送,那么我如何重新组合这些曲子,使其中至少有一部分可以播放

到目前为止,我发现如果我分解文件并发送它,如果我有所有的片段(当然),我可以重新构建它,但是如果我遗漏了一个片段,没有音频工具可以识别它或播放它

正确的方法是什么?如果我需要所有的片段,m4a是一种怎样的流式格式


编辑:为了澄清这一点,我们正在有限的物联网设备上录制音频,并将录制的音频发送到云,以便以后播放。我们的最大上传大小为128kb。我们可以简单地将原始音频最初保存到许多小的m4a文件中,然后上传这些文件,但每个文件中的所有元数据是否都存在一些浪费?就像我们想要30秒的音频,但将其保存到10个3s m4a文件中,而不是我们拆分的一个30s m4a文件?

我会将您的AAC流从MPEG-4(m4a)容器中提取出来,并将您的AAC放入ADTS(音频数据传输流)。ADT由小帧组成,每个帧都有一个标头,后跟AAC音频数据(类似于MP3流)。
ADT是自同步的,专为数据包丢失而设计,例如空中传输

你在使用UDP吗?如果您使用TCP,为什么会有缺失的部分?实际上使用mqtt,但这并不相关。Internet可能会关闭,重试策略可能会失败。LTE连接的设备可以移动,等等。无论如何,这件东西可能会丢失,或者至少我想解释一下。我也面临着同样的问题。有线索吗?好的,我不确定我们能在客户端做到这一点。我们有局限性。但我可以调查。我最初关于用缺失的片段重建m4a的问题的答案也是:“这是不可能的,使用不同的编码/容器格式或将每个块保存为完整的m4a文件”?将AAC/m4a转换为ADT-您不必重新编码。@Fraggle您不在客户端执行此操作,而是在服务器端执行此操作。如果没有像ADT这样的东西,你就不能任意重组流。从mp4/m4a中丢失随机字节是很棘手的。您的文件可以是(样本表后接样本)或(样本后接样本表)。如果您从示例表中丢失了任何字节,那么重构非常困难,并且没有冗余。丢失已知数量的样本字节可能是可恢复的。我会尝试插入零。如果你的文件是被截断的,你可以播放一个被截断的文件——大多数玩家都会这样做。