为什么iOS上的Codename One将audio录制为CAF?

我的问题是关于这个其他SO问题 。 我试图通过Capture.captureAudio()在iOS中录制audio。 它输出一个audio文件,可以在计算机上读取,但在iOS(iPhone 4S)和Android上都不能。

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 

如果我通过Voice Recorder应用程序loggingiOS的文件,我从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上播放。

尽pipe初看起来,mimetypes似乎被限制为“amr”

  /** * Gets the available recording MimeTypes */ public String [] getAvailableRecordingMimeTypes(){ return new String[]{"audio/amr"}; } 

对本地代码的一瞥显示,在iOS上它logging为“MPEG4AAC”16kHz。

因此,为什么我会得到一个无法在手机上播放的caf文件?

任何帮助感激!

caf文件是核心audio格式文件。 他们只是苹果使用它的audio包装,因为它有一些优势,存储audio“解包”。

咖啡包装内的audio仍然使用您指定的格式进行编码。 既然它只是一个包装,它应该是快速和容易的“解开”它。 谷歌search“转换咖啡馆到MP4”显示大量的结果。 如果您希望以编程方式进行操作,则适当的Googlesearch应该会产生大量结果。