我无法理解这句话“要使用解析器,您将数据从流式音频文件传递到解析器。当解析器具有完整的音频数据包或完整属性时,调用回调函数。然后你的回调处理解析后的数据 - 比如播放或写入磁盘。“我不知道什么是“完整包”和“完整属性”。我需要你的帮助,谢谢。
答案 0 :(得分:5)
音频文件的数据逐渐增加。您将数据提供给解析器。一旦“足够”数据存在,您将通过用户提供的回调返回数据。
类比:您希望逐行读取文本文件,并在阅读时提供解析器数据字节。一行中有多少字节?它取决于许多因素(例如,文本文件的内容是什么?它的编码是什么?有什么方法可以预测行长度?)。在这种情况下,当有足够的数据返回下一行时,会通知您。
因此,音频文件流API是一种能够处理许多音频文件格式的抽象。某些格式以不同大小的字节计数存储其样本数据(或其他数据/属性)。 PCM格式(例如)通常是连续的,由文件头部指定的宽度交错值 - 但压缩格式往往具有较大的数据包大小。此外,一些属性/数据包是可变长度的,因此您无法合理地知道何时根据您输入的数据量向转换器询问数据 - 解析,解码和转换是API的工作,我向您保证实施如果您需要基于二进制输入进行解码和拉取,所有这些文件格式的解析器/解码器/转换器将花费很长时间。
所以你在接收/阅读时推送数据,并在有“可用”金额时推送给你。