我的問題是關於這個other SO question。我正嘗試通過Capture.captureAudio()
在iOS中錄製音頻。它輸出的音頻文件可以在計算機上讀取,但在iOS(iPhone 4S)和Android上都不能。爲什麼iOS上的Codename One將音頻錄製爲CAF?
的ffmpeg -i產量:
Input #0, caf, from 'myFile.m4a':
Duration: 00:00:07.04, start: 0.000000, bitrate: 37 kb/s
Stream #0:0: Audio: aac (aac/0x20636161), 16000 Hz, mono, s16, 23 kb/s
如果我記錄通過錄音機應用的iOS文件從我得到的ffmpeg:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Test.m4a':
Metadata:
major_brand : M4A
minor_version : 0
compatible_brands: M4A mp42isom
creation_time : 2017-04-03 19:01:32
date : 2017-04-03T21:01:09+0200
encoder : com.apple.VoiceMemos (iPhone OS 7.1.2)
Duration: 00:00:05.15, start: 0.000000, bitrate: 67 kb/s
Stream #0:0(und): Audio: aac (mp4a/0x6134706D), 44100 Hz, mono, s16, 64 kb/s
Metadata:
creation_time : 2017-04-03 19:01:32
handler_name : Core Media Audio
此文件可以在Android和iOS上播放。
雖然一見鍾情的MIME類型似乎受到抑制,以「AMR」
/**
* Gets the available recording MimeTypes
*/
public String [] getAvailableRecordingMimeTypes(){
return new String[]{"audio/amr"};
}
在native code一目瞭然顯示,在iOS上它記錄爲「MPEG4AAC」 16kHz的。
因此,爲什麼我會得到一個無法在手機上播放的caf文件?
任何幫助表示讚賞!
謝謝史蒂夫!事實上,CAF的質量很高,但它在Android上不受支持。如果您將記錄的mime類型(在ios設備上)更改爲「audio/aac」而不是「audio/amr」,那麼您將獲得可在iOS和Android上播放的mp4文件(請參閱http://stackoverflow.com /一個/6351897分之43234291)。 – HelloWorld
當這段代碼最初被開發出來時,我們努力了很多,以使它在所有操作系統上正常工作。我們最終決定使用應該得到普遍支持的AMR,歷史上AAC對於某些Android設備來說存在問題。如果現在正在記錄CAF而不是AMR,這可能是一種迴歸 –