2015-04-06 83 views
0

我已經在某種程度上對iPhone(iOS版)和模擬器編碼AAC/M4A音頻文件的問題,使比較應該是相同的AAC音頻文件 - 時間戳?

  1. 單聲道/立體聲和
  2. 軌道持續時間

正確認可外部球員如VLC。

爲了解決各種設備上的問題,我編寫了用於爲各種編碼配置生成測試文件的代碼。編碼後的聲音是一直生成的正弦波。這很好地工作。在下一步中,我將對這些在不同設備和模擬器上生成的測試文件進行二進制比較。令我驚訝的是,.m4a文件永遠不會完全相同(aac文件始終保持一致)。我使用ExtAudioFile...()寫入文件的方法,並使用文件類型標識符kAudioFileM4AType

我懷疑這些文件中包含時間戳,這些文件混淆了我的二進制比較。

任何人都可以確認或反駁,在M4A文件中有一個時間戳,這將始終混淆二進制比較?

+0

此外,當然,我打開如何解決錯誤識別的單聲道/立體聲和/或持續時間的根本問題的建議。 – 2015-04-06 12:50:20

回答

1

M4A是一種容器格式,幾乎肯定會包含一些元數據。正如您所懷疑的,很可能這些元數據中的一部分不同於其他編碼。

如果您的M4A文件包含的字節流與您所擁有的AAC數據相匹配,您可能會更好地編寫某種算法。解決這個問題的一種方法是在Hex編輯器中手動比較兩個文件(M4A和AAC與原始聲音數據相同),並嘗試查找AAC數據開始和/或結束的偏移量,然後比較這些數據。