【问题标题】:playing a .caf file: works fine in simulator but not in iPhone播放 .caf 文件:在模拟器中可以正常工作,但在 iPhone 中不行
【发布时间】:2009-09-01 18:40:35
【问题描述】:

我正在制作一个录音机。重新编码和播放在模拟器上工作正常。但是在iphone上就不行了。 (我按照iPhoneOSProgrammingGuide/AudioandVideoTechnologies中提到的确切步骤进行操作)

    printf("%s(player)\n",[[self.soundFileURL absoluteString] UTF8String]);

    AVAudioPlayer *newPlayer =
    [[AVAudioPlayer alloc] initWithContentsOfURL: self.soundFileURL error: nil];

    if([self.soundFileURL isFileURL]){
        printf("isFileURL\n");
    }

    self.player = newPlayer;
    [newPlayer release];

    [player prepareToPlay];
    [player setDelegate: self];
    //recorderLabel.text=@"Playing..";
    [player play];
    printf("playing..\n");

调试器输出是 文件://localhost/var/mobile/Applications/9A607A45-974B-4E9F-9839-FD21B3BC9DD8/Documents/1251828741.caf(播放器) isFileURL 玩..

【问题讨论】:

    标签: iphone avaudioplayer caf


    【解决方案1】:

    设备上的 iPhone OS 没有与模拟器中的 iPhone OS 相同的可用音频编解码器。在我的项目中,我在播放.caf 以一种方式编码的文件时遇到了问题,而不是另一种编码方式……在这里进行一些试验和错误会有所帮助(我最终使用了 16BLE PCM)。

    我会尝试更改录制的音频文件的编码,以尝试找到设备支持的音频编解码器。

    【讨论】:

    • 嗯?如果您运行 afconvert -hf,“16BLE”甚至不会被列为一种格式。这是别的名字吗?
    【解决方案2】:

    确保 iPhone 上的声音没有关闭。

    将以下内容添加到您的委托(自己):

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)playedPlayer successfully:(BOOL)flag {
        NSLog(@"Done playing %@", flag ? @"with success" : @"with failure" );
    }
    
    - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {
        NSLog(@"Error while decoding: %@", [error localizedDescription] );
    }
    

    这可能会给你一些线索。

    【讨论】:

      【解决方案3】:

      iPhone 的 .caf 文件需要编码为单声道而不是立体声声道,然后才可以在 iPhone 上使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 2012-02-28
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多