ios - AVAudioFoundation升级至iOS 5.0

标签 ios avaudiorecorder

我正在使用 AVAudioFoundation。在 iOS 5.0 模拟器和 iOS 5.1 设备上遇到一些问题。该应用程序在 iOS 4.1 的设备和模拟器上运行良好。

  1. 启动时出现加载错误。他们继续说下去,就像这样:

    加载/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn时出错:dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn,262):找不到符号:_CFXMLNodeGetInfoPtr 引用自:/System/Library/Frameworks/Security.framework/Versions/A/Security 预计位于:/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 在/System/Library/Frameworks/Security.framework/Versions/A/Security

    我认为这与我在 Snow Leopard 上运行 Xcode 4.2 并且只下载了 iOS 5.0 sdk 而没有购买 Lion 并将 Xcode 升级到 4.3 有关。但话又说回来,问题也出现在设备上,所以这似乎不是 Xcode 的问题。

    this question他们说这只是“噪音”。但这仍然是问题吗?

  2. 然后,当调用 AVURLAsset loadValuesAsynchronouslyForKeys:completionHandler: 时,AVKeyValueStatus0,而不是预期的 AVKeyValueStatusLoaded.

这是我使用的代码:

NSArray *keys = [NSArray arrayWithObject:[NSArray arrayWithObjects:@"duration", @"tracks", nil]];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:tempRecFileURL options:nil];

[asset loadValuesAsynchronouslyForKeys:keys completionHandler: ^{

    NSError *error = nil;
    AVKeyValueStatus tracksStatus = [asset statusOfValueForKey:@"tracks" error:&error];
    switch (tracksStatus) {
        case AVKeyValueStatusLoaded:
            // this is where I normally end up doing stuff but not on iOS 5.0
            break;
        case AVKeyValueStatusFailed:
        case AVKeyValueStatusCancelled:
            // doing other stuff here
            break;
    }
}];

这是我得到的输出(仅限 iOS 5.0):

[AVAsset loadValuesAsynchronouslyForKeys:completionHandler:] invoked with unrecognized keys (
        (
        duration,
        tracks
    )
).

错误nil

我在这里没有得到什么?感觉我需要在某个地方做一些引用,但我不知道在哪里。

最佳答案

这里的根本问题是线路

NSArray *keys = [NSArray arrayWithObject:[NSArray arrayWithObjects:@"duration", @"tracks", nil]];

应该是

NSArray *keys = [NSArray arrayWithObjects:@"duration", @"tracks", nil];

关于ios - AVAudioFoundation升级至iOS 5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301988/

相关文章:

xcode - 在录制音频剪辑时设置时间限制?

swift - 电话中断后继续录制音频,AVAudioRecorder

ios - 将 AudioKit 从版本 2 迁移到版本 4

iOS 应用程序在手机上崩溃,但在模拟器上运行正常

ios - 在没有用户交互的情况下以编程方式拍照

ios - 多个 UITableViewCell 类型以编程方式

ios - trackWithMediaType 有时返回 0 首轨道

ios - 我们可以在 swift playgrounds 中使用 AVAudiorecorder 吗?

iphone - 在 UITableviewController 中调用 viewWillAppear

ios - Swift AVAudioPlayer 不会播放用 AVAudioRecorder 录制的音频