2012-03-06 67 views
0

我想显示的目录及其持续时间内的音频文件的列表,以便让我使用时间:为什么回负值

AVAudioPlayer * sound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 

NSLog([NSString stringWithFormat:@"%f", sound.duration]); 

cell.detailTextLabel.text =[NSString stringWithFormat:@"Duration: %.2f sec", sound.duration]; 

但有时sound.duration返回负值。我想知道为什么,以及如何解决它。

问候

回答

0

希望这将帮助你.. 在你的代码,你在打印的NSLog没有分配和错误的格式,以便它在零下给。所以检查一次。

AVAudioPlayer * sound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:@"/Users/apple/Desktop/LabelTextDemo/LabelTextDemo/song2.caf"] error:nil]; 

NSLog(@"%@",[NSString stringWithFormat:@"%.2f", sound.duration]); 
+0

在此行cell.detailTextLabel.text =问题[的NSString stringWithFormat:@ “持续时间:%.2f秒”,sound.duration]; – AMH 2012-03-06 09:56:12

+0

lblLabel2.text = [NSString stringWithFormat:@“%。2f”,sound.duration];我喜欢这样做,它的工作 – Kartik 2012-03-06 10:03:28

+0

仍然是相同的错误 – AMH 2012-03-06 10:28:10

2
AudioFileID      audioFile; 
CFDictionaryRef piDict = nil; 
UInt32 piDataSize = sizeof(piDict); 

if (noErr != AudioFileOpenURL((CFURLRef)[NSURL fileURLWithPath:filePath], 0x01, kAudioFileCAFType, &audioFile)) 
{ 
    return [NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithString:filePath], @"FilePath", @"Unknown",@"Title",@"Unknown",@"Album",@"Unknown",@"Artist",@"0", @"Duration", nil]; 
} 
if(noErr != AudioFileGetProperty(audioFile, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict)) 
{ 
    AudioFileClose(audioFile); 
    return [NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithString:filePath], @"FilePath", @"Unknown",@"Title",@"Unknown",@"Album",@"Unknown",@"Artist",@"0", @"Duration", nil]; 
} 

AudioFileClose(audioFile); 

if(piDict) 
{ 
    NSString * duration = @"0"; 
    CFStringRef  durationString = nil; 
    if (piDict && CFDictionaryGetValueIfPresent(piDict, CFSTR(kAFInfoDictionary_ApproximateDurationInSeconds), (const void **) &durationString)) 
    { 
     duration = (NSString*)durationString; 
     duration = [duration stringByReplacingOccurrencesOfString:@"," withString:@""]; 
    } 
    if (duration) 
     [songInfomationDictionary setObject:duration forKey:@"Duration"]; 


    CFRelease(piDict); 
    //get duration as string 
} 
return nil; 
+2

它很高兴添加一些解释以及代码墙 – jrturton 2012-03-07 09:35:43

相关问题