Objective-C iPhoneアプリでmp3などの音楽をWebのURLを指定して再生する

音楽データをWebから取得して再生するのをやりたくていろいろやり方を調べた結果をまとめておきます。

AVAudioPlayerを使うと、
サーバ上のURLを指定して音楽データをWeb上から取得して再生が出来ます。

AVAssetやAVMetadataItemを使い、
mp3のメタデータやアートワークも取得ができます。

[objc]
NSError *error;
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
AVAudioPlayer *_audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:&error];

if( error ){
NSLog(@"%@", error);
return;
}

AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *metadata = [asset commonMetadata];

for ( AVMetadataItem *item in metadata ) {
if( [[item commonKey] isEqualToString:@"title"] ){
_currentPlayingTitle = [item stringValue];
}
if( [[item commonKey] isEqualToString:@"artist"] ){
_currentPlayingArtist = [item stringValue];
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
UIImage *img = nil;
if ([item.keySpace isEqualToString:AVMetadataKeySpaceiTunes]) {
img = [UIImage imageWithData:[item.value copyWithZone:nil]];
}
else { // if ([item.keySpace isEqualToString:AVMetadataKeySpaceID3]) {
NSData *data = [(NSDictionary *)[item value] objectForKey:@"data"];
img = [UIImage imageWithData:data] ;
}
_currentPlayingArtwork = img;
}
}

[_audioPlayer prepareToPlay];
[/objc]

コメントを残す

メールアドレスが公開されることはありません。