我的應用程序具有錄製音頻的按鈕(另一個可在錄製結束時播放)。我將錄製的音頻文件發送到服務器上。在Android上,文件記錄爲.amr(mime type audio/amr)並可以播放。是否有可能在iOS中使用Codename One錄製音頻?
在iOS上,該文件既不能在設備(iPhone 4或4S)上播放,也不能在計算機上播放。 ffmpeg -i
報告
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2fac120] moov atom not found
9gMjOnnmsj9JJZR3.m4a: Invalid data found when processing input
請注意,VLC也不能玩。
我給m4a擴展,因爲錄音機使用它(以及aac編解碼器)。
這裏是我使用的代碼(主要是基於https://github.com/codenameone/CodenameOne/blob/master/Ports/iOSPort/src/com/codename1/impl/ios/IOSImplementation.java#L2768-L2794):如果我顯示在iOS可用MIME類型,它產生「音頻/ AMR」,我根據所有帖子懷疑
audioMemoPath = ParametresGeneraux.getWRITABLE_DIR() + "AudioMemo-"
+ System.currentTimeMillis() +
(Display.getInstance().getPlatformName().equals("and")
? ".amr"
: ".m4a");
audioMemoMimeType = MediaManager.getAvailableRecordingMimeTypes()[0];
audioMemoRecorder = MediaManager.createMediaRecorder(audioMemoPath, audioMemoMimeType);
// If the permission audio has not been granted
// the audiomemorecoreder will be null
if (audioMemoRecorder != null) {
audioMemoRecorder.play();
boolean b = Dialog.show("Recording", "", "Save", "Cancel");
audioMemoRecorder.pause();
audioMemoRecorder.cleanup();
...
}
而且我可以讀懂,告訴你在iOS上不支持amr。查看源看來AMR是由默認的MIME類型,因爲它總是返回:
/**
* Gets the available recording MimeTypes
*/
public String [] getAvailableRecordingMimeTypes(){
return new String[]{"audio/amr"};
}
所以我的問題:是否有可能記錄在iOS上的音頻,如果是,如何才能做到呢?
任何幫助表示讚賞,
謝謝詹姆斯。然而,我需要限制錄音時間,這就是爲什麼我訴諸'MediaRecorder'。但是我可以從Capture開始查看輸出結果。 – HelloWorld
我試過你的建議,但錄製的文件無法在移動設備上播放(詳情請參閱http://stackoverflow.com/questions/43193249/is-it-possible-to-record-audio-in-ios-with- codename-one) – HelloWorld
我的意思是那裏的細節! http://stackoverflow.com/questions/43226775/why-is-codename-one-on-ios-recording-audio-as-caf – HelloWorld