我的问题与此other SO question有关。我正试图通过Capture.captureAudio()
在iOS上录制音频。它输出的音频文件可以在计算机上读取,但不能在iOS(iPhone 4S)和Android上读取。
ffmpeg -i yield:
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应用程序使用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上播放。
虽然乍一看哑剧类型似乎被限制在" amr"
/**
* Gets the available recording MimeTypes
*/
public String [] getAvailableRecordingMimeTypes(){
return new String[]{"audio/amr"};
}
瞥了一眼native code表明在iOS上它记录为" MPEG4AAC" 16kHz的。
结果为什么我得到一个无法在手机上播放的caf文件?
任何帮助表示赞赏!
答案 0 :(得分:2)
caf文件是Core Audio Format个文件。它们只是苹果用于音频的包装器,因为它有一些优点来存储音频" unwrapped"。
caf包装器内的音频仍然使用您指定的格式进行编码。因为它只是一个包装器,它应该快速而容易地解开"它。 This google search for "convert caf to mp4"显示了很多结果。如果您希望以编程方式执行此操作,则适当的Google搜索会产生大量结果。