Доступ к пути к библиотеке iPod - PullRequest
1 голос
/ 30 марта 2012

Я много учился, но не нашел хорошего ответа. Моя проблема в том, что я рассчитываю количество ударов в минуту песни. Я использовал Bass api для этого, теперь проблема в том, что я могу получить bpm файла, который у меня есть в папке ресурсов, но мне нужно получить bpm всех песен библиотеки iPod. Я получаю путь к песне из свойства MPMediaItemPropertyAssetURL MpMediaItem, но при передаче этого файла в API, он говорит, что поток не может загрузить BASS_StreamCreateFile(). С моей точки зрения, я не понимаю правильный путь песни. Как мы можем получить доступ к правильному пути? Кто-нибудь получал доступ к песне из библиотеки iPod с помощью внешнего API? Пожалуйста, помогите мне.

Спасибо.

КОД ЭТО:

NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
NSString *respath = [NSString stringWithFormat:@"%@",[assetURL absoluteString]];

BASS_SetConfig(BASS_CONFIG_IOS_MIXAUDIO, 0); // Disable mixing. To be called before BASS_Init.

if (HIWORD(BASS_GetVersion()) != BASSVERSION) {
    NSLog(@"An incorrect version of BASS was loaded");
}

// Initialize default device.
if (!BASS_Init(-1, 44100, 0, NULL, NULL)) {
    //textView.text = [NSString stringWithFormat:@"%@  CAN'T Load Stream",textView.text];   

}


DWORD chan1;
if(!(chan1=BASS_StreamCreateFile(FALSE, [respath UTF8String], 0, 0, BASS_SAMPLE_LOOP))) {
    NSLog(@"Can't load stream!");
    textView.text = [NSString stringWithFormat:@"%@  not loading...",textView.text];    

}

mainStream=BASS_StreamCreateFile(FALSE, [respath cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, BASS_SAMPLE_FLOAT|BASS_STREAM_PRESCAN|BASS_STREAM_DECODE);

float playBackDuration=BASS_ChannelBytes2Seconds(mainStream, BASS_ChannelGetLength(mainStream, BASS_POS_BYTE));
NSLog(@"Play back duration is %f",playBackDuration);
HSTREAM bpmStream=BASS_StreamCreateFile(FALSE, [respath UTF8String], 0, 0, BASS_STREAM_PRESCAN|BASS_SAMPLE_FLOAT|BASS_STREAM_DECODE);
//BASS_ChannelPlay(bpmStream,FALSE);
BpmValue= BASS_FX_BPM_DecodeGet(bpmStream,0.0,
                                playBackDuration,
                                MAKELONG(45,256),
                                BASS_FX_BPM_MULT2| BASS_FX_BPM_MULT2 | BASS_FX_FREESOURCE,
                                (BPMPROCESSPROC*)proc);

textView.text = [NSString stringWithFormat:@"%@  %f",textView.text,BpmValue];   
...