使用他的路径获取音频文件的信息 - Objective-c iOS
Get info of audio file with his path - Objective-c iOS
实际上,我正在用这段简单的代码播放歌曲:
NSURL *url=[NSURL fileURLWithPath:clickedPath];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
[self presentViewController:controller animated:YES completion:nil];
controller.player = player;
[player play];
我想做的是使用 AVPlayerViewController 的 contentOverlayView 属性 显示的自定义视图来显示歌曲的信息(艺术家、专辑名称和插图等)。
我在这里到处搜索,但没有发现任何对我的情况有用的东西(找到 MPMediaPlayer 解决方案或不工作的解决方案)。
你能帮帮我吗?我愿意测试您的建议并进行讨论!
提前致谢
NSString *path = [[NSBundle mainBundle] pathForResource:@"youraudiomp3filename" ofType:@"mp3"];
NSURL *url=[NSURL fileURLWithPath:path];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *metadata = [asset commonMetadata];
NSString *title;
NSString *artist;
NSString *albumName;
UIImageView *imageView;
for (AVMetadataItem *item in metadata) {
if ([[item commonKey] isEqualToString:@"title"]) {
title = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"artist"]) {
artist = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"albumName"]) {
albumName = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
NSData *data = [(NSDictionary *)[item value] objectForKey:@"data"];
UIImage *img = [UIImage imageWithData:data] ;
imageView.image = img;
continue;
}
}
然后你就可以将asset设置为你的AVPlayerViewController的播放器,播放并呈现。
感谢@L A 的帮助,我已经成功获取了所有歌曲的信息:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
NSURL *url=[NSURL fileURLWithPath:clickedPath];
NSLog(@"url : %@", url);
avPlayer = [AVPlayer playerWithURL:url];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *metadata = [asset commonMetadata];
NSString *songTitle;
NSString *artist;
NSString *albumName;
UIImageView *albumImageView = [[UIImageView alloc] init];
for (AVMetadataItem *item in metadata) {
if ([[item commonKey] isEqualToString:@"title"]) {
songTitle = (NSString *)[item value];
NSLog(@"song title : %@", songTitle);
}
if ([[item commonKey] isEqualToString:@"albumName"]) {
albumName = (NSString *)[item value];
NSLog(@"album name : %@", albumName);
}
if ([[item commonKey] isEqualToString:@"artist"]) {
artist = (NSString *)[item value];
NSLog(@"song artist : %@", artist);
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
NSData *data = [item dataValue];
UIImage *img = [UIImage imageWithData:data] ;
albumImageView.image = img;
[albumImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
continue;
}
}
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
[self presentViewController:controller animated:YES completion:nil];
[controller.contentOverlayView addSubview:albumImageView];
controller.player = avPlayer;
[avPlayer play];
实际上,我正在用这段简单的代码播放歌曲:
NSURL *url=[NSURL fileURLWithPath:clickedPath];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
[self presentViewController:controller animated:YES completion:nil];
controller.player = player;
[player play];
我想做的是使用 AVPlayerViewController 的 contentOverlayView 属性 显示的自定义视图来显示歌曲的信息(艺术家、专辑名称和插图等)。 我在这里到处搜索,但没有发现任何对我的情况有用的东西(找到 MPMediaPlayer 解决方案或不工作的解决方案)。
你能帮帮我吗?我愿意测试您的建议并进行讨论!
提前致谢
NSString *path = [[NSBundle mainBundle] pathForResource:@"youraudiomp3filename" ofType:@"mp3"];
NSURL *url=[NSURL fileURLWithPath:path];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *metadata = [asset commonMetadata];
NSString *title;
NSString *artist;
NSString *albumName;
UIImageView *imageView;
for (AVMetadataItem *item in metadata) {
if ([[item commonKey] isEqualToString:@"title"]) {
title = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"artist"]) {
artist = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"albumName"]) {
albumName = (NSString *)[item value];
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
NSData *data = [(NSDictionary *)[item value] objectForKey:@"data"];
UIImage *img = [UIImage imageWithData:data] ;
imageView.image = img;
continue;
}
}
然后你就可以将asset设置为你的AVPlayerViewController的播放器,播放并呈现。
感谢@L A 的帮助,我已经成功获取了所有歌曲的信息:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
NSURL *url=[NSURL fileURLWithPath:clickedPath];
NSLog(@"url : %@", url);
avPlayer = [AVPlayer playerWithURL:url];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *metadata = [asset commonMetadata];
NSString *songTitle;
NSString *artist;
NSString *albumName;
UIImageView *albumImageView = [[UIImageView alloc] init];
for (AVMetadataItem *item in metadata) {
if ([[item commonKey] isEqualToString:@"title"]) {
songTitle = (NSString *)[item value];
NSLog(@"song title : %@", songTitle);
}
if ([[item commonKey] isEqualToString:@"albumName"]) {
albumName = (NSString *)[item value];
NSLog(@"album name : %@", albumName);
}
if ([[item commonKey] isEqualToString:@"artist"]) {
artist = (NSString *)[item value];
NSLog(@"song artist : %@", artist);
}
if ([[item commonKey] isEqualToString:@"artwork"]) {
NSData *data = [item dataValue];
UIImage *img = [UIImage imageWithData:data] ;
albumImageView.image = img;
[albumImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
continue;
}
}
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
[self presentViewController:controller animated:YES completion:nil];
[controller.contentOverlayView addSubview:albumImageView];
controller.player = avPlayer;
[avPlayer play];