簡體   English   中英

使用他的路徑獲取音頻文件的信息-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];

我想做的是使用自定義視圖顯示歌曲的信息(藝術家,專輯名稱和藝術品等),該視圖與contentOverlayView的AVPlayerViewController屬性一起顯示。 我在這里搜索了所有內容,但沒有發現對我的情況有用的東西(找到了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;
    }
}

然后您可以將資產設置為AVPlayerViewController的播放器,進行播放和演示。

感謝@LA的幫助,我成功地通過以下方式獲得了所有歌曲的信息:

[[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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM