iOS iPhone - 记录在Android上播放但没有服务器端转码的压缩音频文件

时间:2015-04-22 15:34:06

标签: android ios iphone audio avaudiorecorder

我已经阅读了很多关于这个问题的帖子,但没有人提出解决方案 问题。

我想在iOS上录制一个音频文件,可以由Android设备发送和播放,而不必在服务器上对文件进行转码。

我知道iOS只支持录制到某些类型,Android只能播放如下所示的某些类型:

Android supported media types

AVAudioRecorder supported formats

但是,根据这个,如果我输出一个带有以下设置的.m4a文件,它应该可以工作:

AudioChannelLayout channelLayout;
        memset(&channelLayout, 0, sizeof(AudioChannelLayout));
        channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;

         recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
         [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, 
         [NSNumber numberWithFloat:16000.0], AVSampleRateKey,
         [NSNumber numberWithInt:1], AVNumberOfChannelsKey,
         [NSNumber numberWithInt:32000], AVEncoderBitRateKey,
         [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
         nil];

但它不起作用。

现在我注意到的一件事是,如果我尝试打开我在网络(我的电脑)上录制的iphone文件,它会将其识别为快速文件 AVAudioRecorder将文件的outputfiletype设置为quicktime格式 而不是@“public.audio”或其他东西。

那么也许有一种方法可以简单地改变AVAudioRecorder创建的文件的文件类型?

无论哪种方式,有没有人成功地解决了这个问题,如果是这样的话?

1 个答案:

答案 0 :(得分:0)

在我的情况下,我有相同的音频编码,但我们用.3gp扩展名保存它,它可以在Android和iOS上重现。希望它有所帮助