我正在尝试使用 ExtractorSampleSource 来提取不同的音频文件,有些是 .AAC,有些是 .M4A,有些是 .MP3。有没有办法在不解析 url 字符串的情况下动态确定哪个提取器(AdtsExtractor、Mp4Extractor、Mp3Extractor)?我不想解析字符串,因为有一些我无法控制的文本,并且不能保证 '.aac' 不会出现在文本中。
问问题
199 次
1 回答
1
如果不解码整个文件,您永远无法确定。但我们可以变得非常自信。例如,如果您在文件的开头找到一个有效的框,则 mp4 将被分解为“框”,它可能是一个 mp4。因此,我们可以检查字节 4-7(0-3 是原子大小)。如果它们是已知的根原子类型(ftyp,mdat,最有可能,但 pdin,free 和 skip 是可能的),我们可能有一个 mp4。ADTS 和 MP3 都具有相同的同步字,因此您需要解析整个标头并检查“任何标头看起来更“正常”是您可能的格式。(ADTS http://wiki.multimedia.cx/index.php?title=ADTS ) (MP3 http://www.mp3-tech.org/programmer/frame_header.html ) 但请注意这些类型可能有一个 ID3 标签开始,所以你需要跳过它。
于 2015-07-30T17:45:00.890 回答