| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- //
- // AFSoundItem.m
- // AFSoundManager-Demo
- //
- // Created by Alvaro Franco on 20/01/15.
- // Copyright (c) 2015 AlvaroFranco. All rights reserved.
- //
- #import "AFSoundItem.h"
- #import "AFSoundManager.h"
- @implementation AFSoundItem
- -(id)initWithLocalResource:(NSString *)name atPath:(NSString *)path {
-
- if (self == [super init]) {
-
- _type = AFSoundItemTypeLocal;
-
- NSString *itemPath;
-
- if (!path) {
-
- NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
- itemPath = [resourcePath stringByAppendingPathComponent:name];
- } else {
-
- itemPath = [path stringByAppendingPathComponent:name];
- }
-
- _URL = [NSURL fileURLWithPath:itemPath];
-
- [self fetchMetadata];
- }
-
- return self;
- }
- -(id)initWithStreamingURL:(NSURL *)URL {
-
- if (self == [super init]) {
-
- _type = AFSoundItemTypeStreaming;
-
- _URL = URL;
-
- [self fetchMetadata];
- }
-
- return self;
- }
- -(void)fetchMetadata {
-
- AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:_URL];
-
- NSArray *metadata = [playerItem.asset commonMetadata];
-
- for (AVMetadataItem *metadataItem in metadata) {
-
- [metadataItem loadValuesAsynchronouslyForKeys:@[AVMetadataKeySpaceCommon] completionHandler:^{
-
- if ([metadataItem.commonKey isEqualToString:@"title"]) {
-
- _title = (NSString *)metadataItem.value;
- } else if ([metadataItem.commonKey isEqualToString:@"albumName"]) {
-
- _album = (NSString *)metadataItem.value;
- } else if ([metadataItem.commonKey isEqualToString:@"artist"]) {
-
- _artist = (NSString *)metadataItem.value;
- } else if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
-
- if ([metadataItem.keySpace isEqualToString:AVMetadataKeySpaceID3]) {
-
- _artwork = [UIImage imageWithData:[[metadataItem.value copyWithZone:nil] objectForKey:@"data"]];
- } else if ([metadataItem.keySpace isEqualToString:AVMetadataKeySpaceiTunes]) {
-
- _artwork = [UIImage imageWithData:[metadataItem.value copyWithZone:nil]];
- }
- }
- }];
- }
- }
- -(void)setInfoFromItem:(AVPlayerItem *)item {
-
- _duration = CMTimeGetSeconds(item.duration);
- _timePlayed = CMTimeGetSeconds(item.currentTime);
- }
- @end
|