1

私のアプリは、サーバーから小さなオーディオ ファイルをダウンロードし、NSTemporaryDirectory(). 次に、ObjectAL(Karl Stenerud による OpenAL ラッパー ライブラリ) を使用して、オーディオを 3D 空間に配置します。このライブラリは、ExtAudioFileAPI を使用してオーディオ ファイルなどを開き、読み取りExtAudioFileOpenURL()ます[NSBundle mainBundle]。これは実際に本当ですか?.mp3、.aif、および .caf 形式のオーディオ ファイルを正常に開いたり再生したりできます-mainBundle

ExtAudioFileOpenURL()実際にそうである場合、(または他のiOSファイルディレクトリにある)オーディオファイルを使用して正常に開く方法はありNSTemporaryDirectory()ますか?以下に関連コードの概要を示します:

- (void)setSourceWithSourceURL:(NSString *)urlString type:(CueType)cueType volume:(ALfloat)vol isMono:(BOOL)mono isSFX:(BOOL)isSFX {

    ALSource *source = [self sourceForKey:cueType];
    ALBuffer *buffer = [self bufferForKey:cueType];
    if (!source) {
        source = [[ALSource source] retain];
    }
    if (!buffer) {
        NSArray *array = [urlString componentsSeparatedByString:@"/"];
        NSURL *furl = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:array.lastObject]];

        buffer = [[[OpenALManager sharedInstance] bufferFromUrl:furl reduceToMono:mono] retain];
    }
    // fails when setting buffer...
}

呼び出しを行う前のNSLog出力は次のとおりです。furl-bufferFromUrlfile:///private/var/mobile/Applications/08E20AF6-6333-4E24-9F12-20C6D6381C0B/tmp/4_right_turn_cue.aif

ファイルが実際に存在することを確認しました...

この-bufferFromUrl: reduceToMono:呼び出しは、基本的に内部-initメソッドを呼び出します。

- (id) initWithUrl:(NSURL*) urlIn reduceToMono:(bool) reduceToMonoIn {
    if(nil != (self = [super init])) {
        url = as_retain(urlIn);
        reduceToMono = reduceToMonoIn;

        OSStatus error = 0;
        UInt32 size;

        if(nil == url)
        {
            OAL_LOG_ERROR(@"Cannot open NULL file / url");
            goto done;
        }

        // Open the file
        if(noErr != (error = ExtAudioFileOpenURL((as_bridge CFURLRef)url, &fileHandle)))
        {
            REPORT_EXTAUDIO_CALL(error, @"Could not open url %@", url);
            goto done;
        }
        // ...more stuff but opening the URL fails

が呼び出されるExtAudioFileOpenURL()と、次のエラー メッセージが表示されます。

OAL Error: -[OALAudioFile initWithUrl:reduceToMono:]: Could not open url file:///private/var/mobile/Applications/08E20AF6-6333-4E24-9F12-20C6D6381C0B/tmp/4_right_turn_cue.aif (error code 0x7768743f: Unknown ext audio error)

これがファイル ディレクトリからのオーディオ ファイルの読み取りに失敗する理由についての洞察はありますか? アイデアや回避策はありますか?

4

0 に答える 0