iOS (通常 .amr、.m4a/AAC) 與 Android (支援 .amr、.mp3、.aac、.opus) 之間傳遞語音,本質是檔案/位元流傳輸,無需即時「解析」對方格式,只需:
iOS App (AVAudioRecorder → AAC/Opus)
→ HTTPS 上傳至 Object Storage (S3/OSS)
→ 回傳 CDN URL
→ Android App (ExoPlayer / MediaPlayer) 播放
| 環節 | iOS | Android |
|---|---|---|
| 錄製編碼 | AVAudioRecorder + kAudioFormatMPEG4AAC 或 Opus | MediaRecorder (API 21+ 支援 Opus) |
| 播放引擎 | AVAudioPlayer / AVPlayer | ExoPlayer (支援 DASH/HLS/Opus/間隙less) |
| 串流協定 | HTTP Range Request / HLS | 同左,ExoPlayer 原生支援 |
.caf / Android 用 .3gp 專有容器 → 統一用 .m4a (AAC) 或 .opus
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
MediaItem item = MediaItem.fromUri("https://cdn.example.com/voice/msg123.opus");
player.setMediaItem(item);
player.prepare();
player.playWhenReady = true;
// 釋放: player.release();