Ich bin neu bei iOS, ich habe eine App, die Online-Audio-Player enthalten. Ich muss die Gesamtdauer für das Audio erhalten. Ich habe viel versucht, aber alle Codes gibt NaN oder Dauer. Was ist der beste Weg, um die Gesamtdauer des Audios zu erhalten?iOS bekommen Audiodauer von Avplayer
MEIN CODE
NSString *songUrl = @"http://9xmusiq.com/songs2/tamil/Kaatru%20Veliyidai/Azhagiye%20%5bStarmusiq.cc%5d.mp3"
AVURLAsset *asset = [AVURLAsset assetWithURL:[NSURL URLWithString:songUrl]];
AVPlayerItem *playerItem1 = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player1 = [AVPlayer playerWithPlayerItem:playerItem1];
AVPlayerLayer *playerLayer1 = [AVPlayerLayer playerLayerWithPlayer:player1];
playerLayer1.videoGravity = AVLayerVideoGravityResizeAspectFill;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
playerLayer1.frame = self.view.frame;
});
[self.view.layer insertSublayer:playerLayer1 atIndex:1];
[player1 play];
[playerItem1 addObserver:self forKeyPath:@"status" options:0 context:nil];
[playerItem1 addObserver:self forKeyPath:@"playbackBufferEmpty" options:0 context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([object isKindOfClass:[AVPlayerItem class]]){
AVPlayerItem *item = (AVPlayerItem *)object;
if ([keyPath isEqualToString:@"status"]){
switch(item.status){
case AVPlayerItemStatusFailed:
NSLog(@"player item status failed");
break;
case AVPlayerItemStatusReadyToPlay:
NSLog(@"player item status is ready to play");
Float64 duration = CMTimeGetSeconds(self.avPlayer.currentItem.duration);
NSLog(@"Duration--> %f",duration) // NaN returns
break;
case AVPlayerItemStatusUnknown:
NSLog(@"player item status is unknown");
break;
}
}else if ([keyPath isEqualToString:@"playbackBufferEmpty"]){
if (item.playbackBufferEmpty){
NSLog(@"player item playback buffer is empty");
}
}
}
}
funktioniert es für Sie? weil diese Codes für mich nicht funktionieren. Ich bekomme immer noch die Dauer 0 und spielt das Lied nicht. Hast du einen anderen alternativen Weg? – Moxarth