2012-01-01 3 views
0

사용자가 iPod 라이브러리에서 노래를 선택하게하려고합니다. 노래 URL을 가져온 후 CocosDenshion 라이브러리를 사용하여 재생하려고하지만 소리가 들리지 않습니다.CocosDenshion을 사용하여 iPod 라이브러리 노래 재생

여기 MPMediaPickerControllerDelegate의 코드 샘플입니다 :

#pragma mark MPMediaPickerControllerDelegate 
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker 
    didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 
    [self dismissModalViewControllerAnimated:YES]; 
    if ([mediaItemCollection count] < 1) { 
     return; 
    } 
    [song release]; 
    song = [[[mediaItemCollection items] objectAtIndex:0] retain]; 


    NSURL *itemURL = [song valueForProperty:MPMediaItemPropertyAssetURL]; 
    fileURL = [itemURL absoluteString]; 

    [[SimpleAudioEngine sharedEngine] preloadEffect:fileURL]; 
} 

여기에 사운드를 재생 버튼의 핸들러입니다.

- (IBAction)playSong { 

    [[SimpleAudioEngine sharedEngine] playEffect:fileURL pitch:1.0f pan:0.0f gain:1.0f]; 
} 

누구나 잘못 알 수 있습니까? 선택한 노래의 음높이를 변경할 수 있어야합니다. 그래서 CocosDenshion 라이브러리를 사용하고 있습니다.

답변

1

디버거에서 [song valueForProperty:MPMediaItemPropertyAssetURL]이 반환 한 URL을 확인하십시오. 이는 표준 파일 시스템 URL이 아니고 자산 라이브러리를 가리키는 사용자 정의 URL이므로 CocosDenshion이 열 수는 없습니다.

노래를 재생하려면 AV Foundation (아마도 AVAudioPlayer)을 사용해야합니다. 또는 AV Foundation을 사용하여 먼저 노래를 "실제"파일로 변환 한 다음 Cocos Denshion으로 재생할 수 있지만 첫 번째 옵션보다 훨씬 복잡합니다.

MPMediaItemPropertyAssetURL에 대한 문서는 명확하게, 너무 그렇게 말한다는 AV 재단 프레임 워크의 외부 URL의

사용은 지원되지 않습니다.

+0

업데이트 : AVPlayer는 iPod 라이브러리 URL을 재생할 수 있습니다. AVAudioPlayer는 iPod 라이브러리 URL에서 재생할 수 없습니다. –