gpt4 book ai didi

iphone - AVAudioRecorder 不适用于 iPhone 5S

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:00 27 4
gpt4 key购买 nike

所以我使用 AVAudioRecorder 与正在录制视频的 AVCaptureSession 一起录制音频(我知道这很奇怪,但对于我的情况,我需要单独录制它们)。

除我的 iPhone 5S 外,所有设备都运行良好。它记录没有错误,但保存到磁盘的文件已损坏或其他原因。当我访问我的 mac 上的文件系统并尝试使用 VLC 或 Quicktime 播放 m4a 文件时,我收到“无法检测到文件格式”错误。以下是我如何初始化我的 AVAudioRecorder 并录制我的音频:

// Prepare the audio session
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoRecording error:nil];

// Setup audio recording
NSDictionary *recordSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey: @(AVAudioQualityLow),
AVEncoderBitRateKey: @16,
AVNumberOfChannelsKey: @1,
AVSampleRateKey: @22050.0f};

NSError *audioRecorderError;

NSURL *audioFileURL = [[self.outputFileURL URLByDeletingPathExtension] URLByAppendingPathExtension:@"m4a"];

self.audioRecorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL
settings:recordSettings
error:&audioRecorderError];

self.audioRecorder.delegate = self;

if (audioRecorderError) {
CCLog(@"Error while initializing the audio recorder... Skipping sound recording!");
}
else {
if (![self.audioRecorder prepareToRecord]) {
CCLog(@"Error preparing to record");
}
if (![self.audioRecorder record]) {
CCLog(@"Error recording");
}
}

同样,这适用于除 5S 之外的所有设备。有人知道是什么原因造成的吗?

最佳答案

进行了更多挖掘,我显然找到了解决方案。我只是摆脱了 AVEncoderBitRateKey,一切正常。所以现在我的 recordSettings 字典看起来像这样:

// Setup audio recording
NSDictionary *recordSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey: @(AVAudioQualityLow),
AVNumberOfChannelsKey: @1,
AVSampleRateKey: @22050.0f};

仍然不确定为什么只有 iPhone 5S 才会出现这种情况。同样,我已经在运行 iOS6 和 iOS7 的所有其他设备上进行了测试,旧的设置字典在除 5S 之外的所有设备上都能正常工作。现在我已经删除了 AVEncoderBitRateKey 和值,它也适用于 5S。

关于iphone - AVAudioRecorder 不适用于 iPhone 5S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com